Function: calcFunc-table
calcFunc-table is an autoloaded and byte-compiled function defined in
calcalg2.el.gz.
Signature
(calcFunc-table EXPR VAR &optional LOW HIGH STEP)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calcalg2.el.gz
(defun calcFunc-table (expr var &optional low high step)
(let ((math-var var)
(calc-high high)
(calc-low low))
(or calc-low
(setq calc-low '(neg (var inf var-inf)) calc-high '(var inf var-inf)))
(or calc-high (setq calc-high calc-low calc-low 1))
(and (or (math-infinitep calc-low) (math-infinitep calc-high))
(not step)
(math-scan-for-limits expr))
(and step (math-zerop step) (math-reject-arg step 'nonzerop))
(let ((known (+ (if (Math-objectp calc-low) 1 0)
(if (Math-objectp calc-high) 1 0)
(if (or (null step) (Math-objectp step)) 1 0)))
(count '(var inf var-inf))) ;; vec
(or (= known 2) ; handy optimization
(equal calc-high '(var inf var-inf))
(progn
(setq count (math-div (math-sub calc-high calc-low) (or step 1)))
(or (Math-objectp count)
(setq count (math-simplify count)))
(if (Math-messy-integerp count)
(setq count (math-trunc count)))))
(if (Math-negp count)
(setq count -1))
(defvar var-DUMMY)
(if (integerp count)
(let ((var-DUMMY nil)
(vec math-tabulate-initial)
(math-working-step-2 (1+ count))
(math-working-step 0))
(setq expr (math-evaluate-expr
(math-expr-subst expr math-var '(var DUMMY var-DUMMY))))
(while (>= count 0)
(setq math-working-step (1+ math-working-step)
var-DUMMY calc-low
vec (cond ((eq math-tabulate-function 'calcFunc-sum)
(math-add vec (math-evaluate-expr expr)))
((eq math-tabulate-function 'calcFunc-prod)
(math-mul vec (math-evaluate-expr expr)))
(t
(cons (math-evaluate-expr expr) vec)))
calc-low (math-add calc-low (or step 1))
count (1- count)))
(if math-tabulate-function
vec
(cons 'vec (nreverse vec))))
(if (Math-integerp count)
(calc-record-why 'fixnump calc-high)
(if (Math-num-integerp calc-low)
(if (Math-num-integerp calc-high)
(calc-record-why 'integerp step)
(calc-record-why 'integerp calc-high))
(calc-record-why 'integerp calc-low)))
(append (list (or math-tabulate-function 'calcFunc-table)
expr math-var)
(and (not (and (equal calc-low '(neg (var inf var-inf)))
(equal calc-high '(var inf var-inf))))
(list calc-low calc-high))
(and step (list step)))))))