Annotation of rpl/lapack/lapack/dladiv.f, revision 1.1
1.1 ! bertrand 1: SUBROUTINE DLADIV( A, B, C, D, P, Q )
! 2: *
! 3: * -- LAPACK auxiliary routine (version 3.2) --
! 4: * -- LAPACK is a software package provided by Univ. of Tennessee, --
! 5: * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
! 6: * November 2006
! 7: *
! 8: * .. Scalar Arguments ..
! 9: DOUBLE PRECISION A, B, C, D, P, Q
! 10: * ..
! 11: *
! 12: * Purpose
! 13: * =======
! 14: *
! 15: * DLADIV performs complex division in real arithmetic
! 16: *
! 17: * a + i*b
! 18: * p + i*q = ---------
! 19: * c + i*d
! 20: *
! 21: * The algorithm is due to Robert L. Smith and can be found
! 22: * in D. Knuth, The art of Computer Programming, Vol.2, p.195
! 23: *
! 24: * Arguments
! 25: * =========
! 26: *
! 27: * A (input) DOUBLE PRECISION
! 28: * B (input) DOUBLE PRECISION
! 29: * C (input) DOUBLE PRECISION
! 30: * D (input) DOUBLE PRECISION
! 31: * The scalars a, b, c, and d in the above expression.
! 32: *
! 33: * P (output) DOUBLE PRECISION
! 34: * Q (output) DOUBLE PRECISION
! 35: * The scalars p and q in the above expression.
! 36: *
! 37: * =====================================================================
! 38: *
! 39: * .. Local Scalars ..
! 40: DOUBLE PRECISION E, F
! 41: * ..
! 42: * .. Intrinsic Functions ..
! 43: INTRINSIC ABS
! 44: * ..
! 45: * .. Executable Statements ..
! 46: *
! 47: IF( ABS( D ).LT.ABS( C ) ) THEN
! 48: E = D / C
! 49: F = C + D*E
! 50: P = ( A+B*E ) / F
! 51: Q = ( B-A*E ) / F
! 52: ELSE
! 53: E = C / D
! 54: F = D + C*E
! 55: P = ( B+A*E ) / F
! 56: Q = ( -A+B*E ) / F
! 57: END IF
! 58: *
! 59: RETURN
! 60: *
! 61: * End of DLADIV
! 62: *
! 63: END
CVSweb interface <joel.bertrand@systella.fr>