Function: calcFunc-ninteg
calcFunc-ninteg is an autoloaded and byte-compiled function defined in
calcalg3.el.gz.
Signature
(calcFunc-ninteg EXPR VAR LO HI)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calcalg3.el.gz
;;; The following algorithms come from Numerical Recipes, chapter 4.
(defun calcFunc-ninteg (expr var lo hi)
(setq lo (math-evaluate-expr lo)
hi (math-evaluate-expr hi))
(or (math-numberp lo) (math-infinitep lo) (math-reject-arg lo 'numberp))
(or (math-numberp hi) (math-infinitep hi) (math-reject-arg hi 'numberp))
(if (math-lessp hi lo)
(math-neg (calcFunc-ninteg expr var hi lo))
(setq expr (math-expr-subst expr var '(var DUMMY var-DUMMY)))
(let ((var-DUMMY nil)
(calc-symbolic-mode nil)
(calc-prefer-frac nil)
(sum 0))
(setq expr (math-evaluate-expr expr))
(if (equal lo '(neg (var inf var-inf)))
(let ((thi (if (math-lessp hi '(float -2 0))
hi '(float -2 0))))
(setq sum (math-ninteg-romberg
'math-ninteg-midpoint expr
(math-float lo) (math-float thi) 'inf)
lo thi)))
(if (equal hi '(var inf var-inf))
(let ((tlo (if (math-lessp '(float 2 0) lo)
lo '(float 2 0))))
(setq sum (math-add sum
(math-ninteg-romberg
'math-ninteg-midpoint expr
(math-float tlo) (math-float hi) 'inf))
hi tlo)))
(or (math-equal lo hi)
(setq sum (math-add sum
(math-ninteg-romberg
'math-ninteg-midpoint expr
(math-float lo) (math-float hi) nil))))
sum)))