aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Belanger2009-01-24 02:27:04 +0000
committerJay Belanger2009-01-24 02:27:04 +0000
commit18e50b48dbbdb0dfa5bb80bfcd7432d5aeaf180a (patch)
treefa54a411987de7ccaec42f9c8db82d8ff0fe6861
parenteec86b015fc70449cbcfbc988c26898ed90617e4 (diff)
downloademacs-18e50b48dbbdb0dfa5bb80bfcd7432d5aeaf180a.tar.gz
emacs-18e50b48dbbdb0dfa5bb80bfcd7432d5aeaf180a.zip
(calcFunc-apart): Improve test for rational functions.
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/calc/calc-poly.el32
2 files changed, 22 insertions, 15 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 01e8e2dfdf2..5550a2ceb83 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
12009-01-24 Jay Belanger <jay.p.belanger@gmail.com>
2
3 * calc/calc-poly.el (calcFunc-apart): Improve test for
4 rational functions.
5
12009-01-23 Chong Yidong <cyd@stupidchicken.com> 62009-01-23 Chong Yidong <cyd@stupidchicken.com>
2 7
3 * mail/rmailsum.el (rmail-summary-by-labels): Correctly handle 8 * mail/rmailsum.el (rmail-summary-by-labels): Correctly handle
diff --git a/lisp/calc/calc-poly.el b/lisp/calc/calc-poly.el
index 7385e42c851..2246df94414 100644
--- a/lisp/calc/calc-poly.el
+++ b/lisp/calc/calc-poly.el
@@ -961,22 +961,24 @@
961 ((eq (car expr) '-) 961 ((eq (car expr) '-)
962 (math-sub (calcFunc-apart (nth 1 expr) var) 962 (math-sub (calcFunc-apart (nth 1 expr) var)
963 (calcFunc-apart (nth 2 expr) var))) 963 (calcFunc-apart (nth 2 expr) var)))
964 ((not (math-ratpoly-p expr var)) 964 ((and var (not (math-ratpoly-p expr var)))
965 (math-reject-arg expr "Expected a rational function")) 965 (math-reject-arg expr "Expected a rational function"))
966 (t 966 (t
967 (let* ((calc-prefer-frac t) 967 (let* ((calc-prefer-frac t)
968 (rat (math-to-ratpoly expr)) 968 (rat (math-to-ratpoly expr))
969 (num (car rat)) 969 (num (car rat))
970 (den (cdr rat)) 970 (den (cdr rat)))
971 (qr (math-poly-div num den)) 971 (or var
972 (q (car qr)) 972 (setq var (math-polynomial-base den)))
973 (r (cdr qr))) 973 (if (not (math-ratpoly-p expr var))
974 (or var 974 (math-reject-arg expr "Expected a rational function")
975 (setq var (math-polynomial-base den))) 975 (let* ((qr (math-poly-div num den))
976 (math-add q (or (and var 976 (q (car qr))
977 (math-expr-contains den var) 977 (r (cdr qr)))
978 (math-partial-fractions r den var)) 978 (math-add q (or (and var
979 (math-div r den))))))) 979 (math-expr-contains den var)
980 (math-partial-fractions r den var))
981 (math-div r den)))))))))
980 982
981 983
982(defun math-padded-polynomial (expr var deg) 984(defun math-padded-polynomial (expr var deg)