Exercise 1.3: Cubic Roots

Given: two real values, a, and  b, coefficients of the cubic
            equation x**3 + ax + b = 0;
the formulas for the roots x = C + D, -(C + D)/2 + 3**0.5*(C - D)/2, and -(C + D)/2 - 3**0.5*(C - D)/2, where C = (-b/2 + ((b**2)/4 + (a**3)/27)**0.5)**(1/3), and D = (-b/2 + ((b**2)/4 - (a**3)/27)**0.5)**(1/3);
Compose: a let-in statement that returns the roots of the cubic equation.
x1, x2, x3 :=
let term1   := -b / 2.0;
    term2   := b * b / 4.0;
    term3   := a * a * a / 27.0;
    radical := sqrt(term2 + term3);
    C       := exp(term1 + radical, 1.0/3.0);
    D       := exp(term1 - radical, 1.0/3.0);
in  C + D,
    -(C + D)/2.0 + sqrt(3.0) * (C - D)/2.0,
    -(C + D)/2.0 - sqrt(3.0) * (C - D)/2.0
end let 


Previous Section