1 SUBROUTINE DLADIV( A, B, C, D, P, Q ) 2* 3* -- LAPACK auxiliary routine (version 3.0) -- 4* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., 5* Courant Institute, Argonne National Lab, and Rice University 6* October 31, 1992 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 64