News flash: I'm going to Australia in February, so this Web site may be switched off at any time.
Here is the function used in the quadratic root solver program:
procedure Quadratic_Roots ( a, b, c ) #-- # Generates the real roots of ax^2+bx+c=0. Depending on the sign # of d = b^2 - 4*a*c, there are three cases: # 1. d < 0: no real roots # 2. d = 0: one root, -b/2*a # 3. d > 0: two roots, (-b+sqrt(d))/2*a and (-b-sqrt(d))/2*a #-- local d # Discriminant d := b ^ 2 - 4.0 * a * c; # Compute the discriminant if d > 0 then { #-- Two roots suspend ( - b + sqrt ( d ) ) / ( 2.0 * a ); suspend ( - b - sqrt ( d ) ) / ( 2.0 * a ); } #-- Two roots else if d = 0 then suspend - b / ( 2.0 * a ); fail; # No more roots end # -- quadratic.icn --
john@nmt.edu