37 #ifndef TEMPLATE_BLAS_GEMM_HEADER 38 #define TEMPLATE_BLAS_GEMM_HEADER 44 n,
const integer *k,
const Treal *alpha,
const Treal *a,
const integer *lda,
45 const Treal *b,
const integer *ldb,
const Treal *beta, Treal *c__,
49 integer a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset, i__1, i__2,
57 #define a_ref(a_1,a_2) a[(a_2)*a_dim1 + a_1] 58 #define b_ref(a_1,a_2) b[(a_2)*b_dim1 + a_1] 59 #define c___ref(a_1,a_2) c__[(a_2)*c_dim1 + a_1] 153 a_offset = 1 + a_dim1 * 1;
156 b_offset = 1 + b_dim1 * 1;
159 c_offset = 1 + c_dim1 * 1;
188 }
else if (*lda <
maxMACRO(1,nrowa)) {
190 }
else if (*ldb <
maxMACRO(1,nrowb)) {
200 if (*m == 0 || *n == 0 || ( (*alpha == 0. || *k == 0) && *beta == 1.) ) {
207 for (j = 1; j <= i__1; ++j) {
209 for (i__ = 1; i__ <= i__2; ++i__) {
217 for (j = 1; j <= i__1; ++j) {
219 for (i__ = 1; i__ <= i__2; ++i__) {
233 for (j = 1; j <= i__1; ++j) {
236 for (i__ = 1; i__ <= i__2; ++i__) {
240 }
else if (*beta != 1.) {
242 for (i__ = 1; i__ <= i__2; ++i__) {
248 for (l = 1; l <= i__2; ++l) {
249 if (
b_ref(l, j) != 0.) {
250 temp = *alpha *
b_ref(l, j);
252 for (i__ = 1; i__ <= i__3; ++i__) {
265 for (j = 1; j <= i__1; ++j) {
267 for (i__ = 1; i__ <= i__2; ++i__) {
270 for (l = 1; l <= i__3; ++l) {
275 c___ref(i__, j) = *alpha * temp;
289 for (j = 1; j <= i__1; ++j) {
292 for (i__ = 1; i__ <= i__2; ++i__) {
296 }
else if (*beta != 1.) {
298 for (i__ = 1; i__ <= i__2; ++i__) {
304 for (l = 1; l <= i__2; ++l) {
305 if (
b_ref(j, l) != 0.) {
306 temp = *alpha *
b_ref(j, l);
308 for (i__ = 1; i__ <= i__3; ++i__) {
321 for (j = 1; j <= i__1; ++j) {
323 for (i__ = 1; i__ <= i__2; ++i__) {
326 for (l = 1; l <= i__3; ++l) {
331 c___ref(i__, j) = *alpha * temp;
int integer
Definition: template_blas_common.h:40
#define maxMACRO(a, b)
Definition: template_blas_common.h:45
int template_blas_erbla(const char *srname, integer *info)
Definition: template_blas_common.cc:146
#define c___ref(a_1, a_2)
bool logical
Definition: template_blas_common.h:41
int template_blas_gemm(const char *transa, const char *transb, const integer *m, const integer *n, const integer *k, const Treal *alpha, const Treal *a, const integer *lda, const Treal *b, const integer *ldb, const Treal *beta, Treal *c__, const integer *ldc)
Definition: template_blas_gemm.h:43
logical template_blas_lsame(const char *ca, const char *cb)
Definition: template_blas_common.cc:46