]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Remove confusing warning about exp overflow
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 19 Apr 2017 13:53:49 +0000 (14:53 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 19 Apr 2017 13:54:13 +0000 (14:54 +0100)
src/libstat/classifiers/bayes.c

index ea9269a127f4f700506f95c84a37cc5a8311d1a0..8116e508d8d4e2d1a5437af0ebaf35ee2375b8ad 100644 (file)
@@ -63,16 +63,32 @@ inv_chi_square (struct rspamd_task *task, gdouble value, gint freedom_deg)
        prob = exp (value);
 
        if (errno == ERANGE) {
-               msg_err_bayes ("exp overflow");
-               return 0;
+               /*
+                * e^x where x is large *NEGATIVE* number is OK, so we have a very strong
+                * confidence that inv-chi-square is close to zero
+                */
+               msg_debug_bayes ("exp overflow");
+
+               if (value < 0) {
+                       return 0;
+               }
+               else {
+                       return 1.0;
+               }
        }
 
        sum = prob;
 
+       /*
+        * m is our confidence in class
+        * prob is e ^ x (small value since x is normally less than zero
+        * So we integrate over degrees of freedom and produce the total result
+        * from 1.0 (no confidence) to 0.0 (full confidence)
+        */
        for (i = 1; i < freedom_deg; i++) {
                prob *= m / (gdouble)i;
-               msg_debug_bayes ("prob: %.6f", prob);
                sum += prob;
+               msg_debug_bayes ("prob: %.6f, sum: %.6f", prob, sum);
        }
 
        return MIN (1.0, sum);