OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
c_dblas3.c File Reference
#include <stdlib.h>
#include "cblas.h"
#include "cblas_test.h"

Go to the source code of this file.

Macros

#define TEST_COL_MJR   0
#define TEST_ROW_MJR   1
#define UNDEFINED   -1

Functions

void F77_dgemm (int *layout, char *transpa, char *transpb, int *m, int *n, int *k, double *alpha, double *a, int *lda, double *b, int *ldb, double *beta, double *c, int *ldc)
void F77_dsymm (int *layout, char *rtlf, char *uplow, int *m, int *n, double *alpha, double *a, int *lda, double *b, int *ldb, double *beta, double *c, int *ldc)
void F77_dsyrk (int *layout, char *uplow, char *transp, int *n, int *k, double *alpha, double *a, int *lda, double *beta, double *c, int *ldc)
void F77_dsyr2k (int *layout, char *uplow, char *transp, int *n, int *k, double *alpha, double *a, int *lda, double *b, int *ldb, double *beta, double *c, int *ldc)
void F77_dtrmm (int *layout, char *rtlf, char *uplow, char *transp, char *diagn, int *m, int *n, double *alpha, double *a, int *lda, double *b, int *ldb)
void F77_dtrsm (int *layout, char *rtlf, char *uplow, char *transp, char *diagn, int *m, int *n, double *alpha, double *a, int *lda, double *b, int *ldb)

Macro Definition Documentation

◆ TEST_COL_MJR

#define TEST_COL_MJR   0

Definition at line 10 of file c_dblas3.c.

◆ TEST_ROW_MJR

#define TEST_ROW_MJR   1

Definition at line 11 of file c_dblas3.c.

◆ UNDEFINED

#define UNDEFINED   -1

Definition at line 12 of file c_dblas3.c.

Function Documentation

◆ F77_dgemm()

void F77_dgemm ( int * layout,
char * transpa,
char * transpb,
int * m,
int * n,
int * k,
double * alpha,
double * a,
int * lda,
double * b,
int * ldb,
double * beta,
double * c,
int * ldc )

Definition at line 14 of file c_dblas3.c.

16 {
17
18 double *A, *B, *C;
19 int i,j,LDA, LDB, LDC;
20 CBLAS_TRANSPOSE transa, transb;
21
22 get_transpose_type(transpa, &transa);
23 get_transpose_type(transpb, &transb);
24
25 if (*layout == TEST_ROW_MJR) {
26 if (transa == CblasNoTrans) {
27 LDA = *k+1;
28 A = (double *)malloc( (*m)*LDA*sizeof( double ) );
29 for( i=0; i<*m; i++ )
30 for( j=0; j<*k; j++ )
31 A[i*LDA+j]=a[j*(*lda)+i];
32 }
33 else {
34 LDA = *m+1;
35 A = ( double* )malloc( LDA*(*k)*sizeof( double ) );
36 for( i=0; i<*k; i++ )
37 for( j=0; j<*m; j++ )
38 A[i*LDA+j]=a[j*(*lda)+i];
39 }
40 if (transb == CblasNoTrans) {
41 LDB = *n+1;
42 B = ( double* )malloc( (*k)*LDB*sizeof( double ) );
43 for( i=0; i<*k; i++ )
44 for( j=0; j<*n; j++ )
45 B[i*LDB+j]=b[j*(*ldb)+i];
46 }
47 else {
48 LDB = *k+1;
49 B = ( double* )malloc( LDB*(*n)*sizeof( double ) );
50 for( i=0; i<*n; i++ )
51 for( j=0; j<*k; j++ )
52 B[i*LDB+j]=b[j*(*ldb)+i];
53 }
54 LDC = *n+1;
55 C = ( double* )malloc( (*m)*LDC*sizeof( double ) );
56 for( j=0; j<*n; j++ )
57 for( i=0; i<*m; i++ )
58 C[i*LDC+j]=c[j*(*ldc)+i];
59
60 cblas_dgemm( CblasRowMajor, transa, transb, *m, *n, *k, *alpha, A, LDA,
61 B, LDB, *beta, C, LDC );
62 for( j=0; j<*n; j++ )
63 for( i=0; i<*m; i++ )
64 c[j*(*ldc)+i]=C[i*LDC+j];
65 free(A);
66 free(B);
67 free(C);
68 }
69 else if (*layout == TEST_COL_MJR)
70 cblas_dgemm( CblasColMajor, transa, transb, *m, *n, *k, *alpha, a, *lda,
71 b, *ldb, *beta, c, *ldc );
72 else
73 cblas_dgemm( UNDEFINED, transa, transb, *m, *n, *k, *alpha, a, *lda,
74 b, *ldb, *beta, c, *ldc );
75}
CBLAS_TRANSPOSE
Definition cblas.h:28
@ CblasNoTrans
Definition cblas.h:28
@ CblasColMajor
Definition cblas.h:27
@ CblasRowMajor
Definition cblas.h:27
void cblas_dgemm(CBLAS_LAYOUT layout, CBLAS_TRANSPOSE TransA, CBLAS_TRANSPOSE TransB, const CBLAS_INT M, const CBLAS_INT N, const CBLAS_INT K, const double alpha, const double *A, const CBLAS_INT lda, const double *B, const CBLAS_INT ldb, const double beta, double *C, const CBLAS_INT ldc)
Definition cblas_dgemm.c:12
#define UNDEFINED
Definition cblas_test.h:19
#define TEST_ROW_MJR
Definition cblas_test.h:12
#define TEST_COL_MJR
Definition cblas_test.h:16
void get_transpose_type(char *type, CBLAS_TRANSPOSE *trans)
Definition auxiliary.c:8
#define alpha
Definition eval.h:35
#define LDB
#define LDA
n

◆ F77_dsymm()

void F77_dsymm ( int * layout,
char * rtlf,
char * uplow,
int * m,
int * n,
double * alpha,
double * a,
int * lda,
double * b,
int * ldb,
double * beta,
double * c,
int * ldc )

Definition at line 76 of file c_dblas3.c.

78 {
79
80 double *A, *B, *C;
81 int i,j,LDA, LDB, LDC;
82 CBLAS_UPLO uplo;
83 CBLAS_SIDE side;
84
85 get_uplo_type(uplow,&uplo);
86 get_side_type(rtlf,&side);
87
88 if (*layout == TEST_ROW_MJR) {
89 if (side == CblasLeft) {
90 LDA = *m+1;
91 A = ( double* )malloc( (*m)*LDA*sizeof( double ) );
92 for( i=0; i<*m; i++ )
93 for( j=0; j<*m; j++ )
94 A[i*LDA+j]=a[j*(*lda)+i];
95 }
96 else{
97 LDA = *n+1;
98 A = ( double* )malloc( (*n)*LDA*sizeof( double ) );
99 for( i=0; i<*n; i++ )
100 for( j=0; j<*n; j++ )
101 A[i*LDA+j]=a[j*(*lda)+i];
102 }
103 LDB = *n+1;
104 B = ( double* )malloc( (*m)*LDB*sizeof( double ) );
105 for( i=0; i<*m; i++ )
106 for( j=0; j<*n; j++ )
107 B[i*LDB+j]=b[j*(*ldb)+i];
108 LDC = *n+1;
109 C = ( double* )malloc( (*m)*LDC*sizeof( double ) );
110 for( j=0; j<*n; j++ )
111 for( i=0; i<*m; i++ )
112 C[i*LDC+j]=c[j*(*ldc)+i];
113 cblas_dsymm( CblasRowMajor, side, uplo, *m, *n, *alpha, A, LDA, B, LDB,
114 *beta, C, LDC );
115 for( j=0; j<*n; j++ )
116 for( i=0; i<*m; i++ )
117 c[j*(*ldc)+i]=C[i*LDC+j];
118 free(A);
119 free(B);
120 free(C);
121 }
122 else if (*layout == TEST_COL_MJR)
123 cblas_dsymm( CblasColMajor, side, uplo, *m, *n, *alpha, a, *lda, b, *ldb,
124 *beta, c, *ldc );
125 else
126 cblas_dsymm( UNDEFINED, side, uplo, *m, *n, *alpha, a, *lda, b, *ldb,
127 *beta, c, *ldc );
128}
void cblas_dsymm(CBLAS_LAYOUT layout, CBLAS_SIDE Side, CBLAS_UPLO Uplo, const CBLAS_INT M, const CBLAS_INT N, const double alpha, const double *A, const CBLAS_INT lda, const double *B, const CBLAS_INT ldb, const double beta, double *C, const CBLAS_INT ldc)
Definition cblas_dsymm.c:12
CBLAS_UPLO
Definition cblas.h:29
CBLAS_SIDE
Definition cblas.h:31
@ CblasLeft
Definition cblas.h:31
void get_side_type(char *type, CBLAS_SIDE *side)
Definition auxiliary.c:32
void get_uplo_type(char *type, CBLAS_UPLO *uplo)
Definition auxiliary.c:18

◆ F77_dsyr2k()

void F77_dsyr2k ( int * layout,
char * uplow,
char * transp,
int * n,
int * k,
double * alpha,
double * a,
int * lda,
double * b,
int * ldb,
double * beta,
double * c,
int * ldc )

Definition at line 178 of file c_dblas3.c.

180 {
181 int i,j,LDA,LDB,LDC;
182 double *A, *B, *C;
183 CBLAS_UPLO uplo;
184 CBLAS_TRANSPOSE trans;
185
186 get_uplo_type(uplow,&uplo);
187 get_transpose_type(transp,&trans);
188
189 if (*layout == TEST_ROW_MJR) {
190 if (trans == CblasNoTrans) {
191 LDA = *k+1;
192 LDB = *k+1;
193 A = ( double* )malloc( (*n)*LDA*sizeof( double ) );
194 B = ( double* )malloc( (*n)*LDB*sizeof( double ) );
195 for( i=0; i<*n; i++ )
196 for( j=0; j<*k; j++ ) {
197 A[i*LDA+j]=a[j*(*lda)+i];
198 B[i*LDB+j]=b[j*(*ldb)+i];
199 }
200 }
201 else {
202 LDA = *n+1;
203 LDB = *n+1;
204 A = ( double* )malloc( LDA*(*k)*sizeof( double ) );
205 B = ( double* )malloc( LDB*(*k)*sizeof( double ) );
206 for( i=0; i<*k; i++ )
207 for( j=0; j<*n; j++ ){
208 A[i*LDA+j]=a[j*(*lda)+i];
209 B[i*LDB+j]=b[j*(*ldb)+i];
210 }
211 }
212 LDC = *n+1;
213 C = ( double* )malloc( (*n)*LDC*sizeof( double ) );
214 for( i=0; i<*n; i++ )
215 for( j=0; j<*n; j++ )
216 C[i*LDC+j]=c[j*(*ldc)+i];
217 cblas_dsyr2k(CblasRowMajor, uplo, trans, *n, *k, *alpha, A, LDA,
218 B, LDB, *beta, C, LDC );
219 for( j=0; j<*n; j++ )
220 for( i=0; i<*n; i++ )
221 c[j*(*ldc)+i]=C[i*LDC+j];
222 free(A);
223 free(B);
224 free(C);
225 }
226 else if (*layout == TEST_COL_MJR)
227 cblas_dsyr2k(CblasColMajor, uplo, trans, *n, *k, *alpha, a, *lda,
228 b, *ldb, *beta, c, *ldc );
229 else
230 cblas_dsyr2k(UNDEFINED, uplo, trans, *n, *k, *alpha, a, *lda,
231 b, *ldb, *beta, c, *ldc );
232}
void cblas_dsyr2k(CBLAS_LAYOUT layout, CBLAS_UPLO Uplo, CBLAS_TRANSPOSE Trans, const CBLAS_INT N, const CBLAS_INT K, const double alpha, const double *A, const CBLAS_INT lda, const double *B, const CBLAS_INT ldb, const double beta, double *C, const CBLAS_INT ldc)

◆ F77_dsyrk()

void F77_dsyrk ( int * layout,
char * uplow,
char * transp,
int * n,
int * k,
double * alpha,
double * a,
int * lda,
double * beta,
double * c,
int * ldc )

Definition at line 130 of file c_dblas3.c.

132 {
133
134 int i,j,LDA,LDC;
135 double *A, *C;
136 CBLAS_UPLO uplo;
137 CBLAS_TRANSPOSE trans;
138
139 get_uplo_type(uplow,&uplo);
140 get_transpose_type(transp,&trans);
141
142 if (*layout == TEST_ROW_MJR) {
143 if (trans == CblasNoTrans) {
144 LDA = *k+1;
145 A = ( double* )malloc( (*n)*LDA*sizeof( double ) );
146 for( i=0; i<*n; i++ )
147 for( j=0; j<*k; j++ )
148 A[i*LDA+j]=a[j*(*lda)+i];
149 }
150 else{
151 LDA = *n+1;
152 A = ( double* )malloc( (*k)*LDA*sizeof( double ) );
153 for( i=0; i<*k; i++ )
154 for( j=0; j<*n; j++ )
155 A[i*LDA+j]=a[j*(*lda)+i];
156 }
157 LDC = *n+1;
158 C = ( double* )malloc( (*n)*LDC*sizeof( double ) );
159 for( i=0; i<*n; i++ )
160 for( j=0; j<*n; j++ )
161 C[i*LDC+j]=c[j*(*ldc)+i];
162 cblas_dsyrk(CblasRowMajor, uplo, trans, *n, *k, *alpha, A, LDA, *beta,
163 C, LDC );
164 for( j=0; j<*n; j++ )
165 for( i=0; i<*n; i++ )
166 c[j*(*ldc)+i]=C[i*LDC+j];
167 free(A);
168 free(C);
169 }
170 else if (*layout == TEST_COL_MJR)
171 cblas_dsyrk(CblasColMajor, uplo, trans, *n, *k, *alpha, a, *lda, *beta,
172 c, *ldc );
173 else
174 cblas_dsyrk(UNDEFINED, uplo, trans, *n, *k, *alpha, a, *lda, *beta,
175 c, *ldc );
176}
void cblas_dsyrk(CBLAS_LAYOUT layout, CBLAS_UPLO Uplo, CBLAS_TRANSPOSE Trans, const CBLAS_INT N, const CBLAS_INT K, const double alpha, const double *A, const CBLAS_INT lda, const double beta, double *C, const CBLAS_INT ldc)
Definition cblas_dsyrk.c:12

◆ F77_dtrmm()

void F77_dtrmm ( int * layout,
char * rtlf,
char * uplow,
char * transp,
char * diagn,
int * m,
int * n,
double * alpha,
double * a,
int * lda,
double * b,
int * ldb )

Definition at line 233 of file c_dblas3.c.

235 {
236 int i,j,LDA,LDB;
237 double *A, *B;
238 CBLAS_SIDE side;
239 CBLAS_DIAG diag;
240 CBLAS_UPLO uplo;
241 CBLAS_TRANSPOSE trans;
242
243 get_uplo_type(uplow,&uplo);
244 get_transpose_type(transp,&trans);
245 get_diag_type(diagn,&diag);
246 get_side_type(rtlf,&side);
247
248 if (*layout == TEST_ROW_MJR) {
249 if (side == CblasLeft) {
250 LDA = *m+1;
251 A = ( double* )malloc( (*m)*LDA*sizeof( double ) );
252 for( i=0; i<*m; i++ )
253 for( j=0; j<*m; j++ )
254 A[i*LDA+j]=a[j*(*lda)+i];
255 }
256 else{
257 LDA = *n+1;
258 A = ( double* )malloc( (*n)*LDA*sizeof( double ) );
259 for( i=0; i<*n; i++ )
260 for( j=0; j<*n; j++ )
261 A[i*LDA+j]=a[j*(*lda)+i];
262 }
263 LDB = *n+1;
264 B = ( double* )malloc( (*m)*LDB*sizeof( double ) );
265 for( i=0; i<*m; i++ )
266 for( j=0; j<*n; j++ )
267 B[i*LDB+j]=b[j*(*ldb)+i];
268 cblas_dtrmm(CblasRowMajor, side, uplo, trans, diag, *m, *n, *alpha,
269 A, LDA, B, LDB );
270 for( j=0; j<*n; j++ )
271 for( i=0; i<*m; i++ )
272 b[j*(*ldb)+i]=B[i*LDB+j];
273 free(A);
274 free(B);
275 }
276 else if (*layout == TEST_COL_MJR)
277 cblas_dtrmm(CblasColMajor, side, uplo, trans, diag, *m, *n, *alpha,
278 a, *lda, b, *ldb);
279 else
280 cblas_dtrmm(UNDEFINED, side, uplo, trans, diag, *m, *n, *alpha,
281 a, *lda, b, *ldb);
282}
void cblas_dtrmm(CBLAS_LAYOUT layout, CBLAS_SIDE Side, CBLAS_UPLO Uplo, CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, const CBLAS_INT M, const CBLAS_INT N, const double alpha, const double *A, const CBLAS_INT lda, double *B, const CBLAS_INT ldb)
Definition cblas_dtrmm.c:12
CBLAS_DIAG
Definition cblas.h:30
void get_diag_type(char *type, CBLAS_DIAG *diag)
Definition auxiliary.c:25

◆ F77_dtrsm()

void F77_dtrsm ( int * layout,
char * rtlf,
char * uplow,
char * transp,
char * diagn,
int * m,
int * n,
double * alpha,
double * a,
int * lda,
double * b,
int * ldb )

Definition at line 284 of file c_dblas3.c.

286 {
287 int i,j,LDA,LDB;
288 double *A, *B;
289 CBLAS_SIDE side;
290 CBLAS_DIAG diag;
291 CBLAS_UPLO uplo;
292 CBLAS_TRANSPOSE trans;
293
294 get_uplo_type(uplow,&uplo);
295 get_transpose_type(transp,&trans);
296 get_diag_type(diagn,&diag);
297 get_side_type(rtlf,&side);
298
299 if (*layout == TEST_ROW_MJR) {
300 if (side == CblasLeft) {
301 LDA = *m+1;
302 A = ( double* )malloc( (*m)*LDA*sizeof( double ) );
303 for( i=0; i<*m; i++ )
304 for( j=0; j<*m; j++ )
305 A[i*LDA+j]=a[j*(*lda)+i];
306 }
307 else{
308 LDA = *n+1;
309 A = ( double* )malloc( (*n)*LDA*sizeof( double ) );
310 for( i=0; i<*n; i++ )
311 for( j=0; j<*n; j++ )
312 A[i*LDA+j]=a[j*(*lda)+i];
313 }
314 LDB = *n+1;
315 B = ( double* )malloc( (*m)*LDB*sizeof( double ) );
316 for( i=0; i<*m; i++ )
317 for( j=0; j<*n; j++ )
318 B[i*LDB+j]=b[j*(*ldb)+i];
319 cblas_dtrsm(CblasRowMajor, side, uplo, trans, diag, *m, *n, *alpha,
320 A, LDA, B, LDB );
321 for( j=0; j<*n; j++ )
322 for( i=0; i<*m; i++ )
323 b[j*(*ldb)+i]=B[i*LDB+j];
324 free(A);
325 free(B);
326 }
327 else if (*layout == TEST_COL_MJR)
328 cblas_dtrsm(CblasColMajor, side, uplo, trans, diag, *m, *n, *alpha,
329 a, *lda, b, *ldb);
330 else
331 cblas_dtrsm(UNDEFINED, side, uplo, trans, diag, *m, *n, *alpha,
332 a, *lda, b, *ldb);
333}
void cblas_dtrsm(CBLAS_LAYOUT layout, CBLAS_SIDE Side, CBLAS_UPLO Uplo, CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, const CBLAS_INT M, const CBLAS_INT N, const double alpha, const double *A, const CBLAS_INT lda, double *B, const CBLAS_INT ldb)
Definition cblas_dtrsm.c:12