Cumulative standard deviation: Difference between revisions

add cl
(add cl)
Line 106:
return 0;
}</lang>
 
=={{header|Common Lisp}}==
 
Based on some googled web site; written ages ago.
 
<lang lisp>(defun arithmetic-average (samples)
(/ (apply #'+ samples)
(length samples)))
 
(defun standard-deviation (samples)
(let ((len (length samples))
(mean (arithmetic-average samples)))
(sqrt (* (/ 1.0d0 len)
(reduce #'+ samples
:key (lambda (x)
(expt (- x mean) 2.0d0)))))))
 
(defun make-deviator ()
(let ((numbers '()))
(lambda (x)
(push x numbers)
(standard-deviation numbers))))</lang>
 
<lang lisp>CL-USER> (loop with deviator = (make-deviator)
for i in '(2 4 4 4 5 5 7 9)
collect (list i (funcall deviator i))) ==>
((2 0.0d0)
(4 1.0d0)
(4 0.9428090415820634d0)
(4 0.8660254037844386d0)
(5 0.9797958971132713d0)
(5 1.0d0)
(7 1.3997084244475304d0)
(9 2.0d0))</lang>
 
=={{header|E}}==