Annotation of rpl/lapack/lapack/dlarmm.f, revision 1.1

1.1     ! bertrand    1: *> \brief \b DLARMM
        !             2: *
        !             3: * Definition:
        !             4: * ===========
        !             5: *
        !             6: *      DOUBLE PRECISION FUNCTION DLARMM( ANORM, BNORM, CNORM )
        !             7: *
        !             8: *     .. Scalar Arguments ..
        !             9: *      DOUBLE PRECISION   ANORM, BNORM, CNORM
        !            10: *     ..
        !            11: *
        !            12: *>  \par Purpose:
        !            13: *  =======
        !            14: *>
        !            15: *> \verbatim
        !            16: *>
        !            17: *> DLARMM returns a factor s in (0, 1] such that the linear updates
        !            18: *>
        !            19: *>    (s * C) - A * (s * B)  and  (s * C) - (s * A) * B
        !            20: *>
        !            21: *> cannot overflow, where A, B, and C are matrices of conforming
        !            22: *> dimensions.
        !            23: *>
        !            24: *> This is an auxiliary routine so there is no argument checking.
        !            25: *> \endverbatim
        !            26: *
        !            27: *  Arguments:
        !            28: *  =========
        !            29: *
        !            30: *> \param[in] ANORM
        !            31: *> \verbatim
        !            32: *>          ANORM is DOUBLE PRECISION
        !            33: *>          The infinity norm of A. ANORM >= 0.
        !            34: *>          The number of rows of the matrix A.  M >= 0.
        !            35: *> \endverbatim
        !            36: *>
        !            37: *> \param[in] BNORM
        !            38: *> \verbatim
        !            39: *>          BNORM is DOUBLE PRECISION
        !            40: *>          The infinity norm of B. BNORM >= 0.
        !            41: *> \endverbatim
        !            42: *>
        !            43: *> \param[in] CNORM
        !            44: *> \verbatim
        !            45: *>          CNORM is DOUBLE PRECISION
        !            46: *>          The infinity norm of C. CNORM >= 0.
        !            47: *> \endverbatim
        !            48: *>
        !            49: *>
        !            50: *  =====================================================================
        !            51: *>  References:
        !            52: *>    C. C. Kjelgaard Mikkelsen and L. Karlsson, Blocked Algorithms for
        !            53: *>    Robust Solution of Triangular Linear Systems. In: International
        !            54: *>    Conference on Parallel Processing and Applied Mathematics, pages
        !            55: *>    68--78. Springer, 2017.
        !            56: *>
        !            57: *> \ingroup OTHERauxiliary
        !            58: *  =====================================================================
        !            59: 
        !            60:       DOUBLE PRECISION FUNCTION DLARMM( ANORM, BNORM, CNORM )
        !            61:       IMPLICIT NONE
        !            62: *     .. Scalar Arguments ..
        !            63:       DOUBLE PRECISION   ANORM, BNORM, CNORM
        !            64: *     .. Parameters ..
        !            65:       DOUBLE PRECISION   ONE, HALF, FOUR
        !            66:       PARAMETER          ( ONE = 1.0D0, HALF = 0.5D+0, FOUR = 4.0D0 )
        !            67: *     ..
        !            68: *     .. Local Scalars ..
        !            69:        DOUBLE PRECISION   BIGNUM, SMLNUM
        !            70: *     ..
        !            71: *     .. External Functions ..
        !            72:       DOUBLE PRECISION   DLAMCH
        !            73:       EXTERNAL           DLAMCH
        !            74: *     ..
        !            75: *     .. Executable Statements ..
        !            76: *
        !            77: *
        !            78: *     Determine machine dependent parameters to control overflow.
        !            79: *
        !            80:       SMLNUM = DLAMCH( 'Safe minimum' ) / DLAMCH( 'Precision' )
        !            81:       BIGNUM = ( ONE / SMLNUM ) / FOUR
        !            82: *
        !            83: *     Compute a scale factor.
        !            84: *
        !            85:       DLARMM = ONE
        !            86:       IF( BNORM .LE. ONE ) THEN
        !            87:          IF( ANORM * BNORM .GT. BIGNUM - CNORM ) THEN
        !            88:             DLARMM = HALF
        !            89:          END IF
        !            90:       ELSE
        !            91:          IF( ANORM .GT. (BIGNUM - CNORM) / BNORM ) THEN
        !            92:             DLARMM = HALF / BNORM
        !            93:          END IF
        !            94:       END IF
        !            95:       RETURN
        !            96: *
        !            97: *     ==== End of DLARMM ====
        !            98: *
        !            99:       END

CVSweb interface <joel.bertrand@systella.fr>