\START92\ \COMMENT= \NAME=p3exact \FILE=P3EXACT.89F (poly) Func \(C)\{a3,a2,a1,a0}:Func Local a2,a1,a0,p,q,u,v,r If when(poly[1]=0,true,false,false):Return cZeros(polyEval(poly,x),x) poly[2]/(poly[1])\->\a2 poly[3]/(poly[1])\->\a1 poly[4]/(poly[1])\->\a0 a1-a2^2/3\->\p a0-a1*a2/3+2/27*a2^3\->\q (\(-)\q/2+\root\(q^2/4+p^3/27)+0*\i\)^(1/3)\->\u If when(u=0,true,false,false) Then (\(-)\q/2-\root\(q^2/4+p^3/27)+0*\i\)^(1/3)\->\v Else \(-)\p/(3*u)\->\v EndIf {u+v,(\(-)\1/2+\i\*\root\(3)/2)*u+(\(-)\1/2-\i\*\root\(3)/2)*v,(\(-)\1/2-\i\*\root\(3)/2)*u+(\(-)\1/2+\i\*\root\(3)/2)*v}-a2/3 EndFunc \STOP92\