LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages

◆ F77_cgemmtr()

void F77_cgemmtr ( CBLAS_INT * layout,
char * uplop,
char * transpa,
char * transpb,
CBLAS_INT * n,
CBLAS_INT * k,
CBLAS_TEST_COMPLEX * alpha,
CBLAS_TEST_COMPLEX * a,
CBLAS_INT * lda,
CBLAS_TEST_COMPLEX * b,
CBLAS_INT * ldb,
CBLAS_TEST_COMPLEX * beta,
CBLAS_TEST_COMPLEX * c,
CBLAS_INT * ldc )

Definition at line 95 of file c_cblas3.c.

98 {
99
100 CBLAS_TEST_COMPLEX *A, *B, *C;
101 CBLAS_INT i,j,LDA, LDB, LDC;
102 CBLAS_TRANSPOSE transa, transb;
103 CBLAS_UPLO uplo;
104
105 get_transpose_type(transpa, &transa);
106 get_transpose_type(transpb, &transb);
107 get_uplo_type(uplop, &uplo);
108
109 if (*layout == TEST_ROW_MJR) {
110 if (transa == CblasNoTrans) {
111 LDA = *k+1;
112 A=(CBLAS_TEST_COMPLEX*)malloc((*n)*LDA*sizeof(CBLAS_TEST_COMPLEX));
113 for( i=0; i<*n; i++ )
114 for( j=0; j<*k; j++ ) {
115 A[i*LDA+j].real=a[j*(*lda)+i].real;
116 A[i*LDA+j].imag=a[j*(*lda)+i].imag;
117 }
118 }
119 else {
120 LDA = *n+1;
121 A=(CBLAS_TEST_COMPLEX* )malloc(LDA*(*k)*sizeof(CBLAS_TEST_COMPLEX));
122 for( i=0; i<*k; i++ )
123 for( j=0; j<*n; j++ ) {
124 A[i*LDA+j].real=a[j*(*lda)+i].real;
125 A[i*LDA+j].imag=a[j*(*lda)+i].imag;
126 }
127 }
128
129 if (transb == CblasNoTrans) {
130 LDB = *n+1;
131 B=(CBLAS_TEST_COMPLEX* )malloc((*k)*LDB*sizeof(CBLAS_TEST_COMPLEX) );
132 for( i=0; i<*k; i++ )
133 for( j=0; j<*n; j++ ) {
134 B[i*LDB+j].real=b[j*(*ldb)+i].real;
135 B[i*LDB+j].imag=b[j*(*ldb)+i].imag;
136 }
137 }
138 else {
139 LDB = *k+1;
140 B=(CBLAS_TEST_COMPLEX* )malloc(LDB*(*n)*sizeof(CBLAS_TEST_COMPLEX));
141 for( i=0; i<*n; i++ )
142 for( j=0; j<*k; j++ ) {
143 B[i*LDB+j].real=b[j*(*ldb)+i].real;
144 B[i*LDB+j].imag=b[j*(*ldb)+i].imag;
145 }
146 }
147
148 LDC = *n+1;
149 C=(CBLAS_TEST_COMPLEX* )malloc((*n)*LDC*sizeof(CBLAS_TEST_COMPLEX));
150 for( j=0; j<*n; j++ )
151 for( i=0; i<*n; i++ ) {
152 C[i*LDC+j].real=c[j*(*ldc)+i].real;
153 C[i*LDC+j].imag=c[j*(*ldc)+i].imag;
154 }
155 cblas_cgemmtr( CblasRowMajor, uplo, transa, transb, *n, *k, alpha, A, LDA,
156 B, LDB, beta, C, LDC );
157 for( j=0; j<*n; j++ )
158 for( i=0; i<*n; i++ ) {
159 c[j*(*ldc)+i].real=C[i*LDC+j].real;
160 c[j*(*ldc)+i].imag=C[i*LDC+j].imag;
161 }
162 free(A);
163 free(B);
164 free(C);
165 }
166 else if (*layout == TEST_COL_MJR)
167 cblas_cgemmtr( CblasColMajor, uplo, transa, transb, *n, *k, alpha, a, *lda,
168 b, *ldb, beta, c, *ldc );
169 else
170 cblas_cgemmtr( UNDEFINED, uplo, transa, transb, *n, *k, alpha, a, *lda,
171 b, *ldb, beta, c, *ldc );
172}
#define UNDEFINED
Definition c_cblas3.c:12
#define TEST_ROW_MJR
Definition c_cblas3.c:11
#define TEST_COL_MJR
Definition c_cblas3.c:10
CBLAS_UPLO
Definition cblas.h:41
CBLAS_TRANSPOSE
Definition cblas.h:40
@ CblasNoTrans
Definition cblas.h:40
@ CblasColMajor
Definition cblas.h:39
@ CblasRowMajor
Definition cblas.h:39
#define CBLAS_INT
Definition cblas.h:24
void cblas_cgemmtr(CBLAS_LAYOUT layout, CBLAS_UPLO Uplo, CBLAS_TRANSPOSE TransA, CBLAS_TRANSPOSE TransB, const CBLAS_INT N, const CBLAS_INT K, const void *alpha, const void *A, const CBLAS_INT lda, const void *B, const CBLAS_INT ldb, const void *beta, void *C, const CBLAS_INT ldc)
void get_uplo_type(char *type, CBLAS_UPLO *uplo)
Definition auxiliary.c:18
void get_transpose_type(char *type, CBLAS_TRANSPOSE *trans)
Definition auxiliary.c:8
Here is the call graph for this function: