## MA01DZ

### Approximate symmetric chordal metric for two, possibly infinite, complex numbers

[Specification] [Arguments] [Method] [References] [Comments] [Example]

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

      None

Example

Program Text

      None

Program Data

      None

Program Results

      None

Return to Supporting Routines index