use overload {
# . . . other operators
'atan2' => sub { atan2($_[0]->numify(),$_[1]) },
# . . . the rest of them
};
####
--- BigInt.pm~ Sat Jan 1 10:57:35 2005
+++ BigInt.pm Sun Jan 23 22:04:36 2005
@@ -75,7 +75,9 @@
'cos' => sub { cos($_[0]->numify()) },
'sin' => sub { sin($_[0]->numify()) },
'exp' => sub { exp($_[0]->numify()) },
-'atan2' => sub { atan2($_[0]->numify(),$_[1]) },
+'atan2' => sub { $_[2] ?
+ atan2($_[1],$_[0]->numify()) :
+ atan2($_[0]->numify(),$_[1]) },
# are not yet overloadable
#'hex' => sub { print "hex"; $_[0]; },
####
--- fallback.t~ Thu Dec 11 14:17:58 2003
+++ fallback.t Sun Jan 23 22:36:17 2005
@@ -28,7 +28,7 @@
}
print "# INC = @INC\n";
- plan tests => 8;
+ plan tests => 9;
}
# The tests below test that cos(BigInt) = cos(Scalar) which is DWIM, but not
@@ -46,10 +46,11 @@
ok (exp($bi), exp(1));
ok (atan2($bi,$bi), atan2(1,1));
-my $bf = Math::BigInt->new(1);
+my $bf = Math::BigInt->new(0);
-ok (cos($bf), cos(1));
-ok (sin($bf), sin(1));
-ok (exp($bf), exp(1));
-ok (atan2($bf,$bf), atan2(1,1));
+ok (cos($bf), cos(0));
+ok (sin($bf), sin(0));
+ok (exp($bf), exp(0));
+ok (atan2($bi,$bf), atan2(1,0));
+ok (atan2($bf,$bi), atan2(0,1));
####
$ perl -e'use bignum;print atan2(1,0), " ", atan2(0,1),$/'
1.5707963267949 0
$