diff -rup Math-Algebra-Symbols-1.21.orig/lib/Math/Algebra/Symbols/Sum.pm Math-Algebra-Symbols-1.21/lib/Math/Algebra/Symbols/Sum.pm --- Math-Algebra-Symbols-1.21.orig/lib/Math/Algebra/Symbols/Sum.pm 2004-06-15 00:25:54.000000000 +0200 +++ Math-Algebra-Symbols-1.21/lib/Math/Algebra/Symbols/Sum.pm 2012-08-28 11:08:30.000000000 +0200 @@ -1713,7 +1713,6 @@ use overload 'sqrt' =>\&sqrt3, 'exp' =>\&exp3, 'log' =>\&log3, - 'tan' =>\&tan3, 'sin' =>\&sin3, 'cos' =>\&cos3, '""' =>\&print3, diff -rup Math-Algebra-Symbols-1.21.orig/lib/Math/Algebra/Symbols/Term.pm Math-Algebra-Symbols-1.21/lib/Math/Algebra/Symbols/Term.pm --- Math-Algebra-Symbols-1.21.orig/lib/Math/Algebra/Symbols/Term.pm 2004-06-15 00:25:54.000000000 +0200 +++ Math-Algebra-Symbols-1.21/lib/Math/Algebra/Symbols/Term.pm 2012-08-28 11:10:03.000000000 +0200 @@ -836,8 +836,8 @@ sub sqrt2($) my ($c, $d, $i) = ($t->{c}, $t->{d}, 0); $c = -$c, $i = 1 if $c < 0; - my $c2 = sqrt($c); return undef unless $c2*$c2 == $c; - my $d2 = sqrt($d); return undef unless $d2*$d2 == $d; + my $c2 = int(1024 * sqrt($c)) / 32; return undef unless $c2*$c2 == $c; + my $d2 = int(1024 * sqrt($d)) / 32; return undef unless $d2*$d2 == $d; my $z = clone($t)->c($c2)->d($d2)->i($i); diff -rup Math-Algebra-Symbols-1.21.orig/t/bug_2004_6_5.t Math-Algebra-Symbols-1.21/t/bug_2004_6_5.t --- Math-Algebra-Symbols-1.21.orig/t/bug_2004_6_5.t 2004-06-15 00:25:53.000000000 +0200 +++ Math-Algebra-Symbols-1.21/t/bug_2004_6_5.t 2012-08-28 11:12:16.000000000 +0200 @@ -25,5 +25,7 @@ print $y, "\n"; use Math::Complex; # Need complex arithmetic $x = 2; -my $sx = eval $y; +my $qy = "$y"; +$qy =~ s/-/ - /g; +my $sx = eval $qy; ok($sx>0.90 and $sx<0.91);