Function: calcFunc-dfact
calcFunc-dfact is an autoloaded and byte-compiled function defined in
calc-comb.el.gz.
Signature
(calcFunc-dfact N)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-comb.el.gz
(defun calcFunc-dfact (n) ; [I I] [F F] [Public]
(cond ((Math-integer-negp n)
(if (math-oddp n)
(if (eq n -1)
1
(math-div (if (eq (math-mod n 4) 3) 1 -1)
(calcFunc-dfact (math-sub -2 n))))
(list 'calcFunc-dfact n)))
((Math-zerop n) 1)
((integerp n) (math-double-factorial-iter n (+ 2 (% n 2)) 1 2))
((math-messy-integerp n)
(let ((temp (math-trunc n)))
(math-inexact-result)
(if (natnump temp)
(if (Math-lessp temp 200)
(math-with-extra-prec 1
(math-double-factorial-iter temp (+ 2 (% temp 2))
'(float 1 0) 2))
(let* ((half (math-div2 temp))
(even (math-mul (math-pow 2 half)
(calcFunc-fact (math-float half)))))
(if (math-evenp temp)
even
(math-div (calcFunc-fact n) even))))
(list 'calcFunc-dfact n))))
((equal n '(var inf var-inf)) n)
(t (calc-record-why 'natnump n)
(list 'calcFunc-dfact n))))