Hi all: I just noticed a thing which caused me some trouble.
The PDL 'atan' function defaults to 'float' precision instead of the
more natural 'double':
use PDL;
my $a1 = atan(double(2379.0)/double(1024.0));
my $a2 = atan(float(2379.0)/float(1024.0));
my $a3 = atan(2379.0/1024.0);
print "$a1, $a2, $a3\n";
This prints:
1.1643329321713, 1.1643328666687, 1.1643328666687
This feature causes a problem when porting to/from C as the C atan
function operates on doubles.
I think this traces down to Basic::Math in the math.pd file:
my (@ufuncs1) = qw(acos asin atan cosh sinh tan tanh); # F,D only
...
my $func;
foreach $func (@ufuncs1) {
pp_def($func,
HandleBad => 1,
NoBadifNaN => 1,
GenericTypes => ['F','D'],
Pars => 'a(); [o]b();',
Inplace => 1,
Doc => inplace_doc( $func ),
Code => code_ufunc($func),
BadCode => badcode_ufunc($func),
);
}
Note that GenericTypes isF, D instead of D, F.
I would go so far to say that this is a bug, as the default pdl type is
double as in:
my $pdl = pdl(4,5,6);
p $pdl->info
PDL: Double D [3]
Regards,
Doug Hunt
------------------------------------------------------------------------------
_______________________________________________
pdl-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pdl-devel