Version 2 of Fuzzy Logic

Updated 2003-12-05 12:02:26

Fuzzy logic is logic with truth values that are not necessarily 0 and 1, but somewhere in between. Here's code, mostly by dkf as seen in the Tcl chatroom on 2003-12-05:

 proc fuzzyAnd {x y} {expr {$x*$y}}

 proc fuzzyNot {x} {expr {1.-$x}}

 proc fuzzyNAND {x y} {expr {1.-$x*$y}}

 proc fuzzyTrue {} {expr {1.}}

 proc fuzzyFalse {} {expr {0.}}

 proc fuzzyOr {x y} {fuzzyNot [fuzzyAnd [fuzzyNot $x] [fuzzyNot $y]]}

 proc fuzzyXor {x y} {
    fuzzyOr [fuzzyAnd $x [fuzzyNot $y]] [fuzzyAnd [fuzzyNot $x] $y]
 }
 proc fuzzyEq {x y} {fuzzyNot [fuzzyXor $x $y]}

Category Concept