Re: [BUGS] BUG #2846: inconsistent and confusing handling of - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: [BUGS] BUG #2846: inconsistent and confusing handling of
Date
Msg-id 200612272204.kBRM4Yw13461@momjian.us
Whole thread Raw
In response to Re: [BUGS] BUG #2846: inconsistent and confusing handling of underflows,  (Roman Kononov <kononov195-pgsql@yahoo.com>)
Responses Re: [BUGS] BUG #2846: inconsistent and confusing handling of underflows,
List pgsql-patches
Roman Kononov wrote:
> On 12/27/2006 03:23 PM, Bruce Momjian wrote:
> > Are you sure?  As I remember, computation automatically upgrades to
> > 'double'.  See this program and output:
>
> This is platform- and compiler- dependent:
>
> ~>uname -a
> Linux rklinux 2.6.15-27-amd64-generic #1 SMP PREEMPT Fri Dec 8 17:50:54 UTC 2006 x86_64 GNU/Linux
> ~>gcc --version
> gcc (GCC) 4.3.0 20061213 (experimental)
> Copyright (C) 2006 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.  There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>
> ~>cat test.c
> #include <stdio.h>
> #include <stdlib.h>
>
> int
> main(int argc, char *argv[])
> {
>     float a = 1e30, b = 1e30;
>     double c;
>
>     c = a * b;
>
>     printf("%e\n", c);
>     return 0;
> }
> ~>gcc test.c
> ~>./a.out
> inf
> ~>gcc -march=i386 -m32 test.c
> ~>./a.out
> 1.000000e+60

Interesting.  I didn't know that, but in the float4pl() function,
because the overflow tests and result is float4, what value is there to
doing things as double --- as soon as the float4 maximum is exceeded, we
throw an error?

--
  Bruce Momjian   bruce@momjian.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

pgsql-patches by date:

Previous
From: "Simon Riggs"
Date:
Subject: Re: WIP patch for "operator families"
Next
From: Tom Lane
Date:
Subject: Re: [BUGS] BUG #2846: inconsistent and confusing handling of