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       IFABS( 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