fork download
  1. ; entropy
  2.  
  3. (define (log2 x) (/ (log x) (log 2)))
  4.  
  5. (define (entropy filename)
  6. (with-input-from-file filename (lambda ()
  7. (let ((freqs (make-vector 256 0)) (ent 0.0))
  8. (let loop ((c (read-char)) (len 0))
  9. (if (not (eof-object? c))
  10. (let ((i (char->integer c)))
  11. (vector-set! freqs i
  12. (+ (vector-ref freqs i) 1))
  13. (loop (read-char) (+ len 1)))
  14. (do ((k 0 (+ k 1)))
  15. ((= k 256) (- ent))
  16. (let ((freq (vector-ref freqs k)))
  17. (when (positive? freq)
  18. (let ((x (/ freq len)))
  19. (set! ent (+ ent (* x (log2 x))))))))))))))
  20.  
  21. (display (entropy "entropy.ss")) (newline)
Runtime error #stdin #stdout #stderr 0.03s 8616KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
ERROR: In procedure primitive-load:
ERROR: In procedure scm_i_lreadparen: /home/vd9VdF/prog.scm:21:43: end of file