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 [EMAIL PROTECTED] EnterpriseDB http://www.enterprisedb.com + If your life is a hard drive, Christ can be your backup. + ---------------------------(end of broadcast)--------------------------- TIP 7: You can help support the PostgreSQL project by donating at http://www.postgresql.org/about/donate