1 *> \brief \b DLADIV 2 * 3 * =========== DOCUMENTATION =========== 4 * 5 * Online html documentation available at 6 * http://www.netlib.org/lapack/explore-html/ 7 * 8 *> \htmlonly 9 *> Download DLADIV + dependencies 10 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dladiv.f"> 11 *> [TGZ]</a> 12 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dladiv.f"> 13 *> [ZIP]</a> 14 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dladiv.f"> 15 *> [TXT]</a> 16 *> \endhtmlonly 17 * 18 * Definition: 19 * =========== 20 * 21 * SUBROUTINE DLADIV( A, B, C, D, P, Q ) 22 * 23 * .. Scalar Arguments .. 24 * DOUBLE PRECISION A, B, C, D, P, Q 25 * .. 26 * 27 * 28 *> \par Purpose: 29 * ============= 30 *> 31 *> \verbatim 32 *> 33 *> DLADIV performs complex division in real arithmetic 34 *> 35 *> a + i*b 36 *> p + i*q = --------- 37 *> c + i*d 38 *> 39 *> The algorithm is due to Robert L. Smith and can be found 40 *> in D. Knuth, The art of Computer Programming, Vol.2, p.195 41 *> \endverbatim 42 * 43 * Arguments: 44 * ========== 45 * 46 *> \param[in] A 47 *> \verbatim 48 *> A is DOUBLE PRECISION 49 *> \endverbatim 50 *> 51 *> \param[in] B 52 *> \verbatim 53 *> B is DOUBLE PRECISION 54 *> \endverbatim 55 *> 56 *> \param[in] C 57 *> \verbatim 58 *> C is DOUBLE PRECISION 59 *> \endverbatim 60 *> 61 *> \param[in] D 62 *> \verbatim 63 *> D is DOUBLE PRECISION 64 *> The scalars a, b, c, and d in the above expression. 65 *> \endverbatim 66 *> 67 *> \param[out] P 68 *> \verbatim 69 *> P is DOUBLE PRECISION 70 *> \endverbatim 71 *> 72 *> \param[out] Q 73 *> \verbatim 74 *> Q is DOUBLE PRECISION 75 *> The scalars p and q in the above expression. 76 *> \endverbatim 77 * 78 * Authors: 79 * ======== 80 * 81 *> \author Univ. of Tennessee 82 *> \author Univ. of California Berkeley 83 *> \author Univ. of Colorado Denver 84 *> \author NAG Ltd. 85 * 86 *> \date November 2011 87 * 88 *> \ingroup auxOTHERauxiliary 89 * 90 * ===================================================================== 91 SUBROUTINE DLADIV( A, B, C, D, P, Q ) 92 * 93 * -- LAPACK auxiliary routine (version 3.4.0) -- 94 * -- LAPACK is a software package provided by Univ. of Tennessee, -- 95 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 96 * November 2011 97 * 98 * .. Scalar Arguments .. 99 DOUBLE PRECISION A, B, C, D, P, Q 100 * .. 101 * 102 * ===================================================================== 103 * 104 * .. Local Scalars .. 105 DOUBLE PRECISION E, F 106 * .. 107 * .. Intrinsic Functions .. 108 INTRINSIC ABS 109 * .. 110 * .. Executable Statements .. 111 * 112 IF( ABS( D ).LT.ABS( C ) ) THEN 113 E = D / C 114 F = C + D*E 115 P = ( A+B*E ) / F 116 Q = ( B-A*E ) / F 117 ELSE 118 E = C / D 119 F = D + C*E 120 P = ( B+A*E ) / F 121 Q = ( -A+B*E ) / F 122 END IF 123 * 124 RETURN 125 * 126 * End of DLADIV 127 * 128 END 129