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

version 1.11, 2014/01/27 09:28:14 version 1.17, 2023/08/07 08:38:45
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 ZGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)  *       SUBROUTINE ZGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
 *   *
 *       .. Scalar Arguments ..  *       .. Scalar Arguments ..
 *       COMPLEX*16 ALPHA,BETA  *       COMPLEX*16 ALPHA,BETA
 *       INTEGER K,LDA,LDB,LDC,M,N  *       INTEGER K,LDA,LDB,LDC,M,N
Line 18 Line 18
 *       .. Array Arguments ..  *       .. Array Arguments ..
 *       COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)  *       COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)
 *       ..  *       ..
 *    *
 *  *
 *> \par Purpose:  *> \par Purpose:
 *  =============  *  =============
Line 97 Line 97
 *>  *>
 *> \param[in] A  *> \param[in] A
 *> \verbatim  *> \verbatim
 *>          A is COMPLEX*16 array of DIMENSION ( LDA, ka ), where ka is  *>          A is COMPLEX*16 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 COMPLEX*16 array of DIMENSION ( LDB, kb ), where kb is  *>          B is COMPLEX*16 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 COMPLEX*16 array of DIMENSION ( LDC, n ).  *>          C is COMPLEX*16 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 complex16_blas_level3  *> \ingroup complex16_blas_level3
 *  *
Line 187 Line 185
 *  =====================================================================  *  =====================================================================
       SUBROUTINE ZGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)        SUBROUTINE ZGEMM(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 ..
       COMPLEX*16 ALPHA,BETA        COMPLEX*16 ALPHA,BETA
Line 215 Line 212
 *     ..  *     ..
 *     .. Local Scalars ..  *     .. Local Scalars ..
       COMPLEX*16 TEMP        COMPLEX*16 TEMP
       INTEGER I,INFO,J,L,NCOLA,NROWA,NROWB        INTEGER I,INFO,J,L,NROWA,NROWB
       LOGICAL CONJA,CONJB,NOTA,NOTB        LOGICAL CONJA,CONJB,NOTA,NOTB
 *     ..  *     ..
 *     .. Parameters ..  *     .. Parameters ..
Line 228 Line 225
 *     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
 *     conjugated or transposed, set  CONJA and CONJB  as true if  A  and  *     conjugated or transposed, set  CONJA and CONJB  as true if  A  and
 *     B  respectively are to be  transposed but  not conjugated  and set  *     B  respectively are to be  transposed but  not conjugated  and set
 *     NROWA, NCOLA and  NROWB  as the number of rows and  columns  of  A  *     NROWA and NROWB  as the number of rows  of  A  and  B  respectively.
 *     and the number of rows of  B  respectively.  
 *  *
       NOTA = LSAME(TRANSA,'N')        NOTA = LSAME(TRANSA,'N')
       NOTB = LSAME(TRANSB,'N')        NOTB = LSAME(TRANSB,'N')
Line 237 Line 233
       CONJB = LSAME(TRANSB,'C')        CONJB = LSAME(TRANSB,'C')
       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 317 Line 311
    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 IF (CONJA) THEN            ELSE IF (CONJA) THEN
Line 376 Line 368
   170                 CONTINUE    170                 CONTINUE
                   END IF                    END IF
                   DO 190 L = 1,K                    DO 190 L = 1,K
                       IF (B(J,L).NE.ZERO) THEN                        TEMP = ALPHA*DCONJG(B(J,L))
                           TEMP = ALPHA*DCONJG(B(J,L))                        DO 180 I = 1,M
                           DO 180 I = 1,M                            C(I,J) = C(I,J) + TEMP*A(I,L)
                               C(I,J) = C(I,J) + TEMP*A(I,L)    180                 CONTINUE
   180                     CONTINUE  
                       END IF  
   190             CONTINUE    190             CONTINUE
   200         CONTINUE    200         CONTINUE
           ELSE            ELSE
 *  *
 *           Form  C := alpha*A*B**T          + beta*C  *           Form  C := alpha*A*B**T + beta*C
 *  *
               DO 250 J = 1,N                DO 250 J = 1,N
                   IF (BETA.EQ.ZERO) THEN                    IF (BETA.EQ.ZERO) THEN
Line 399 Line 389
   220                 CONTINUE    220                 CONTINUE
                   END IF                    END IF
                   DO 240 L = 1,K                    DO 240 L = 1,K
                       IF (B(J,L).NE.ZERO) THEN                        TEMP = ALPHA*B(J,L)
                           TEMP = ALPHA*B(J,L)                        DO 230 I = 1,M
                           DO 230 I = 1,M                            C(I,J) = C(I,J) + TEMP*A(I,L)
                               C(I,J) = C(I,J) + TEMP*A(I,L)    230                 CONTINUE
   230                     CONTINUE  
                       END IF  
   240             CONTINUE    240             CONTINUE
   250         CONTINUE    250         CONTINUE
           END IF            END IF
Line 484 Line 472
 *  *
       RETURN        RETURN
 *  *
 *     End of ZGEMM .  *     End of ZGEMM
 *  *
       END        END

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


CVSweb interface <joel.bertrand@systella.fr>