Entropy: Difference between revisions

Content added Content deleted
(Rewrote it in a more functional style.)
Line 1,962: Line 1,962:
(setq LN2 0.693147180559945309417)
(setq LN2 0.693147180559945309417)


(de freq-table (Str)
(de tabulate-chars (Str)
(let Map NIL
(let Map NIL
(for Ch (chop Str)
(for Ch (chop Str)
Line 1,972: Line 1,972:
(de entropy (Str)
(de entropy (Str)
(let (
(let (
Sz (length Str)
Sz (length Str)
S 0
Hist (tabulate-chars Str)
)
)
(*/
(for Counts (freq-table Str)
(sum
(let R (*/ (cdr Counts) 1. Sz)
(setq S (- S (*/ R (log R) 1.)))))
'((Pair)
(*/ S 1. LN2)))
(let R (*/ (cdr Pair) 1. Sz)
(- (*/ R (log R) 1.))))
Hist)
1. LN2)))

</lang>
</lang>
{{Out}}
{{Out}}
Line 1,985: Line 1,989:
-> "1.84643934"
-> "1.84643934"
</pre>
</pre>

=={{header|PL/I}}==
=={{header|PL/I}}==
<lang pli>*process source xref attributes or(!);
<lang pli>*process source xref attributes or(!);