| 
35 | 35 | *>  | 
36 | 36 | *> alpha and beta are scalars, and A, B and C are matrices, with op( A )  | 
37 | 37 | *> an m by k matrix,  op( B )  a  k by n matrix and  C an m by n matrix.  | 
 | 38 | +*>  | 
 | 39 | +*> Note: if alpha and/or beta is zero, some parts of the matrix-matrix  | 
 | 40 | +*>  operations are not performed. This results in the following NaN/Inf  | 
 | 41 | +*>  propagation quirks:  | 
 | 42 | +*>  | 
 | 43 | +*>  1. If alpha is zero, NaNs or Infs in A or B do not affect the result.  | 
 | 44 | +*>  2. If both alpha and beta are zero, then a zero matrix is returned in C,  | 
 | 45 | +*>   irrespective of any NaNs or Infs in A, B or C.  | 
 | 46 | +*>  3. If only beta is zero, alpha*op( A )*op( B ) is returned, irrespective  | 
 | 47 | +*>   of any NaNs or Infs in C.  | 
38 | 48 | *> \endverbatim  | 
39 | 49 | *  | 
40 | 50 | *  Arguments:  | 
 | 
51 | 61 | *>              TRANSA = 'T' or 't',  op( A ) = A**T.  | 
52 | 62 | *>  | 
53 | 63 | *>              TRANSA = 'C' or 'c',  op( A ) = A**T.  | 
 | 64 | +*>  | 
 | 65 | +*>           Note: TRANSA = 'C' is supported for the sake of API consistency  | 
 | 66 | +*>           between all ?GEMM variants.  | 
54 | 67 | *> \endverbatim  | 
55 | 68 | *>  | 
56 | 69 | *> \param[in] TRANSB  | 
 | 
64 | 77 | *>              TRANSB = 'T' or 't',  op( B ) = B**T.  | 
65 | 78 | *>  | 
66 | 79 | *>              TRANSB = 'C' or 'c',  op( B ) = B**T.  | 
 | 80 | +*>  | 
 | 81 | +*>           Note: TRANSB = 'C' is supported for the sake of API consistency  | 
 | 82 | +*>           between all ?GEMM variants.  | 
67 | 83 | *> \endverbatim  | 
68 | 84 | *>  | 
69 | 85 | *> \param[in] M  | 
 | 
92 | 108 | *> \param[in] ALPHA  | 
93 | 109 | *> \verbatim  | 
94 | 110 | *>          ALPHA is DOUBLE PRECISION.  | 
95 |  | -*>           On entry, ALPHA specifies the scalar alpha.  | 
 | 111 | +*>           On entry, ALPHA specifies the scalar alpha. If ALPHA is zero the  | 
 | 112 | +*>           values in A and B do not affect the result. This also means that  | 
 | 113 | +*>           NaN/Inf propagation from A and B is inhibited if ALPHA is zero.  | 
96 | 114 | *> \endverbatim  | 
97 | 115 | *>  | 
98 | 116 | *> \param[in] A  | 
 | 
102 | 120 | *>           Before entry with  TRANSA = 'N' or 'n',  the leading  m by k  | 
103 | 121 | *>           part of the array  A  must contain the matrix  A,  otherwise  | 
104 | 122 | *>           the leading  k by m  part of the array  A  must contain  the  | 
105 |  | -*>           matrix A.  | 
 | 123 | +*>           matrix A, except if ALPHA is zero.  | 
 | 124 | +*>           If ALPHA is zero, none of the values in A affect the result, even  | 
 | 125 | +*>           if they are NaN/Inf. This also implies that if ALPHA is zero,  | 
 | 126 | +*>           the matrix elements of A need not be initialized by the caller.  | 
106 | 127 | *> \endverbatim  | 
107 | 128 | *>  | 
108 | 129 | *> \param[in] LDA  | 
 | 
121 | 142 | *>           Before entry with  TRANSB = 'N' or 'n',  the leading  k by n  | 
122 | 143 | *>           part of the array  B  must contain the matrix  B,  otherwise  | 
123 | 144 | *>           the leading  n by k  part of the array  B  must contain  the  | 
124 |  | -*>           matrix B.  | 
 | 145 | +*>           matrix B, except if ALPHA is zero.  | 
 | 146 | +*>           If ALPHA is zero, none of the values in B affect the result, even  | 
 | 147 | +*>           if they are NaN/Inf. This also implies that if ALPHA is zero,  | 
 | 148 | +*>           the matrix elements of B need not be initialized by the caller.  | 
125 | 149 | *> \endverbatim  | 
126 | 150 | *>  | 
127 | 151 | *> \param[in] LDB  | 
 | 
136 | 160 | *> \param[in] BETA  | 
137 | 161 | *> \verbatim  | 
138 | 162 | *>          BETA is DOUBLE PRECISION.  | 
139 |  | -*>           On entry,  BETA  specifies the scalar  beta.  When  BETA  is  | 
140 |  | -*>           supplied as zero then C need not be set on input.  | 
 | 163 | +*>           On entry,  BETA  specifies the scalar  beta.  If BETA is zero the  | 
 | 164 | +*>           values in C do not affect the result. This also means that  | 
 | 165 | +*>           NaN/Inf propagation from C is inhibited if BETA is zero.  | 
141 | 166 | *> \endverbatim  | 
142 | 167 | *>  | 
143 | 168 | *> \param[in,out] C  | 
144 | 169 | *> \verbatim  | 
145 | 170 | *>          C is DOUBLE PRECISION array, dimension ( LDC, N )  | 
146 | 171 | *>           Before entry, the leading  m by n  part of the array  C must  | 
147 |  | -*>           contain the matrix  C,  except when  beta  is zero, in which  | 
148 |  | -*>           case C need not be set on entry.  | 
 | 172 | +*>           contain the matrix  C, except if beta is zero.  | 
 | 173 | +*>           If beta is zero, none of the values in C affect the result, even  | 
 | 174 | +*>           if they are NaN/Inf. This also implies that if beta is zero,  | 
 | 175 | +*>           the matrix elements of C need not be initialized by the caller.  | 
149 | 176 | *>           On exit, the array  C  is overwritten by the  m by n  matrix  | 
150 | 177 | *>           ( alpha*op( A )*op( B ) + beta*C ).  | 
151 | 178 | *> \endverbatim  | 
 | 
0 commit comments