develooper Front page | perl.perl5.porters | Postings from July 2012

[5.16.0] float operations

Thread Next
From:
matthew
Date:
July 3, 2012 15:50
Subject:
[5.16.0] float operations
Message ID:
1F379283-62FC-4DA2-91D3-07FCEBDCA6C6@jenika.com
I'm wondering if reasons exist for the differances between how perl computes floats vs how c code will.

Consider the attached c code (infnan.c) which produces this output on my system:

  +  -nan -inf   -1   -0    0    1  inf  nan 
-nan -nan -nan -nan -nan -nan -nan -nan  nan 
-inf -nan -inf -inf -inf -inf -inf -nan  nan 
  -1 -nan -inf   -2   -1   -1    0  inf  nan 
  -0 -nan -inf   -1   -0    0    1  inf  nan 
   0 -nan -inf   -1    0    0    1  inf  nan 
   1 -nan -inf    0    1    1    2  inf  nan 
 inf -nan -nan  inf  inf  inf  inf  inf  nan 
 nan -nan  nan  nan  nan  nan  nan  nan  nan 

  -  -nan -inf   -1   -0    0    1  inf  nan 
-nan -nan -nan -nan -nan -nan -nan -nan -nan 
-inf -nan -nan -inf -inf -inf -inf -inf  nan 
  -1 -nan  inf    0   -1   -1   -2 -inf  nan 
  -0 -nan  inf    1    0   -0   -1 -inf  nan 
   0 -nan  inf    1    0    0   -1 -inf  nan 
   1 -nan  inf    2    1    1    0 -inf  nan 
 inf -nan  inf  inf  inf  inf  inf -nan  nan 
 nan  nan  nan  nan  nan  nan  nan  nan  nan 

  *  -nan -inf   -1   -0    0    1  inf  nan 
-nan -nan -nan -nan -nan -nan -nan -nan  nan 
-inf -nan  inf  inf -nan -nan -inf -inf  nan 
  -1 -nan  inf    1    0   -0   -1 -inf  nan 
  -0 -nan -nan    0    0   -0   -0 -nan  nan 
   0 -nan -nan   -0   -0    0    0 -nan  nan 
   1 -nan -inf   -1   -0    0    1  inf  nan 
 inf -nan -inf -inf -nan -nan  inf  inf  nan 
 nan -nan  nan  nan  nan  nan  nan  nan  nan 

  /  -nan -inf   -1   -0    0    1  inf  nan 
-nan -nan -nan -nan -nan -nan -nan -nan -nan 
-inf -nan -nan  inf  inf -inf -inf -nan  nan 
  -1 -nan    0    1  inf -inf   -1   -0  nan 
  -0 -nan    0    0 -nan -nan   -0   -0  nan 
   0 -nan   -0   -0 -nan -nan    0    0  nan 
   1 -nan   -0   -1 -inf  inf    1    0  nan 
 inf -nan -nan -inf -inf  inf  inf -nan  nan 
 nan  nan  nan  nan  nan  nan  nan  nan  nan 

Then consider the attached perl (5.16.0) code (infnan.pl) which produces this output on the same system as above:

  +  -nan -inf   -1   -0    0    1  inf  nan 
-nan -nan -nan -nan -nan -nan -nan -nan -nan 
-inf -nan -inf -inf -inf -inf -inf -nan  nan 
  -1 -nan -inf   -2   -1   -1    0  inf  nan 
  -0 -nan -inf   -1    0    0    1  inf  nan 
   0 -nan -inf   -1    0    0    1  inf  nan 
   1 -nan -inf    0    1    1    2  inf  nan 
 inf -nan -nan  inf  inf  inf  inf  inf  nan 
 nan  nan  nan  nan  nan  nan  nan  nan  nan 

  -  -nan -inf   -1   -0    0    1  inf  nan 
-nan -nan -nan -nan -nan -nan -nan -nan -nan 
-inf -nan -nan -inf -inf -inf -inf -inf  nan 
  -1 -nan  inf    0   -1   -1   -2 -inf  nan 
  -0 -nan  inf    1    0    0   -1 -inf  nan 
   0 -nan  inf    1    0    0   -1 -inf  nan 
   1 -nan  inf    2    1    1    0 -inf  nan 
 inf -nan  inf  inf  inf  inf  inf -nan  nan 
 nan  nan  nan  nan  nan  nan  nan  nan  nan 

  *  -nan -inf   -1   -0    0    1  inf  nan 
-nan -nan -nan -nan -nan -nan -nan -nan -nan 
-inf -nan  inf  inf -nan -nan -inf -inf  nan 
  -1 -nan  inf    1    0    0   -1 -inf  nan 
  -0 -nan -nan    0    0    0    0 -nan  nan 
   0 -nan -nan    0    0    0    0 -nan  nan 
   1 -nan -inf   -1    0    0    1  inf  nan 
 inf -nan -inf -inf -nan -nan  inf  inf  nan 
 nan  nan  nan  nan  nan  nan  nan  nan  nan 

  /  -nan -inf   -1   -0    0    1  inf  nan 
-nan  nan  nan  nan  nan  nan  nan  nan  nan 
-inf  nan  nan  inf -inf -inf -inf  nan  nan 
  -1  nan    0    1 -inf -inf   -1    0  nan 
  -0  nan    0    0  nan  nan    0    0  nan 
   0  nan    0    0  nan  nan    0    0  nan 
   1  nan    0   -1  inf  inf    1    0  nan 
 inf  nan  nan -inf  inf  inf  inf  nan  nan 
 nan  nan  nan  nan  nan  nan  nan  nan  nan 

Any  thoughts on the above differences would be welcome.

Thanks,
Matthew


Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About