Function: calcFunc-betaB
calcFunc-betaB is an autoloaded and byte-compiled function defined in
calc-funcs.el.gz.
Signature
(calcFunc-betaB X A B)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-funcs.el.gz
(defun calcFunc-betaB (x a b)
(cond
((math-zerop x)
'(float 0 0))
((math-equal-int x 1)
(calcFunc-beta a b))
((not (math-numberp x)) (math-reject-arg x 'numberp))
((not (math-numberp a)) (math-reject-arg a 'numberp))
((not (math-numberp b)) (math-reject-arg b 'numberp))
((math-zerop a) (math-reject-arg a 'nonzerop))
((math-zerop b) (math-reject-arg b 'nonzerop))
((and (math-num-integerp b)
(if (math-negp b)
(math-reject-arg b 'range)
(< (setq b (math-trunc b)) 20)))
(and calc-symbolic-mode (or (math-floatp a) (math-floatp b))
(math-inexact-result))
(math-mul
(math-with-extra-prec 2
(let* ((i 0)
(term 1)
(sum (math-div term a)))
(while (< (setq i (1+ i)) b)
(setq term (math-mul (math-div (math-mul term (- i b)) i) x)
sum (math-add sum (math-div term (math-add a i))))
(math-working "beta" sum))
sum))
(math-pow x a)))
((and (math-num-integerp a)
(if (math-negp a)
(math-reject-arg a 'range)
(< (setq a (math-trunc a)) 20)))
(math-sub (or math-current-beta-value (calcFunc-beta a b))
(calcFunc-betaB (math-sub 1 x) b a)))
(t
(math-inexact-result)
(math-with-extra-prec 2
(setq x (math-float x))
(setq a (math-float a))
(setq b (math-float b))
(let ((bt (math-exp-raw (math-add (math-mul a (math-ln-raw x))
(math-mul b (math-ln-raw
(math-sub '(float 1 0)
x)))))))
(if (Math-lessp x (math-div (math-add a '(float 1 0))
(math-add (math-add a b) '(float 2 0))))
(math-div (math-mul bt (math-beta-cfrac a b x)) a)
(math-sub (or math-current-beta-value (calcFunc-beta a b))
(math-div (math-mul bt
(math-beta-cfrac b a (math-sub 1 x)))
b))))))))