02-22-2005 10:53 AM
yn( 2, 0.98726577450859631657 )
I get the following:
PA-32 => -1.68339139976380280000
IA-64 => -1.68339139819686622879
which differ starting at the 9th decimal. So is the IA-64 call only running float precision and not double precision?
02-23-2005 06:48 AM
seems to indicate that those digits
are beyond PA's precision. IA-64
supports the Intel 80-bit floating type;
perhaps libm uses it internally. For
comparison, running your program on
IA-32 (Win2k/Cygwin/gcc) gives
-1.68339139976380280928, which has the same
# of digits as your IA-64 result but which
is closer in value to your PA result.
Also, perhaps PHSS_32066 (Math Library
Cumulative Patch) will help.
02-23-2005 07:08 AM
02-23-2005 07:47 AM
02-23-2005 10:02 AM
02-23-2005 08:27 PM
double d = 1.2345678910111213141516;
float f = 1.2345678910111213141516;
When I run compile (using gcc) and run (PA-RISC 11.11) this, I get
Which indicates I'm getting around 16 digits of precision for double and around 8 for float.
02-24-2005 03:14 AM
BTW, I also get similar problems with the y1 function.
02-24-2005 08:53 AM
IA-64 shows that they both get the same
internal bit patterns for 0.987265... (so
it's not a compiler parsing or type
conversion problem), and the value
generated by yn() is indeed a different
bit pattern (so it's not a printf()
12-28-2011 04:10 AM
>which differ starting at the 9th decimal. So is the IA-64 call only running float precision and not double precision?
If it was float, it would differ in the 7th decimal place.
It looks like you found a known problem:
PHSS_33276: s700_800 11.23 Math Library Cumulative Patch
JAGaf55860: Bessel functions have precision problems
The corrected values:
-1.68339139976380275131 long double
>IA-64 supports the Intel 80-bit floating type; perhaps libm uses it internally.
Naturally, the Integrity Math Lib was rewritten to be faster and more accurate.
>perhaps PHSS_32066 (Math Library Cumulative Patch) will help.
Unfortunately not until PHSS_33276.
Most math function are accurate to .5 ULP. But Bessel and a few other functions don't meet this: