You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by pa...@apache.org on 2004/05/02 22:27:45 UTC

svn commit: rev 10494 - incubator/spamassassin/trunk/lib/Mail/SpamAssassin

Author: parker
Date: Sun May  2 13:27:44 2004
New Revision: 10494

Modified:
   incubator/spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm
Log:
Bug 3344: Avoid calling sqrt on negative number

Modified: incubator/spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm
==============================================================================
--- incubator/spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm	(original)
+++ incubator/spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm	Sun May  2 13:27:44 2004
@@ -1099,9 +1099,11 @@
   my $a = $Nb * ( 1 - $p );
   my $b = $Nb * ( $sx + $nb * ( 1 - $p ) - $p * $s ) - $p * $Na * $nb;
   my $c = $Na * $nb * ( $sx - $p * ( $s + $nb ) );
+  my $discrim = $b * $b - 4 * $a * $c;
+  my $disc_max_0 = $discrim < 0 ? 0 : $discrim;
+  my $dd_exact = ( 1.0 - 1e-6 + ( -$b + sqrt( $disc_max_0 ) ) / ( 2*$a ) ) - $na;
 
-  return int( 1.0 - 1e-6 + ( -$b + sqrt( $b * $b - 4 * $a * $c ) ) / ( 2 * $a ) )
-    - $na;
+  return $dd_exact < 1 ? 1 : int($dd_exact);
 }