Diff for /rpl/lapack/blas/dgemm.f between versions 1.11 and 1.17

version 1.11, 2014/01/27 09:28:12 version 1.17, 2023/08/07 08:38:43
Line 2 Line 2
 *  *
 *  =========== DOCUMENTATION ===========  *  =========== DOCUMENTATION ===========
 *  *
 * Online html documentation available at   * Online html documentation available at
 *            http://www.netlib.org/lapack/explore-html/   *            http://www.netlib.org/lapack/explore-html/
 *  *
 *  Definition:  *  Definition:
 *  ===========  *  ===========
 *  *
 *       SUBROUTINE DGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)  *       SUBROUTINE DGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
 *   *
 *       .. Scalar Arguments ..  *       .. Scalar Arguments ..
 *       DOUBLE PRECISION ALPHA,BETA  *       DOUBLE PRECISION ALPHA,BETA
 *       INTEGER K,LDA,LDB,LDC,M,N  *       INTEGER K,LDA,LDB,LDC,M,N
Line 18 Line 18
 *       .. Array Arguments ..  *       .. Array Arguments ..
 *       DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*)  *       DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*)
 *       ..  *       ..
 *    *
 *  *
 *> \par Purpose:  *> \par Purpose:
 *  =============  *  =============
Line 97 Line 97
 *>  *>
 *> \param[in] A  *> \param[in] A
 *> \verbatim  *> \verbatim
 *>          A is DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is  *>          A is DOUBLE PRECISION array, dimension ( LDA, ka ), where ka is
 *>           k  when  TRANSA = 'N' or 'n',  and is  m  otherwise.  *>           k  when  TRANSA = 'N' or 'n',  and is  m  otherwise.
 *>           Before entry with  TRANSA = 'N' or 'n',  the leading  m by k  *>           Before entry with  TRANSA = 'N' or 'n',  the leading  m by k
 *>           part of the array  A  must contain the matrix  A,  otherwise  *>           part of the array  A  must contain the matrix  A,  otherwise
Line 116 Line 116
 *>  *>
 *> \param[in] B  *> \param[in] B
 *> \verbatim  *> \verbatim
 *>          B is DOUBLE PRECISION array of DIMENSION ( LDB, kb ), where kb is  *>          B is DOUBLE PRECISION array, dimension ( LDB, kb ), where kb is
 *>           n  when  TRANSB = 'N' or 'n',  and is  k  otherwise.  *>           n  when  TRANSB = 'N' or 'n',  and is  k  otherwise.
 *>           Before entry with  TRANSB = 'N' or 'n',  the leading  k by n  *>           Before entry with  TRANSB = 'N' or 'n',  the leading  k by n
 *>           part of the array  B  must contain the matrix  B,  otherwise  *>           part of the array  B  must contain the matrix  B,  otherwise
Line 142 Line 142
 *>  *>
 *> \param[in,out] C  *> \param[in,out] C
 *> \verbatim  *> \verbatim
 *>          C is DOUBLE PRECISION array of DIMENSION ( LDC, n ).  *>          C is DOUBLE PRECISION array, dimension ( LDC, N )
 *>           Before entry, the leading  m by n  part of the array  C must  *>           Before entry, the leading  m by n  part of the array  C must
 *>           contain the matrix  C,  except when  beta  is zero, in which  *>           contain the matrix  C,  except when  beta  is zero, in which
 *>           case C need not be set on entry.  *>           case C need not be set on entry.
Line 161 Line 161
 *  Authors:  *  Authors:
 *  ========  *  ========
 *  *
 *> \author Univ. of Tennessee   *> \author Univ. of Tennessee
 *> \author Univ. of California Berkeley   *> \author Univ. of California Berkeley
 *> \author Univ. of Colorado Denver   *> \author Univ. of Colorado Denver
 *> \author NAG Ltd.   *> \author NAG Ltd.
 *  
 *> \date November 2011  
 *  *
 *> \ingroup double_blas_level3  *> \ingroup double_blas_level3
 *  *
Line 187 Line 185
 *  =====================================================================  *  =====================================================================
       SUBROUTINE DGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)        SUBROUTINE DGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
 *  *
 *  -- Reference BLAS level3 routine (version 3.4.0) --  *  -- Reference BLAS level3 routine --
 *  -- Reference BLAS is a software package provided by Univ. of Tennessee,    --  *  -- Reference BLAS is a software package provided by Univ. of Tennessee,    --
 *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--  *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
 *     November 2011  
 *  *
 *     .. Scalar Arguments ..  *     .. Scalar Arguments ..
       DOUBLE PRECISION ALPHA,BETA        DOUBLE PRECISION ALPHA,BETA
Line 215 Line 212
 *     ..  *     ..
 *     .. Local Scalars ..  *     .. Local Scalars ..
       DOUBLE PRECISION TEMP        DOUBLE PRECISION TEMP
       INTEGER I,INFO,J,L,NCOLA,NROWA,NROWB        INTEGER I,INFO,J,L,NROWA,NROWB
       LOGICAL NOTA,NOTB        LOGICAL NOTA,NOTB
 *     ..  *     ..
 *     .. Parameters ..  *     .. Parameters ..
Line 224 Line 221
 *     ..  *     ..
 *  *
 *     Set  NOTA  and  NOTB  as  true if  A  and  B  respectively are not  *     Set  NOTA  and  NOTB  as  true if  A  and  B  respectively are not
 *     transposed and set  NROWA, NCOLA and  NROWB  as the number of rows  *     transposed and set  NROWA and NROWB  as the number of rows of  A
 *     and  columns of  A  and the  number of  rows  of  B  respectively.  *     and  B  respectively.
 *  *
       NOTA = LSAME(TRANSA,'N')        NOTA = LSAME(TRANSA,'N')
       NOTB = LSAME(TRANSB,'N')        NOTB = LSAME(TRANSB,'N')
       IF (NOTA) THEN        IF (NOTA) THEN
           NROWA = M            NROWA = M
           NCOLA = K  
       ELSE        ELSE
           NROWA = K            NROWA = K
           NCOLA = M  
       END IF        END IF
       IF (NOTB) THEN        IF (NOTB) THEN
           NROWB = K            NROWB = K
Line 311 Line 306
    60                 CONTINUE     60                 CONTINUE
                   END IF                    END IF
                   DO 80 L = 1,K                    DO 80 L = 1,K
                       IF (B(L,J).NE.ZERO) THEN                        TEMP = ALPHA*B(L,J)
                           TEMP = ALPHA*B(L,J)                        DO 70 I = 1,M
                           DO 70 I = 1,M                            C(I,J) = C(I,J) + TEMP*A(I,L)
                               C(I,J) = C(I,J) + TEMP*A(I,L)     70                 CONTINUE
    70                     CONTINUE  
                       END IF  
    80             CONTINUE     80             CONTINUE
    90         CONTINUE     90         CONTINUE
           ELSE            ELSE
Line 353 Line 346
   140                 CONTINUE    140                 CONTINUE
                   END IF                    END IF
                   DO 160 L = 1,K                    DO 160 L = 1,K
                       IF (B(J,L).NE.ZERO) THEN                        TEMP = ALPHA*B(J,L)
                           TEMP = ALPHA*B(J,L)                        DO 150 I = 1,M
                           DO 150 I = 1,M                            C(I,J) = C(I,J) + TEMP*A(I,L)
                               C(I,J) = C(I,J) + TEMP*A(I,L)    150                 CONTINUE
   150                     CONTINUE  
                       END IF  
   160             CONTINUE    160             CONTINUE
   170         CONTINUE    170         CONTINUE
           ELSE            ELSE
Line 383 Line 374
 *  *
       RETURN        RETURN
 *  *
 *     End of DGEMM .  *     End of DGEMM
 *  *
       END        END

Removed from v.1.11  
changed lines
  Added in v.1.17


CVSweb interface <joel.bertrand@systella.fr>