18 lines
570 B
Text
18 lines
570 B
Text
(de degree (P)
|
|
(let I NIL
|
|
(for (N . C) P
|
|
(or (=0 C) (setq I N)) )
|
|
(dec I) ) )
|
|
|
|
(de divPoly (N D)
|
|
(if (lt0 (degree D))
|
|
(quit "Div/0" D)
|
|
(let (Q NIL Diff)
|
|
(while (ge0 (setq Diff (- (degree N) (degree D))))
|
|
(setq Q (need (- -1 Diff) Q 0))
|
|
(let E D
|
|
(do Diff (push 'E 0))
|
|
(let F (/ (get N (inc (degree N))) (get E (inc (degree E))))
|
|
(set (nth Q (inc Diff)) F)
|
|
(setq N (mapcar '((N E) (- N (* E F))) N E)) ) ) )
|
|
(list Q N) ) ) )
|