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);
}