Function: math-expand-term
math-expand-term is an autoloaded and byte-compiled function defined
in calc-poly.el.gz.
Signature
(math-expand-term EXPR)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-poly.el.gz
(defun math-expand-term (expr)
(cond ((and (eq (car-safe expr) '*)
(memq (car-safe (nth 1 expr)) '(+ -)))
(math-add-or-sub (list '* (nth 1 (nth 1 expr)) (nth 2 expr))
(list '* (nth 2 (nth 1 expr)) (nth 2 expr))
nil (eq (car (nth 1 expr)) '-)))
((and (eq (car-safe expr) '*)
(memq (car-safe (nth 2 expr)) '(+ -)))
(math-add-or-sub (list '* (nth 1 expr) (nth 1 (nth 2 expr)))
(list '* (nth 1 expr) (nth 2 (nth 2 expr)))
nil (eq (car (nth 2 expr)) '-)))
((and (eq (car-safe expr) '/)
(memq (car-safe (nth 1 expr)) '(+ -)))
(math-add-or-sub (list '/ (nth 1 (nth 1 expr)) (nth 2 expr))
(list '/ (nth 2 (nth 1 expr)) (nth 2 expr))
nil (eq (car (nth 1 expr)) '-)))
((and (eq (car-safe expr) '^)
(memq (car-safe (nth 1 expr)) '(+ -))
(integerp (nth 2 expr))
(if (and
(or (math-known-matrixp (nth 1 (nth 1 expr)))
(math-known-matrixp (nth 2 (nth 1 expr)))
(and
calc-matrix-mode
(not (eq calc-matrix-mode 'scalar))
(not (and (math-known-scalarp (nth 1 (nth 1 expr)))
(math-known-scalarp (nth 2 (nth 1 expr)))))))
(> (nth 2 expr) 1))
(if (= (nth 2 expr) 2)
(math-add-or-sub (list '* (nth 1 (nth 1 expr)) (nth 1 expr))
(list '* (nth 2 (nth 1 expr)) (nth 1 expr))
nil (eq (car (nth 1 expr)) '-))
(math-add-or-sub (list '* (nth 1 (nth 1 expr))
(list '^ (nth 1 expr)
(1- (nth 2 expr))))
(list '* (nth 2 (nth 1 expr))
(list '^ (nth 1 expr)
(1- (nth 2 expr))))
nil (eq (car (nth 1 expr)) '-)))
(if (> (nth 2 expr) 0)
(or (and (or (> math-mt-many 500000) (< math-mt-many -500000))
(math-expand-power (nth 1 expr) (nth 2 expr)
nil t))
(list '*
(nth 1 expr)
(list '^ (nth 1 expr) (1- (nth 2 expr)))))
(if (< (nth 2 expr) 0)
(list '/ 1 (list '^ (nth 1 expr) (- (nth 2 expr)))))))))
(t expr)))