in reply to Re: When 1e-298L != 1e-298L
in thread When 1e-298L != 1e-298L

Interesting that there's also a discrepancy with 1e-298 on perl's (such as yours) whose nvtype is 'double'.
When I check on my 'double' build of perl 5.18.0, I also find a discrepancy.
The script I originally posted is not properly portable to 'double' builds of perl. This rendition of the script should work as intended for both nvtypes:
#!perl -l use warnings; use strict; use Config; use Inline C => Config => USING => 'ParseRegExp', BUILD_NOISY => 1; use Inline C => <<'EOC'; SV * get_problem_val(long nvsize) { if(nvsize == 8) return newSVnv(1e-298); return newSVnv(1e-298L); } EOC my $s = $Config{nvsize}; print "\n\$Config{nvtype}: $Config{nvtype}"; print "Different values" if 1e-298 != get_problem_val($s); if($Config{nvsize} != 8) { print scalar reverse unpack "b64", pack "D", 1e-298; print scalar reverse unpack "b64", pack "D", get_problem_val($s); } else { print scalar reverse unpack "b53", pack "F", 1e-298; print scalar reverse unpack "b53", pack "F", get_problem_val($s); }
Thanks, Ken.

Cheers,
Rob

Replies are listed 'Best First'.
Re^3: When 1e-298L != 1e-298L
by kcott (Archbishop) on Oct 25, 2013 at 02:47 UTC