diff options
author | Miles Bader <miles@gnu.org> | 2005-09-11 22:21:01 +0000 |
---|---|---|
committer | Miles Bader <miles@gnu.org> | 2005-09-11 22:21:01 +0000 |
commit | ff8d296438e69b8cf701d95b6ccd271c416c46fd (patch) | |
tree | 44b388101b40592656ad4c5033aabe2a1ae4b462 /lisp/calc/calc-poly.el | |
parent | 389cb481135145b80a679beec8cdc8fed75682c5 (diff) | |
parent | a8f6d239d2d541ec874a22000e0542c20fd55a67 (diff) | |
download | emacs-ff8d296438e69b8cf701d95b6ccd271c416c46fd.tar.gz emacs-ff8d296438e69b8cf701d95b6ccd271c416c46fd.tar.bz2 emacs-ff8d296438e69b8cf701d95b6ccd271c416c46fd.zip |
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-81
Merge from emacs--cvs-trunk--0
Patches applied:
* emacs--cvs-trunk--0 (patch 532-541)
- Update from CVS
- Merge from gnus--rel--5.10
* gnus--rel--5.10 (patch 112-115)
- Update from CVS
Diffstat (limited to 'lisp/calc/calc-poly.el')
-rw-r--r-- | lisp/calc/calc-poly.el | 45 |
1 files changed, 36 insertions, 9 deletions
diff --git a/lisp/calc/calc-poly.el b/lisp/calc/calc-poly.el index 3dd19b6f67a..e27705de98a 100644 --- a/lisp/calc/calc-poly.el +++ b/lisp/calc/calc-poly.el @@ -1069,18 +1069,45 @@ (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 calc-matrix-mode 'matrix) + (eq (car-safe expr) '^) + (natnump (nth 2 expr)) + (> (nth 2 expr) 1) + (memq (car-safe (nth 1 expr)) '(+ -))) + (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)) '-)))) ((and (eq (car-safe expr) '^) (memq (car-safe (nth 1 expr)) '(+ -)) (integerp (nth 2 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)))))))) + (if (and (eq calc-matrix-mode 'matrix) + (> (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))) (defun calcFunc-expand (expr &optional many) |