procmail
[Top] [All Lists]

Weighted expressions and small values

1999-03-26 23:42:50
I'm trying to write a weighted recipe that adds a small negative
amount to the score for each line in the message, and I've been
getting inconsistent results.

Basically what I'm doing is something like:

  :0
  * -.1^1 ^.

The results vary unpredictably for small changes in w. Here's a test
ruleset and its results on a message of about 1400 lines (per wc -l):

  :0
  * -.30^1 ^.
  * -.29^1 ^.
  * -.28^1 ^.
  * -.27^1 ^.
  * -.26^1 ^.
  * -.25^1 ^.
  * -.24^1 ^.
  * -.23^1 ^.
  * -.22^1 ^.
  * -.21^1 ^.
  * -.20^1 ^.
  * -.19^1 ^.
  * -.18^1 ^.
  * -.17^1 ^.
  * -.16^1 ^.
  * -.15^1 ^.
  * -.14^1 ^.
  * -.13^1 ^.
  * -.12^1 ^.
  * -.11^1 ^.
  * -.10^1 ^.
  * -.09^1 ^.
  * -.08^1 ^.
  * -.07^1 ^.
  * -.06^1 ^.
  * -.05^1 ^.
  * -.04^1 ^.
  * -.03^1 ^.
  * -.02^1 ^.
  * -.01^1 ^.
  { }

procmail: Score:      -3      -3 "^."
procmail: Score:       0      -4 "^."
procmail: Score:      -3      -7 "^."
procmail: Score:      -3     -11 "^."
procmail: Score:       0     -11 "^."
procmail: Score:      -3     -14 "^."
procmail: Score:       0     -15 "^."
procmail: Score:      -2     -18 "^."
procmail: Score:      -2     -20 "^."
procmail: Score:      -2     -23 "^."
procmail: Score:       0     -23 "^."
procmail: Score:      -2     -26 "^."
procmail: Score:       0     -26 "^."
procmail: Score:       0     -26 "^."
procmail: Score:       0     -26 "^."
procmail: Score:       0     -27 "^."
procmail: Score:      -1     -28 "^."
procmail: Score:       0     -28 "^."
procmail: Score:       0     -29 "^."
procmail: Score:      -1     -30 "^."
procmail: Score:       0     -30 "^."
procmail: Score:       0     -30 "^."
procmail: Score:       0     -30 "^."
procmail: Score:       0     -31 "^."
procmail: Score:       0     -31 "^."
procmail: Score:       0     -31 "^."
procmail: Score:       0     -31 "^."
procmail: Score:       0     -31 "^."
procmail: Score:       0     -31 "^."
procmail: Score:       0     -31 "^."

Why the seemingly random jumps to zero (or a fraction that is being
rounded down to zero for display purposes)? Is this some artifact of
the representation of double-precision floating point values in C?

Changing the minus signs to plus signs yields the same results with
positive numbers.

What am I not seeing?

procmail-3.12-2
gcc-2.7.2.3-8
Intel 486/66

--
 John Hardin KA7OHZ                               
jhardin(_at_)wolfenet(_dot_)com
 pgpk -a finger://gonzo.wolfenet.com/jhardin    PGP key ID: 0x41EA94F5
 PGP key fingerprint: A3 0C 5B C2 EF 0D 2C E5  E9 BF C8 33 A7 A9 CE 76 
-----------------------------------------------------------------------
  In the Lion
  the Mighty Lion
  the Zebra sleeps tonight...
  Dee de-ee-ee-ee-ee de de de we um umma way!
-----------------------------------------------------------------------
   53 days until Star Wars episode I

<Prev in Thread] Current Thread [Next in Thread>