%%HP: T(3)A(D)F(.);
DIR
CUBIC
\<< \-> var \<<
EQ\-> - var 3 PCOEF LIST\-> DROP \-> a b c d \<<
var b a / c a / d a / PQR =
\>>
\>> \>>
QUARTIC
\<< \-> var \<<
EQ\-> - var 4 PCOEF LIST\-> DROP \-> a b c d e \<<
var b a / c a / d a / e a / ABCD =
\>>
\>> \>>
PQR
\<< \-> p q r \<<
q p SQ 3 / - 2 p 3 ^ * 9 p * q * - 27 / r + OVER -3 / \v/ 2 *
ABM p 3 / -
\>> \>>
ABM
\<< \-> a b m \<<
3 b * a m * / 'COS(ABM)' = 'ABM' ISOL EQ\-> SWAP DROP
{ 's1*&A' '&A' } \|^MATCH DROP 3 / COS m *
\>> \>>
ABCD
\<< RCLF \-> a b c d f \<<
b NEG a c * 4 d * - 4 b * d * a SQ d * - c SQ - -1 SF PQR f STOF
\-> y \<< y b - a SQ 4 / + \v/ \-> R \<<
3 a SQ * 4 / R SQ - 2 b * -
R 0 \=/
4 a * b * 8 c * - a 3 ^ - 4 R * /
y SQ 4 d * - \v/ 2 *
IFTE
DUP2 + \v/ 2 / 3 ROLLD - \v/ 2 /
\-> D E \<<
a -4 / R 2 / IF -1 FC? THEN 's1' * END +
IF -1 FC? THEN 's1>0' ELSE 1 END
D E IFTE
IF -1 FC? THEN 's2' * END +
\>>
\>> \>>
\>> \>>
PCOEF
\<<
3 DUPN TYPE SWAP TYPE ROT
TYPE 3 \->LIST { 0 6 9 }
IF ==
THEN DUP 1 + \-> n
\<< #18CEAh SYSEVAL
SWAP
#549CCh SYSEVAL
#74D0h SYSEVAL
#59373h SYSEVAL
DROP #7497h SYSEVAL
1 n
FOR m m ROLL COLCT
NEXT
n \->LIST
\>>
END
\>>
N1
\<<
DUP { n1 0 } | OVER { n1 1 } | 3 PICK { n1 2 } |
\>>
S12
\<<
DUP { s1 1 s2 1 } |
OVER { s1 1 s2 -1 } |
3 PICK { s1 -1 s2 1 } |
4 PICK { s1 -1 s2 -1 } |
\>>
END