Purpose
To compute an approximate symmetric chordal metric for two complex numbers A1 and A2 in real arithmetic. Each number Aj, j = 1, 2, is represented as a rational number with numerator ARj + i*AIj, and denominator Bj, with Bj >= 0. A value Bj = 0, when ARj or AIj is nonzero, means that the number Aj is infinite. The case when ARj = AIj = Bj = 0 means that the pair (Aj,Bj) is not a number.Specification
SUBROUTINE MA01DZ( AR1, AI1, B1, AR2, AI2, B2, EPS, SAFEMN, D1,
$ D2, IWARN )
C .. Scalar Arguments ..
DOUBLE PRECISION AI1, AI2, AR1, AR2, B1, B2, D1, D2, EPS, SAFEMN
INTEGER IWARN
Arguments
Input/Output Parameters
AR1 (input) DOUBLE PRECISION
AI1 (input) DOUBLE PRECISION
These scalars define the real and imaginary parts of the
numerator of A1.
B1 (input) DOUBLE PRECISION
The denominator of A1. B1 >= 0.
AR2 (input) DOUBLE PRECISION
AI2 (input) DOUBLE PRECISION
These scalars define the real and imaginary parts of the
numerator of A2.
B2 (input) DOUBLE PRECISION
The denominator of A2. B2 >= 0.
EPS (input) DOUBLE PRECISION
The relative machine precision. See the LAPACK Library
routine DLAMCH.
SAFEMN (input) DOUBLE PRECISION
The "safe minimum", such that its reciprocal does not
overflow. See the LAPACK Library routine DLAMCH.
D1 (output) DOUBLE PRECISION
The numerator of the chordal metric D. D1 >= 0.
D2 (output) DOUBLE PRECISION
The denominator of the chordal metric D. D2 is 0 or 1.
If D2 = 0, and D1 = 0, the chordal metric is undefined, so
either A1 and/or A2 are undefined.
Warning Indicator
IWARN INTEGER
= 0: no warning;
= 1: A1 or A2 is not a number (NaN); D1 and D2 are both
set to 0.
Method
The approximate symmetric chordal metric is evaluated using the
formula
D = MIN( | A1 - A2 |, |1/A1 - 1/A2| ),
taking into account the special cases of infinite or NaN values.
The chordal metric is finite even if A1 and A2 are both infinite,
or if one of them is infinite and the other is finite, nonzero.
Further Comments
NoneExample
Program Text
NoneProgram Data
NoneProgram Results
None