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
    "This rendition of the script should work as intended for both nvtypes: ..."

    Here's the output from that code:

    validate Stage Starting Build Preprocess Stage get_maps Stage Finished Build Preprocess Stage Starting Build Parse Stage Finished Build Parse Stage Starting Build Glue 1 Stage Finished Build Glue 1 Stage Starting Build Glue 2 Stage Finished Build Glue 2 Stage Starting Build Glue 3 Stage Finished Build Glue 3 Stage Starting Build Compile Stage Starting "perl Makefile.PL" Stage Writing Makefile for pm_example_pl_cb2d Writing MYMETA.yml and MYMETA.json Finished "perl Makefile.PL" Stage Starting "make" Stage /Users/ken/perl5/perlbrew/perls/perl-5.18.1t/bin/perl /Users/ken/perl5 +/perlbrew/perls/perl-5.18.1t/lib/5.18.1/ExtUtils/xsubpp -typemap "/U +sers/ken/perl5/perlbrew/perls/perl-5.18.1t/lib/5.18.1/ExtUtils/typema +p" pm_example_pl_cb2d.xs > pm_example_pl_cb2d.xsc && mv pm_example_ +pl_cb2d.xsc pm_example_pl_cb2d.c cc -c -I"/Users/ken/tmp" -fno-common -DPERL_DARWIN -fno-strict-aliasi +ng -pipe -fstack-protector -I/usr/local/include -I/opt/local/include +-O3 -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\" "-I/Users/ken/perl5/p +erlbrew/perls/perl-5.18.1t/lib/5.18.1/darwin-thread-multi-2level/CORE +" pm_example_pl_cb2d.c Running Mkbootstrap for pm_example_pl_cb2d () chmod 644 pm_example_pl_cb2d.bs rm -f blib/arch/auto/pm_example_pl_cb2d/pm_example_pl_cb2d.bundle env MACOSX_DEPLOYMENT_TARGET=10.3 cc -bundle -undefined dynamic_looku +p -L/usr/local/lib -L/opt/local/lib -fstack-protector pm_example_pl_c +b2d.o -o blib/arch/auto/pm_example_pl_cb2d/pm_example_pl_cb2d.bundle + \ \ chmod 755 blib/arch/auto/pm_example_pl_cb2d/pm_example_pl_cb2d.bundle cp pm_example_pl_cb2d.bs blib/arch/auto/pm_example_pl_cb2d/pm_example_ +pl_cb2d.bs chmod 644 blib/arch/auto/pm_example_pl_cb2d/pm_example_pl_cb2d.bs Finished "make" Stage Starting "make install" Stage Files found in blib/arch: installing files in blib/lib into architectu +re dependent library tree Installing /Users/ken/tmp/_Inline/lib/auto/pm_example_pl_cb2d/pm_examp +le_pl_cb2d.bs Installing /Users/ken/tmp/_Inline/lib/auto/pm_example_pl_cb2d/pm_examp +le_pl_cb2d.bundle Finished "make install" Stage Starting Cleaning Up Stage Finished Cleaning Up Stage Finished Build Compile Stage $Config{nvtype}: double Different values 10000101111100000100011010000010100100111111000011011 10000101111100000100011010000010100100111111000011101

    -- Ken