Function: math-solve-quartic
math-solve-quartic is a byte-compiled function defined in
calcalg2.el.gz.
Signature
(math-solve-quartic VAR D C B A AA)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calcalg2.el.gz
(defun math-solve-quartic (var d c b a aa)
(setq a (math-div a aa))
(setq b (math-div b aa))
(setq c (math-div c aa))
(setq d (math-div d aa))
(math-try-solve-for
var
(let* ((asqr (math-sqr a))
(asqr4 (math-div asqr 4))
(y (let ((math-solve-full nil)
calc-next-why)
(math-solve-cubic math-solve-var
(math-sub (math-sub
(math-mul 4 (math-mul b d))
(math-mul asqr d))
(math-sqr c))
(math-sub (math-mul a c)
(math-mul 4 d))
(math-neg b)
1)))
(rsqr (math-add (math-sub asqr4 b) y))
(r (list 'calcFunc-sqrt rsqr))
(sign1 (math-solve-get-sign 1))
(de (list 'calcFunc-sqrt
(math-add
(math-sub (math-mul 3 asqr4)
(math-mul 2 b))
(if (Math-zerop rsqr)
(math-mul
2
(math-mul sign1
(list 'calcFunc-sqrt
(math-sub (math-sqr y)
(math-mul 4 d)))))
(math-sub
(math-mul sign1
(math-div
(math-sub (math-sub
(math-mul 4 (math-mul a b))
(math-mul 8 c))
(math-mul asqr a))
(math-mul 4 r)))
rsqr))))))
(math-normalize
(math-sub (math-add (math-mul sign1 (math-div r 2))
(math-solve-get-sign (math-div de 2)))
(math-div a 4))))
nil t))