Hi,
I wanted to port a small c program to perl. However, the two programs behave
differently with respect to very small "double" values. The behavior seems
like a bug to me, but since I'm very new to perl, I thought I might ask the
list first.
Relevant code and output follows. Thanks!
--- c code ---
#include<stdio.h>
int main (int argc, char** argv)
{
double d1, d2, sum;
d1 = 6.892964e-309;
d2 = 1.102874e-307;
sum = d1 + d2;
printf("d1 = %e\n", d1);
printf("d2 = %e\n", d2);
printf("sum = %e\n", sum);
return 0;
}
--- perl code ---
#!/usr/bin/perl
my $d1, $d2, $sum;
$d1 = "6.892964e-309";
$d2 = "1.102874e-307";
$sum = $d1 + $d2;
printf("d1 = %e\n", $d1);
printf("d2 = %e\n", $d2);
printf("sum = %e\n", $sum);
--- c output ---
d1 = 6.892964e-309
d2 = 1.102874e-307
sum = 1.171804e-307
--- perl output ---
d1 = 0.000000e+00
d2 = 1.000000e-307
sum = 1.000000e-307