Function: math-integral-q12
math-integral-q12 is an autoloaded and byte-compiled function defined
in calcalg2.el.gz.
Signature
(math-integral-q12 A B C V VPOW)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calcalg2.el.gz
(defun math-integral-q12 (a b c v vpow)
(let (q)
(cond ((not c)
(cond ((= vpow 1)
(math-sub (math-div math-integ-var b)
(math-mul (math-div a (math-sqr b))
(list 'calcFunc-ln v))))
((= vpow 2)
(math-div (math-add (list 'calcFunc-ln v)
(math-div a v))
(math-sqr b)))
(t
(let ((nm1 (math-sub vpow 1))
(nm2 (math-sub vpow 2)))
(math-div (math-sub
(math-div a (math-mul nm1 (math-pow v nm1)))
(math-div 1 (math-mul nm2 (math-pow v nm2))))
(math-sqr b))))))
((math-zerop
(setq q (math-sub (math-mul 4 (math-mul a c)) (math-sqr b))))
(let ((part (math-div b (math-mul 2 c))))
(math-mul-thru (math-pow c vpow)
(math-integral-q12 part 1 nil
(math-add math-integ-var part)
(* vpow 2)))))
((= vpow 1)
(and (math-ratp q) (math-negp q)
(let ((calc-symbolic-mode t))
(math-ratp (math-sqrt (math-neg q))))
(throw 'int-rat nil)) ; should have used calcFunc-apart first
(math-sub (math-div (list 'calcFunc-ln v) (math-mul 2 c))
(math-mul-thru (math-div b (math-mul 2 c))
(math-integral-q02 a b c v 1))))
(t
(let ((n (1- vpow)))
(math-sub (math-neg (math-div
(math-add (math-mul b math-integ-var)
(math-mul 2 a))
(math-mul n (math-mul q (math-pow v n)))))
(math-mul-thru (math-div (math-mul b (1- (* 2 n)))
(math-mul n q))
(math-integral-q02 a b c v n))))))))