Andrew Gierth <and...@tao11.riddles.org.uk> writes: > The reason it behaves oddly is this: on i387 FPU (and NOT on arm32 or on > 32-bit i386 with a modern architecture specified to the compiler), the > result of 1e200 * 1e180 is not in fact infinite, because it fits in an > 80-bit long double. So __builtin_isinf reports that it is finite; but if > it gets stored to memory as a double (e.g. to pass as a parameter to a > function), it then becomes infinite.
Ah-hah. Can we fix it by explicitly casting the argument of isinf to double? regards, tom lane