RosettaCodeData/Task/Cumulative-standard-deviation/Emacs-Lisp/cumulative-standard-deviation-3.l
2023-07-01 13:44:08 -04:00

24 lines
611 B
Common Lisp

;; lexical-binding: t
(require 'generator)
(iter-defun std-dev-gen (lst)
(let ((sum 0)
(avg 0)
(tmp '())
(std 0))
(dolist (i lst)
(setq i (float i))
(push i tmp)
(setq sum (+ sum i))
(setq avg (/ sum (length tmp)))
(setq std 0)
(dolist (j tmp)
(setq std (+ std (expt (- j avg) 2))))
(setq std (/ std (length tmp)))
(setq std (sqrt std))
(iter-yield std))))
(let* ((test-data '(2 4 4 4 5 5 7 9))
(generator (std-dev-gen test-data)))
(dolist (i test-data)
(message "with %d: %f" i (iter-next generator))))