;(QUOTE (((MEAN L) - return the average value of a list of numbers) (DESCRIPTION: The mean is floating point, regardless of) (the types of the numbers in the list.)))
(DEFINE MEAN (L) (/ (FLOAT (SUM L)) (LENGTH L)))
(QUOTE ())
;(QUOTE (((SUM L) - add the elements of a list)))
(DEFINE SUM (L) (MAP ID L + 0))
(QUOTE ())
;(QUOTE (((MEDIAN L) - return the median value of a list of numbers) (DESCRIPTION: The list MUST be sorted.)))
(DEFINE MEDIAN (L) (LET ((N (/ (LENGTH L) 2))) (IF (ODDP (LENGTH L)) (NTH L (ADD1 N)) (/ (+ (NTH L N) (NTH L (ADD1 N))) 2.))))
(QUOTE ())
;(QUOTE (((ODDP N) - predicate for odd integers)))
(DEFINE ODDP (N) (NULL (ZEROP (REM N 2))))
(QUOTE ())
;(QUOTE (((Sort L) - sort a list of numbers) (DESCRIPTION: Returns a sorted copy of L.)))
(DEFINE Sort (L) (MAP ID L Insert ()))
(QUOTE ())
;(QUOTE ((Please Document Insert)))
(DEFINE Insert (X L) (ADDEL X L (POS X L 0)))
(QUOTE ())
;(QUOTE ((Please Document ADDEL)))
(DEFINE ADDEL (N L P) (COND ((= (LENGTH L) P) (NCONC L (LIST N))) (T (LET ((L (CDRS L P))) (RPLACAD L (CONS N (CONS (CAR L) (CDR L))))) L)))
(QUOTE ())
;(QUOTE ((Please Document POS)))
(DEFINE POS (X L N) (IF L (IF (< X (CAR L)) N (POS X (CDR L) (ADD1 N))) N))
(QUOTE ())
;(QUOTE (((STD L) - calculate the standard deviation of a list of numbers)))
(DEFINE STD (L) (SQRT (VARIANCE L)))
(QUOTE ())
;(QUOTE (((VARIANCE L) - calculate the variance of a list of numbers)))
(DEFINE VARIANCE (L) (/ (SUMSQDEV L) (LENGTH L)))
(QUOTE ())
;(QUOTE (((SUMSQDEV L) - calculate the sum of the squared deviations from the mean)))