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