21 lines
683 B
Plaintext
21 lines
683 B
Plaintext
(defun gamma (x)
|
|
(if (< x 0.5)
|
|
(/ %pi%
|
|
(* (sin (* %pi% x))
|
|
(gamma (- 1 x))))
|
|
(let* ((cof #(676.5203681218851 -1259.1392167224028
|
|
771.32342877765313 -176.61502916214059
|
|
12.507343278686905 -0.13857109526572012
|
|
9.9843695780195716e-6 1.5056327351493116e-7))
|
|
(ser0 0.99999999999980993)
|
|
(z (pred x))
|
|
(tmp (+ z (len cof) -0.5))
|
|
(ser (+ ser0 (sum [mapcar / cof (succ z)]))))
|
|
(* (sqrt (* 2 %pi%))
|
|
(expt tmp (+ z 0.5))
|
|
(exp (- tmp))
|
|
ser))))
|
|
|
|
(each ((i (rlist 0.1..1.0..0.1 2..10)))
|
|
(put-line (pic "##.# ######.######" i (gamma i))))
|