v0.9.0
Macros | Functions
cblas_dgemm.c File Reference
#include "cblas.h"
#include "cblas_f77.h"

Go to the source code of this file.

Macros

#define F77_TA   &TA
 
#define F77_TB   &TB
 
#define F77_M   M
 
#define F77_N   N
 
#define F77_K   K
 
#define F77_lda   lda
 
#define F77_ldb   ldb
 
#define F77_ldc   ldc
 

Functions

void cblas_dgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const double alpha, const double *A, const int lda, const double *B, const int ldb, const double beta, double *C, const int ldc)
 

Macro Definition Documentation

◆ F77_K

#define F77_K   K

◆ F77_lda

#define F77_lda   lda

◆ F77_ldb

#define F77_ldb   ldb

◆ F77_ldc

#define F77_ldc   ldc

◆ F77_M

#define F77_M   M

◆ F77_N

#define F77_N   N

◆ F77_TA

#define F77_TA   &TA

◆ F77_TB

#define F77_TB   &TB

Function Documentation

◆ cblas_dgemm()

void cblas_dgemm ( const enum CBLAS_ORDER  Order,
const enum CBLAS_TRANSPOSE  TransA,
const enum CBLAS_TRANSPOSE  TransB,
const int  M,
const int  N,
const int  K,
const double  alpha,
const double A,
const int  lda,
const double B,
const int  ldb,
const double  beta,
double C,
const int  ldc 
)

Definition at line 12 of file cblas_dgemm.c.

17 {
18  char TA, TB;
19 #ifdef F77_CHAR
20  F77_CHAR F77_TA, F77_TB;
21 #else
22  #define F77_TA &TA
23  #define F77_TB &TB
24 #endif
25 
26 #ifdef F77_INT
27  F77_INT F77_M=M, F77_N=N, F77_K=K, F77_lda=lda, F77_ldb=ldb;
28  F77_INT F77_ldc=ldc;
29 #else
30  #define F77_M M
31  #define F77_N N
32  #define F77_K K
33  #define F77_lda lda
34  #define F77_ldb ldb
35  #define F77_ldc ldc
36 #endif
37 
38  extern int CBLAS_CallFromC;
39  extern int RowMajorStrg;
40  RowMajorStrg = 0;
41  CBLAS_CallFromC = 1;
42 
43  if( Order == CblasColMajor )
44  {
45  if(TransA == CblasTrans) TA='T';
46  else if ( TransA == CblasConjTrans ) TA='C';
47  else if ( TransA == CblasNoTrans ) TA='N';
48  else
49  {
50  cblas_xerbla(2, "cblas_dgemm","Illegal TransA setting, %d\n", TransA);
51  CBLAS_CallFromC = 0;
52  RowMajorStrg = 0;
53  return;
54  }
55 
56  if(TransB == CblasTrans) TB='T';
57  else if ( TransB == CblasConjTrans ) TB='C';
58  else if ( TransB == CblasNoTrans ) TB='N';
59  else
60  {
61  cblas_xerbla(3, "cblas_dgemm","Illegal TransB setting, %d\n", TransB);
62  CBLAS_CallFromC = 0;
63  RowMajorStrg = 0;
64  return;
65  }
66 
67  #ifdef F77_CHAR
68  F77_TA = C2F_CHAR(&TA);
69  F77_TB = C2F_CHAR(&TB);
70  #endif
71 
72  F77_dgemm(F77_TA, F77_TB, &F77_M, &F77_N, &F77_K, &alpha, A,
73  &F77_lda, B, &F77_ldb, &beta, C, &F77_ldc);
74  } else if (Order == CblasRowMajor)
75  {
76  RowMajorStrg = 1;
77  if(TransA == CblasTrans) TB='T';
78  else if ( TransA == CblasConjTrans ) TB='C';
79  else if ( TransA == CblasNoTrans ) TB='N';
80  else
81  {
82  cblas_xerbla(2, "cblas_dgemm","Illegal TransA setting, %d\n", TransA);
83  CBLAS_CallFromC = 0;
84  RowMajorStrg = 0;
85  return;
86  }
87  if(TransB == CblasTrans) TA='T';
88  else if ( TransB == CblasConjTrans ) TA='C';
89  else if ( TransB == CblasNoTrans ) TA='N';
90  else
91  {
92  cblas_xerbla(2, "cblas_dgemm","Illegal TransB setting, %d\n", TransB);
93  CBLAS_CallFromC = 0;
94  RowMajorStrg = 0;
95  return;
96  }
97  #ifdef F77_CHAR
98  F77_TA = C2F_CHAR(&TA);
99  F77_TB = C2F_CHAR(&TB);
100  #endif
101 
102  F77_dgemm(F77_TA, F77_TB, &F77_N, &F77_M, &F77_K, &alpha, B,
103  &F77_ldb, A, &F77_lda, &beta, C, &F77_ldc);
104  }
105  else cblas_xerbla(1, "cblas_dgemm", "Illegal Order setting, %d\n", Order);
106  CBLAS_CallFromC = 0;
107  RowMajorStrg = 0;
108  return;
109 }
#define F77_ldc
#define F77_K
#define F77_lda
int CBLAS_CallFromC
Definition: cblas_globals.c:1
#define F77_ldb
#define F77_TA
#define F77_M
void cblas_xerbla(int p, const char *rout, const char *form,...)
Definition: cblas_xerbla.c:8
void F77_dgemm(FCHAR, FCHAR, FINT, FINT, FINT, const double *, const double *, FINT, const double *, FINT, const double *, double *, FINT)
#define F77_N
const int N
Definition: speed_test.cpp:3
#define F77_TB
int RowMajorStrg
Definition: cblas_globals.c:2