Lists: | pgsql-hackers |
---|
From: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> |
---|---|
To: | PostgreSQL-development <pgsql-hackers(at)postgreSQL(dot)org> |
Subject: | Regression failure for floats |
Date: | 2004-03-14 04:33:56 |
Message-ID: | 200403140433.i2E4Xuu16844@candle.pha.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-hackers |
I am seeing the following regression failure for current CVS. On my OS,
BSD/OS 4.3, it seems once you hit Infinity, you can't negate it.
/usr/include/math.h has:
/* Generate an overflow to create +Inf; the multiply shuts up gcc 1 */
#define HUGE_VAL (1e250*1e250) /* IEEE: positive infinity */
and our float4in code has:
else if (strcasecmp(num, "-Infinity") == 0)
val = -HUGE_VAL;
Seems that doesn't work for me.
---------------------------------------------------------------------------
*** ./expected/float4.out Sat Mar 13 23:07:10 2004
--- ./results/float4.out Sat Mar 13 23:10:30 2004
***************
*** 58,65 ****
SELECT ' -INFINiTY '::float4;
float4
! -----------
! -Infinity
(1 row)
-- bad special inputs
--- 58,65 ----
SELECT ' -INFINiTY '::float4;
float4
! ----------
! Infinity
(1 row)
-- bad special inputs
======================================================================
*** ./expected/float8.out Sat Mar 13 23:07:10 2004
--- ./results/float8.out Sat Mar 13 23:10:30 2004
***************
*** 58,65 ****
SELECT ' -INFINiTY '::float8;
float8
! -----------
! -Infinity
(1 row)
-- bad special inputs
--- 58,65 ----
SELECT ' -INFINiTY '::float8;
float8
! ----------
! Infinity
(1 row)
-- bad special inputs
--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
From: | Neil Conway <neilc(at)samurai(dot)com> |
---|---|
To: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgreSQL(dot)org> |
Subject: | Re: Regression failure for floats |
Date: | 2004-03-14 04:51:50 |
Message-ID: | 87hdwsf2u1.fsf@mailbox.samurai.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | Postg스포츠 토토 베트맨SQL |
Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> writes:
> I am seeing the following regression failure for current CVS. On my
> OS, BSD/OS 4.3, it seems once you hit Infinity, you can't negate it.
Actually, I suspect the problem is that isinf() on your platform
returns 1 for any infinity (rather than -1 for negative infinity and 1
for positive infinity). Some existing code in float4out() and
float8out() assumed that a positive return from isinf() indicated a
positive infinity, which is not per C99.
Anyway, Tom and I worked through this issue, and a couple other
portability problems with the recent float changes, via private
email. The current patch is attached -- Tom hasn't yet gotten back to
me on whether this fixes the problem for him on HPUX, but it fixes my
OS X box.
-Neil
Attachment | Content-Type | Size |
---|---|---|
float_input_strtod_portability-4.patch | text/x-patch | 12.0 KB |
From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Regression failure for floats |
Date: | 2004-03-14 05:21:12 |
Message-ID: | 18440.1079241672@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-hackers |
Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> writes:
> I am seeing the following regression failure for current CVS. On my OS,
> BSD/OS 4.3, it seems once you hit Infinity, you can't negate it.
> /usr/include/math.h has:
> /* Generate an overflow to create +Inf; the multiply shuts up gcc 1 */
> #define HUGE_VAL (1e250*1e250) /* IEEE: positive infinity */
> and our float4in code has:
> else if (strcasecmp(num, "-Infinity") == 0)
> val = -HUGE_VAL;
> Seems that doesn't work for me.
No, the bug is that Neil assumed isinf() would tell him the sign of an
infinity. I believe he's about to commit a patch for this and some
other bogosities.
regards, tom lane
From: | Neil Conway <neilc(at)samurai(dot)com> |
---|---|
To: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgreSQL(dot)org> |
Subject: | Re: Regression failure for floats |
Date: | 2004-03-14 05:23:41 |
Message-ID: | 877jxof1cy.fsf@mailbox.samurai.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-hackers |
Neil Conway <neilc(at)samurai(dot)com> writes:
> The current patch is attached -- Tom hasn't yet gotten back to me on
> whether this fixes the problem for him on HPUX, but it fixes my OS X
> box.
Patch applied to CVS.
-Neil