File:  [local] / rpl / lapack / lapack / dladiv.f
Revision 1.12: download - view: text, annotated - select for diffs - revision graph
Fri Dec 14 14:22:32 2012 UTC (11 years, 5 months ago) by bertrand
Branches: MAIN
CVS tags: rpl-4_1_16, rpl-4_1_15, rpl-4_1_14, rpl-4_1_13, rpl-4_1_12, rpl-4_1_11, HEAD
Mise à jour de lapack.

    1: *> \brief \b DLADIV performs complex division in real arithmetic, avoiding unnecessary overflow.
    2: *
    3: *  =========== DOCUMENTATION ===========
    4: *
    5: * Online html documentation available at 
    6: *            http://www.netlib.org/lapack/explore-html/ 
    7: *
    8: *> \htmlonly
    9: *> Download DLADIV + dependencies 
   10: *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dladiv.f"> 
   11: *> [TGZ]</a> 
   12: *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dladiv.f"> 
   13: *> [ZIP]</a> 
   14: *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dladiv.f"> 
   15: *> [TXT]</a>
   16: *> \endhtmlonly 
   17: *
   18: *  Definition:
   19: *  ===========
   20: *
   21: *       SUBROUTINE DLADIV( A, B, C, D, P, Q )
   22:    23: *       .. Scalar Arguments ..
   24: *       DOUBLE PRECISION   A, B, C, D, P, Q
   25: *       ..
   26: *  
   27: *
   28: *> \par Purpose:
   29: *  =============
   30: *>
   31: *> \verbatim
   32: *>
   33: *> DLADIV performs complex division in  real arithmetic
   34: *>
   35: *>                       a + i*b
   36: *>            p + i*q = ---------
   37: *>                       c + i*d
   38: *>
   39: *> The algorithm is due to Robert L. Smith and can be found
   40: *> in D. Knuth, The art of Computer Programming, Vol.2, p.195
   41: *> \endverbatim
   42: *
   43: *  Arguments:
   44: *  ==========
   45: *
   46: *> \param[in] A
   47: *> \verbatim
   48: *>          A is DOUBLE PRECISION
   49: *> \endverbatim
   50: *>
   51: *> \param[in] B
   52: *> \verbatim
   53: *>          B is DOUBLE PRECISION
   54: *> \endverbatim
   55: *>
   56: *> \param[in] C
   57: *> \verbatim
   58: *>          C is DOUBLE PRECISION
   59: *> \endverbatim
   60: *>
   61: *> \param[in] D
   62: *> \verbatim
   63: *>          D is DOUBLE PRECISION
   64: *>          The scalars a, b, c, and d in the above expression.
   65: *> \endverbatim
   66: *>
   67: *> \param[out] P
   68: *> \verbatim
   69: *>          P is DOUBLE PRECISION
   70: *> \endverbatim
   71: *>
   72: *> \param[out] Q
   73: *> \verbatim
   74: *>          Q is DOUBLE PRECISION
   75: *>          The scalars p and q in the above expression.
   76: *> \endverbatim
   77: *
   78: *  Authors:
   79: *  ========
   80: *
   81: *> \author Univ. of Tennessee 
   82: *> \author Univ. of California Berkeley 
   83: *> \author Univ. of Colorado Denver 
   84: *> \author NAG Ltd. 
   85: *
   86: *> \date September 2012
   87: *
   88: *> \ingroup auxOTHERauxiliary
   89: *
   90: *  =====================================================================
   91:       SUBROUTINE DLADIV( A, B, C, D, P, Q )
   92: *
   93: *  -- LAPACK auxiliary routine (version 3.4.2) --
   94: *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
   95: *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
   96: *     September 2012
   97: *
   98: *     .. Scalar Arguments ..
   99:       DOUBLE PRECISION   A, B, C, D, P, Q
  100: *     ..
  101: *
  102: *  =====================================================================
  103: *
  104: *     .. Local Scalars ..
  105:       DOUBLE PRECISION   E, F
  106: *     ..
  107: *     .. Intrinsic Functions ..
  108:       INTRINSIC          ABS
  109: *     ..
  110: *     .. Executable Statements ..
  111: *
  112:       IF( ABS( D ).LT.ABS( C ) ) THEN
  113:          E = D / C
  114:          F = C + D*E
  115:          P = ( A+B*E ) / F
  116:          Q = ( B-A*E ) / F
  117:       ELSE
  118:          E = C / D
  119:          F = D + C*E
  120:          P = ( B+A*E ) / F
  121:          Q = ( -A+B*E ) / F
  122:       END IF
  123: *
  124:       RETURN
  125: *
  126: *     End of DLADIV
  127: *
  128:       END

CVSweb interface <joel.bertrand@systella.fr>