30 lines
923 B
Racket
30 lines
923 B
Racket
#lang racket
|
|
(define (gamma number)
|
|
(if (> 1/2 number)
|
|
(/ pi (* (sin (* pi number))
|
|
(gamma (- 1.0 number))))
|
|
(let ((n (sub1 number))
|
|
(c '(0.99999999999980993 676.5203681218851 -1259.1392167224028
|
|
771.32342877765313 -176.61502916214059 12.507343278686905
|
|
-0.13857109526572012 9.9843695780195716e-6 1.5056327351493116e-7)))
|
|
(* (sqrt (* pi 2))
|
|
(expt (+ n 7 0.5) (+ n 0.5))
|
|
(exp (- (+ n 7 0.5)))
|
|
(+ (car c)
|
|
(apply +
|
|
(for/list ((i (in-range (length (cdr c)))) (x (in-list (cdr c))))
|
|
(/ x (+ 1 n i)))))))))
|
|
|
|
(map gamma '(0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0))
|
|
;->
|
|
;'(9.513507698668736
|
|
; 4.590843711998802
|
|
; 2.9915689876875904
|
|
; 2.218159543757687
|
|
; 1.7724538509055159
|
|
; 1.489192248812818
|
|
; 1.2980553326475577
|
|
; 1.1642297137253037
|
|
; 1.068628702119319
|
|
; 1.0)
|