(module gamma mzscheme
(require (lib "contract.ss"))
(provide
(rename gamma unchecked-gamma)
(rename lngamma unchecked-lngamma)
(rename lngamma-sgn unchecked-lngamma-sgn)
(rename gammainv unchecked-gammainv)
(rename gamma* unchecked-gamma*)
(rename gammastar unchecked-gammastar)
(rename fact unchecked-fact)
(rename lnfact unchecked-lnfact)
(rename double-fact unchecked-double-fact)
(rename lndouble-fact unchecked-lndouble-fact)
(rename choose unchecked-choose)
(rename lnchoose unchecked-lnchoose)
(rename gamma-inc-Q unchecked-gamma-inc-Q)
(rename gamma-inc-P unchecked-gamma-inc-P)
(rename gamma-inc unchecked-gamma-inc)
(rename psi-int unchecked-psi-int)
(rename psi unchecked-psi)
(rename psi-1piy unchecked-psi-1piy)
(rename psi-1-int unchecked-psi-1-int)
(rename psi-1 unchecked-psi-1)
(rename psi-n unchecked-psi-n)
(rename zeta-int unchecked-zeta-int)
(rename zeta unchecked-zeta)
(rename zetam1-int unchecked-zetam1-int)
(rename zetam1 unchecked-zetam1)
(rename hzeta unchecked-hzeta)
(rename eta-int unchecked-eta-int)
(rename eta unchecked-eta))
(provide/contract
(gamma
(-> real? real?))
(lngamma
(-> real? real?))
(lngamma-sgn
(-> real? (values real? (integer-in -1 1))))
(gammainv
(-> real? real?))
(gamma*
(-> (>/c 0.0) real?))
(gammastar
(-> (>/c 0.0) real?))
(fact
(-> natural-number/c (>=/c 1.0)))
(lnfact
(-> natural-number/c (>=/c 0.0)))
(double-fact
(-> natural-number/c (>=/c 1.0)))
(lndouble-fact
(-> natural-number/c (>=/c 0.0)))
(choose
(-> natural-number/c natural-number/c (>=/c 1.0)))
(lnchoose
(-> natural-number/c natural-number/c (>=/c 0.0)))
(gamma-inc-Q
(-> (>/c 0.0) (>=/c 0.0) real?))
(gamma-inc-P
(-> (>/c 0.0) (>=/c 0.0) real?))
(gamma-inc
(-> real? (>=/c 0.0) real?))
(psi-int
(-> natural-number/c real?))
(psi
(-> real? real?))
(psi-1piy
(-> real? real?))
(psi-1-int
(-> natural-number/c real?))
(psi-1
(-> real? real?))
(psi-n
(-> natural-number/c real? real?))
(zeta-int
(-> integer? real?))
(zeta
(-> real? real?))
(zetam1-int
(-> integer? real?))
(zetam1
(-> real? real?))
(hzeta
(-> (>/c 1.0) (>/c 0.0) real?))
(eta-int
(-> integer? real?))
(eta
(-> real? real?)))
(require "../machine.ss")
(require "../math.ss")
(require "../chebyshev.ss")
(require "error.ss")
(require "exponential-integral.ss")
(require (lib "include.ss"))
(include "gamma-imp.ss")
(include "gamma-inc-imp.ss")
(include "psi-imp.ss")
(include "zeta-imp.ss")
)