;;; calcalg2.el --- more algebraic functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc.
+;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
+;; 2005, 2006 Free Software Foundation, Inc.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Jay Belanger <belanger@truman.edu>
(setq expr (list func expr var)))
(calc-enter-result n "derv" expr))))
-(defun calc-integral (var)
- (interactive "sIntegration variable: ")
- (calc-slow-wrapper
- (if (or (equal var "") (equal var "$"))
- (calc-enter-result 2 "intg" (list 'calcFunc-integ
- (calc-top-n 2)
- (calc-top-n 1)))
- (let ((var (math-read-expr var)))
- (if (eq (car-safe var) 'error)
- (error "Bad format in expression: %s" (nth 1 var)))
- (calc-enter-result 1 "intg" (list 'calcFunc-integ
- (calc-top-n 1)
- var))))))
+(defun calc-integral (var &optional arg)
+ (interactive "sIntegration variable: \nP")
+ (if arg
+ (calc-tabular-command 'calcFunc-integ "Integration" "intg" nil var nil nil)
+ (calc-slow-wrapper
+ (if (or (equal var "") (equal var "$"))
+ (calc-enter-result 2 "intg" (list 'calcFunc-integ
+ (calc-top-n 2)
+ (calc-top-n 1)))
+ (let ((var (math-read-expr var)))
+ (if (eq (car-safe var) 'error)
+ (error "Bad format in expression: %s" (nth 1 var)))
+ (calc-enter-result 1 "intg" (list 'calcFunc-integ
+ (calc-top-n 1)
+ var)))))))
(defun calc-num-integral (&optional varname lowname highname)
(interactive "sIntegration variable: ")
(defvar math-deriv-var)
(defvar math-deriv-total)
(defvar math-deriv-symb)
+(defvar math-decls-cache)
+(defvar math-decls-all)
(defun math-derivative (expr)
(cond ((equal expr math-deriv-var)
(calcFunc-expand temp)
(setq v (list 'var 'PARTS math-cur-record)
temp (let (calc-next-why)
- (math-solve-for (math-sub v temp) 0 v nil)))
- (and temp (not (integerp temp))
- (math-simplify-extended temp)))))
+ (math-simplify-extended
+ (math-solve-for (math-sub v temp) 0 v nil)))
+ temp (if (and (eq (car-safe temp) '/)
+ (math-zerop (nth 2 temp)))
+ nil temp)))))
(setcar (cdr math-cur-record) 'busy)))))
;;; This tries two different formulations, hoping the algebraic simplifier
n (1+ n)
t1 (cdr t1)))
(setq n (math-build-polynomial-expr poly high))
- (if (memq low '(0 1))
+ (if (= low 1)
n
(math-sub n (math-build-polynomial-expr poly
(math-sub low 1))))))