github.com/gonum/lapack@v0.0.0-20181123203213-e4cdc5a0bff9/internal/testdata/netlib/dlaset.f (about)

     1  *> \brief \b DLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
     2  *
     3  *  =========== DOCUMENTATION ===========
     4  *
     5  * Online html documentation available at 
     6  *            http://www.netlib.org/lapack/explore-html/ 
     7  *
     8  *> \htmlonly
     9  *> Download DLASET + dependencies 
    10  *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlaset.f"> 
    11  *> [TGZ]</a> 
    12  *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlaset.f"> 
    13  *> [ZIP]</a> 
    14  *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlaset.f"> 
    15  *> [TXT]</a>
    16  *> \endhtmlonly 
    17  *
    18  *  Definition:
    19  *  ===========
    20  *
    21  *       SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
    22  * 
    23  *       .. Scalar Arguments ..
    24  *       CHARACTER          UPLO
    25  *       INTEGER            LDA, M, N
    26  *       DOUBLE PRECISION   ALPHA, BETA
    27  *       ..
    28  *       .. Array Arguments ..
    29  *       DOUBLE PRECISION   A( LDA, * )
    30  *       ..
    31  *  
    32  *
    33  *> \par Purpose:
    34  *  =============
    35  *>
    36  *> \verbatim
    37  *>
    38  *> DLASET initializes an m-by-n matrix A to BETA on the diagonal and
    39  *> ALPHA on the offdiagonals.
    40  *> \endverbatim
    41  *
    42  *  Arguments:
    43  *  ==========
    44  *
    45  *> \param[in] UPLO
    46  *> \verbatim
    47  *>          UPLO is CHARACTER*1
    48  *>          Specifies the part of the matrix A to be set.
    49  *>          = 'U':      Upper triangular part is set; the strictly lower
    50  *>                      triangular part of A is not changed.
    51  *>          = 'L':      Lower triangular part is set; the strictly upper
    52  *>                      triangular part of A is not changed.
    53  *>          Otherwise:  All of the matrix A is set.
    54  *> \endverbatim
    55  *>
    56  *> \param[in] M
    57  *> \verbatim
    58  *>          M is INTEGER
    59  *>          The number of rows of the matrix A.  M >= 0.
    60  *> \endverbatim
    61  *>
    62  *> \param[in] N
    63  *> \verbatim
    64  *>          N is INTEGER
    65  *>          The number of columns of the matrix A.  N >= 0.
    66  *> \endverbatim
    67  *>
    68  *> \param[in] ALPHA
    69  *> \verbatim
    70  *>          ALPHA is DOUBLE PRECISION
    71  *>          The constant to which the offdiagonal elements are to be set.
    72  *> \endverbatim
    73  *>
    74  *> \param[in] BETA
    75  *> \verbatim
    76  *>          BETA is DOUBLE PRECISION
    77  *>          The constant to which the diagonal elements are to be set.
    78  *> \endverbatim
    79  *>
    80  *> \param[out] A
    81  *> \verbatim
    82  *>          A is DOUBLE PRECISION array, dimension (LDA,N)
    83  *>          On exit, the leading m-by-n submatrix of A is set as follows:
    84  *>
    85  *>          if UPLO = 'U', A(i,j) = ALPHA, 1<=i<=j-1, 1<=j<=n,
    86  *>          if UPLO = 'L', A(i,j) = ALPHA, j+1<=i<=m, 1<=j<=n,
    87  *>          otherwise,     A(i,j) = ALPHA, 1<=i<=m, 1<=j<=n, i.ne.j,
    88  *>
    89  *>          and, for all UPLO, A(i,i) = BETA, 1<=i<=min(m,n).
    90  *> \endverbatim
    91  *>
    92  *> \param[in] LDA
    93  *> \verbatim
    94  *>          LDA is INTEGER
    95  *>          The leading dimension of the array A.  LDA >= max(1,M).
    96  *> \endverbatim
    97  *
    98  *  Authors:
    99  *  ========
   100  *
   101  *> \author Univ. of Tennessee 
   102  *> \author Univ. of California Berkeley 
   103  *> \author Univ. of Colorado Denver 
   104  *> \author NAG Ltd. 
   105  *
   106  *> \date November 2015
   107  *
   108  *> \ingroup auxOTHERauxiliary
   109  *
   110  *  =====================================================================
   111        SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
   112  *
   113  *  -- LAPACK auxiliary routine (version 3.6.0) --
   114  *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
   115  *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
   116  *     November 2015
   117  *
   118  *     .. Scalar Arguments ..
   119        CHARACTER          UPLO
   120        INTEGER            LDA, M, N
   121        DOUBLE PRECISION   ALPHA, BETA
   122  *     ..
   123  *     .. Array Arguments ..
   124        DOUBLE PRECISION   A( LDA, * )
   125  *     ..
   126  *
   127  * =====================================================================
   128  *
   129  *     .. Local Scalars ..
   130        INTEGER            I, J
   131  *     ..
   132  *     .. External Functions ..
   133        LOGICAL            LSAME
   134        EXTERNAL           LSAME
   135  *     ..
   136  *     .. Intrinsic Functions ..
   137        INTRINSIC          MIN
   138  *     ..
   139  *     .. Executable Statements ..
   140  *
   141        IF( LSAME( UPLO, 'U' ) ) THEN
   142  *
   143  *        Set the strictly upper triangular or trapezoidal part of the
   144  *        array to ALPHA.
   145  *
   146           DO 20 J = 2, N
   147              DO 10 I = 1, MIN( J-1, M )
   148                 A( I, J ) = ALPHA
   149     10       CONTINUE
   150     20    CONTINUE
   151  *
   152        ELSE IF( LSAME( UPLO, 'L' ) ) THEN
   153  *
   154  *        Set the strictly lower triangular or trapezoidal part of the
   155  *        array to ALPHA.
   156  *
   157           DO 40 J = 1, MIN( M, N )
   158              DO 30 I = J + 1, M
   159                 A( I, J ) = ALPHA
   160     30       CONTINUE
   161     40    CONTINUE
   162  *
   163        ELSE
   164  *
   165  *        Set the leading m-by-n submatrix to ALPHA.
   166  *
   167           DO 60 J = 1, N
   168              DO 50 I = 1, M
   169                 A( I, J ) = ALPHA
   170     50       CONTINUE
   171     60    CONTINUE
   172        END IF
   173  *
   174  *     Set the first min(M,N) diagonal elements to BETA.
   175  *
   176        DO 70 I = 1, MIN( M, N )
   177           A( I, I ) = BETA
   178     70 CONTINUE
   179  *
   180        RETURN
   181  *
   182  *     End of DLASET
   183  *
   184        END