rquad |
Table of contents
ProcedureRQUAD ( Roots of a quadratic equation ) SUBROUTINE RQUAD ( A, B, C, ROOT1, ROOT2 ) AbstractFind the roots of a quadratic equation. Required_ReadingNone. KeywordsMATH POLYNOMIAL ROOT DeclarationsIMPLICIT NONE DOUBLE PRECISION A DOUBLE PRECISION B DOUBLE PRECISION C DOUBLE PRECISION ROOT1 ( 2 ) DOUBLE PRECISION ROOT2 ( 2 ) Brief_I/OVARIABLE I/O DESCRIPTION -------- --- -------------------------------------------------- A I Coefficient of quadratic term. B I Coefficient of linear term. C I Constant. ROOT1 O Root built from positive discriminant term. ROOT2 O Root built from negative discriminant term. Detailed_InputA, B, C are the coefficients of a quadratic polynomial 2 A * x + B * x + C. Detailed_OutputROOT1, ROOT2 are the roots of the equation 2 A * x + B * x + C = 0. ROOT1 and ROOT2 are both arrays of length 2. The first element of each array is the real part of a root; the second element contains the complex part of the same root. When A is non-zero, ROOT1 represents the root _____________ / 2 - B + \/ B - 4AC --------------------------- 2A and ROOT2 represents the root _____________ / 2 - B - \/ B - 4AC --------------------------- . 2A When A is zero and B is non-zero, ROOT1 and ROOT2 both represent the root - C / B. ParametersNone. Exceptions1) If the input coefficients A and B are both zero, the error SPICE(DEGENERATECASE) is signaled. The output arguments are not modified. FilesNone. ParticularsNone. Examples1) Humor us and suppose we want to compute the "golden ratio." The quantity r is defined by the equation 1/r = r/(1-r), which is equivalent to 2 r + r - 1 = 0. The following code fragment does the job. C C Compute "golden ratio." The root we want, C C ___ C / C -1 + \/ 5 C -----------, C 2 C C C is contained in ROOT1. C CALL RQUAD ( 1.D0, 1.D0, -1.D0, ROOT1, ROOT2 ) PRINT *, 'The "golden ratio" is ', ROOT1(1) 2) The equation, 2 x + 1 = 0 can be solved by the code fragment C C Let's do one with imaginary roots just for fun. C CALL RQUAD ( 1.D0, 0.D0, 1.D0, ROOT1, ROOT2 ) PRINT *, 'ROOT1 is ', ROOT1 PRINT *, 'ROOT2 is ', ROOT2 The printed results will be something like: ROOT1 is 0.000000000000000 1.000000000000000 ROOT2 is 0.000000000000000 -1.000000000000000 Restrictions1) No checks for overflow of the roots are performed. Literature_ReferencesNone. Author_and_InstitutionN.J. Bachman (JPL) J. Diaz del Rio (ODC Space) W.L. Taber (JPL) VersionSPICELIB Version 1.1.0, 17-JUN-2021 (JDR) Added IMPLICIT NONE statement. Edited the header to comply with NAIF standard. SPICELIB Version 1.0.1, 10-MAR-1992 (WLT) Comment section for permuted index source lines was added following the header. SPICELIB Version 1.0.0, 10-JUL-1990 (NJB) |
Fri Dec 31 18:36:44 2021