libflame revision_anchor
Functions
bl1_symv.c File Reference

(r)

Functions

void bl1_ssymv (uplo1_t uplo, int m, float *alpha, float *a, int a_rs, int a_cs, float *x, int incx, float *beta, float *y, int incy)
 
void bl1_dsymv (uplo1_t uplo, int m, double *alpha, double *a, int a_rs, int a_cs, double *x, int incx, double *beta, double *y, int incy)
 
void bl1_csymv (uplo1_t uplo, int m, scomplex *alpha, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy)
 
void bl1_zsymv (uplo1_t uplo, int m, dcomplex *alpha, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy)
 
void bl1_ssymv_blas (uplo1_t uplo, int m, float *alpha, float *a, int lda, float *x, int incx, float *beta, float *y, int incy)
 
void bl1_dsymv_blas (uplo1_t uplo, int m, double *alpha, double *a, int lda, double *x, int incx, double *beta, double *y, int incy)
 
void bl1_csymv_blas (uplo1_t uplo, int m, scomplex *alpha, scomplex *a, int lda, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy)
 
void bl1_zsymv_blas (uplo1_t uplo, int m, dcomplex *alpha, dcomplex *a, int lda, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy)
 

Function Documentation

◆ bl1_csymv()

void bl1_csymv ( uplo1_t  uplo,
int  m,
scomplex alpha,
scomplex a,
int  a_rs,
int  a_cs,
scomplex x,
int  incx,
scomplex beta,
scomplex y,
int  incy 
)
100{
101 scomplex* a_save = a;
102 int a_rs_save = a_rs;
103 int a_cs_save = a_cs;
104 int lda, inca;
105
106 // Return early if possible.
107 if ( bl1_zero_dim1( m ) ) return;
108
109 // If necessary, allocate, initialize, and use a temporary contiguous
110 // copy of the matrix rather than the original matrix.
112 m,
113 m,
115 &a, &a_rs, &a_cs );
116
117 // Initialize with values assuming column-major storage.
118 lda = a_cs;
119 inca = a_rs;
120
121 // If A is a row-major matrix, then we can use the underlying column-major
122 // BLAS implementation by fiddling with the parameters.
123 if ( bl1_is_row_storage( a_rs, a_cs ) )
124 {
126 bl1_toggle_uplo( uplo );
127 }
128
129 bl1_csymv_blas( uplo,
130 m,
131 alpha,
132 a, lda,
133 x, incx,
134 beta,
135 y, incy );
136
137 // Free the temporary contiguous matrix.
139 &a, &a_rs, &a_cs );
140}
int i
Definition bl1_axmyv2.c:145
void bl1_csymv_blas(uplo1_t uplo, int m, scomplex *alpha, scomplex *a, int lda, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy)
Definition bl1_symv.c:249
int bl1_is_row_storage(int rs, int cs)
Definition bl1_is.c:95
int bl1_zero_dim1(int m)
Definition bl1_is.c:113
void bl1_cfree_contigm(scomplex *a_save, int a_rs_save, int a_cs_save, scomplex **a, int *a_rs, int *a_cs)
Definition bl1_free_contigm.c:45
void bl1_ccreate_contigmr(uplo1_t uplo, int m, int n, scomplex *a_save, int a_rs_save, int a_cs_save, scomplex **a, int *a_rs, int *a_cs)
Definition bl1_create_contigmr.c:77
Definition blis_type_defs.h:133

References bl1_ccreate_contigmr(), bl1_cfree_contigm(), bl1_csymv_blas(), bl1_is_row_storage(), and bl1_zero_dim1().

Referenced by FLA_Symv_external().

◆ bl1_csymv_blas()

void bl1_csymv_blas ( uplo1_t  uplo,
int  m,
scomplex alpha,
scomplex a,
int  lda,
scomplex x,
int  incx,
scomplex beta,
scomplex y,
int  incy 
)
250{
253 int n = 1;
254 int ldx = m;
255 int ldy = m;
256
257#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
261
264
265 x_copy = bl1_callocv( m );
266 y_copy = bl1_callocv( m );
267
269 m,
270 x, incx,
271 x_copy, 1 );
272
274 m,
275 y, incy,
276 y_copy, 1 );
277
281 m,
282 n,
283 alpha,
284 a, lda,
285 x_copy, ldx,
286 beta,
287 y_copy, ldy );
288
290 m,
291 y_copy, 1,
292 y, incy );
293
294 bl1_cfree( x_copy );
295 bl1_cfree( y_copy );
296
297#else
298 char blas_side;
299 char blas_uplo;
300
303
304 x_copy = bl1_callocv( m );
305 y_copy = bl1_callocv( m );
306
308 m,
309 x, incx,
310 x_copy, 1 );
311
313 m,
314 y, incy,
315 y_copy, 1 );
316
318 &blas_uplo,
319 &m,
320 &n,
321 alpha,
322 a, &lda,
323 x_copy, &ldx,
324 beta,
325 y_copy, &ldy );
326
328 m,
329 y_copy, 1,
330 y, incy );
331
332 bl1_cfree( x_copy );
333 bl1_cfree( y_copy );
334#endif
335}
void bl1_ccopyv(conj1_t conj, int m, scomplex *x, int incx, scomplex *y, int incy)
Definition bl1_copyv.c:49
void F77_csymm(char *side, char *uplo, int *m, int *n, scomplex *alpha, scomplex *a, int *lda, scomplex *b, int *ldb, scomplex *beta, scomplex *c, int *ldc)
CBLAS_ORDER
Definition blis_prototypes_cblas.h:17
@ CblasColMajor
Definition blis_prototypes_cblas.h:17
CBLAS_UPLO
Definition blis_prototypes_cblas.h:19
CBLAS_SIDE
Definition blis_prototypes_cblas.h:21
void cblas_csymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, const int N, const void *alpha, const void *A, const int lda, const void *B, const int ldb, const void *beta, void *C, const int ldc)
void bl1_param_map_to_netlib_side(side1_t blis_side, void *blas_side)
Definition bl1_param_map.c:71
void bl1_param_map_to_netlib_uplo(uplo1_t blis_uplo, void *blas_uplo)
Definition bl1_param_map.c:47
void bl1_cfree(scomplex *p)
Definition bl1_free.c:40
scomplex * bl1_callocv(unsigned int n_elem)
Definition bl1_allocv.c:40
@ BLIS1_NO_CONJUGATE
Definition blis_type_defs.h:81
@ BLIS1_LEFT
Definition blis_type_defs.h:68

References bl1_callocv(), bl1_ccopyv(), bl1_cfree(), bl1_param_map_to_netlib_side(), bl1_param_map_to_netlib_uplo(), BLIS1_LEFT, BLIS1_NO_CONJUGATE, cblas_csymm(), CblasColMajor, and F77_csymm().

Referenced by bl1_csymv().

◆ bl1_dsymv()

void bl1_dsymv ( uplo1_t  uplo,
int  m,
double alpha,
double a,
int  a_rs,
int  a_cs,
double x,
int  incx,
double beta,
double y,
int  incy 
)
57{
58 double* a_save = a;
59 int a_rs_save = a_rs;
60 int a_cs_save = a_cs;
61 int lda, inca;
62
63 // Return early if possible.
64 if ( bl1_zero_dim1( m ) ) return;
65
66 // If necessary, allocate, initialize, and use a temporary contiguous
67 // copy of the matrix rather than the original matrix.
69 m,
70 m,
72 &a, &a_rs, &a_cs );
73
74 // Initialize with values assuming column-major storage.
75 lda = a_cs;
76 inca = a_rs;
77
78 // If A is a row-major matrix, then we can use the underlying column-major
79 // BLAS implementation by fiddling with the parameters.
81 {
83 bl1_toggle_uplo( uplo );
84 }
85
86 bl1_dsymv_blas( uplo,
87 m,
88 alpha,
89 a, lda,
90 x, incx,
91 beta,
92 y, incy );
93
94 // Free the temporary contiguous matrix.
96 &a, &a_rs, &a_cs );
97}
void bl1_dsymv_blas(uplo1_t uplo, int m, double *alpha, double *a, int lda, double *x, int incx, double *beta, double *y, int incy)
Definition bl1_symv.c:218
void bl1_dfree_contigm(double *a_save, int a_rs_save, int a_cs_save, double **a, int *a_rs, int *a_cs)
Definition bl1_free_contigm.c:29
void bl1_dcreate_contigmr(uplo1_t uplo, int m, int n, double *a_save, int a_rs_save, int a_cs_save, double **a, int *a_rs, int *a_cs)
Definition bl1_create_contigmr.c:45

References bl1_dcreate_contigmr(), bl1_dfree_contigm(), bl1_dsymv_blas(), bl1_is_row_storage(), and bl1_zero_dim1().

Referenced by bl1_dhemv(), FLA_Hemv_external(), FLA_Hemvc_external(), FLA_Symv_external(), FLA_Tridiag_UT_l_step_ofd_var2(), FLA_Tridiag_UT_l_step_ofd_var3(), FLA_Tridiag_UT_l_step_opd_var1(), FLA_Tridiag_UT_l_step_opd_var2(), and FLA_Tridiag_UT_l_step_opd_var3().

◆ bl1_dsymv_blas()

void bl1_dsymv_blas ( uplo1_t  uplo,
int  m,
double alpha,
double a,
int  lda,
double x,
int  incx,
double beta,
double y,
int  incy 
)
219{
220#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
223
225
228 m,
229 *alpha,
230 a, lda,
231 x, incx,
232 *beta,
233 y, incy );
234#else
235 char blas_uplo;
236
238
240 &m,
241 alpha,
242 a, &lda,
243 x, &incx,
244 beta,
245 y, &incy );
246#endif
247}
void F77_dsymv(char *uplo, int *n, double *alpha, double *a, int *lda, double *x, int *incx, double *beta, double *y, int *incy)
void cblas_dsymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const double alpha, const double *A, const int lda, const double *X, const int incX, const double beta, double *Y, const int incY)

References bl1_param_map_to_netlib_uplo(), cblas_dsymv(), CblasColMajor, and F77_dsymv().

Referenced by bl1_dsymv().

◆ bl1_ssymv()

void bl1_ssymv ( uplo1_t  uplo,
int  m,
float alpha,
float a,
int  a_rs,
int  a_cs,
float x,
int  incx,
float beta,
float y,
int  incy 
)
14{
15 float* a_save = a;
16 int a_rs_save = a_rs;
17 int a_cs_save = a_cs;
18 int lda, inca;
19
20 // Return early if possible.
21 if ( bl1_zero_dim1( m ) ) return;
22
23 // If necessary, allocate, initialize, and use a temporary contiguous
24 // copy of the matrix rather than the original matrix.
26 m,
27 m,
29 &a, &a_rs, &a_cs );
30
31 // Initialize with values assuming column-major storage.
32 lda = a_cs;
33 inca = a_rs;
34
35 // If A is a row-major matrix, then we can use the underlying column-major
36 // BLAS implementation by fiddling with the parameters.
38 {
40 bl1_toggle_uplo( uplo );
41 }
42
43 bl1_ssymv_blas( uplo,
44 m,
45 alpha,
46 a, lda,
47 x, incx,
48 beta,
49 y, incy );
50
51 // Free the temporary contiguous matrix.
53 &a, &a_rs, &a_cs );
54}
void bl1_ssymv_blas(uplo1_t uplo, int m, float *alpha, float *a, int lda, float *x, int incx, float *beta, float *y, int incy)
Definition bl1_symv.c:187
void bl1_sfree_contigm(float *a_save, int a_rs_save, int a_cs_save, float **a, int *a_rs, int *a_cs)
Definition bl1_free_contigm.c:13
void bl1_screate_contigmr(uplo1_t uplo, int m, int n, float *a_save, int a_rs_save, int a_cs_save, float **a, int *a_rs, int *a_cs)
Definition bl1_create_contigmr.c:13

References bl1_is_row_storage(), bl1_screate_contigmr(), bl1_sfree_contigm(), bl1_ssymv_blas(), and bl1_zero_dim1().

Referenced by bl1_shemv(), FLA_Hemv_external(), FLA_Hemvc_external(), FLA_Symv_external(), FLA_Tridiag_UT_l_step_ofs_var2(), FLA_Tridiag_UT_l_step_ofs_var3(), FLA_Tridiag_UT_l_step_ops_var1(), FLA_Tridiag_UT_l_step_ops_var2(), and FLA_Tridiag_UT_l_step_ops_var3().

◆ bl1_ssymv_blas()

void bl1_ssymv_blas ( uplo1_t  uplo,
int  m,
float alpha,
float a,
int  lda,
float x,
int  incx,
float beta,
float y,
int  incy 
)
188{
189#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
192
194
197 m,
198 *alpha,
199 a, lda,
200 x, incx,
201 *beta,
202 y, incy );
203#else
204 char blas_uplo;
205
207
209 &m,
210 alpha,
211 a, &lda,
212 x, &incx,
213 beta,
214 y, &incy );
215#endif
216}
void F77_ssymv(char *uplo, int *n, float *alpha, float *a, int *lda, float *x, int *incx, float *beta, float *y, int *incy)
void cblas_ssymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const float alpha, const float *A, const int lda, const float *X, const int incX, const float beta, float *Y, const int incY)

References bl1_param_map_to_netlib_uplo(), cblas_ssymv(), CblasColMajor, and F77_ssymv().

Referenced by bl1_ssymv().

◆ bl1_zsymv()

void bl1_zsymv ( uplo1_t  uplo,
int  m,
dcomplex alpha,
dcomplex a,
int  a_rs,
int  a_cs,
dcomplex x,
int  incx,
dcomplex beta,
dcomplex y,
int  incy 
)
143{
144 dcomplex* a_save = a;
145 int a_rs_save = a_rs;
146 int a_cs_save = a_cs;
147 int lda, inca;
148
149 // Return early if possible.
150 if ( bl1_zero_dim1( m ) ) return;
151
152 // If necessary, allocate, initialize, and use a temporary contiguous
153 // copy of the matrix rather than the original matrix.
155 m,
156 m,
158 &a, &a_rs, &a_cs );
159
160 // Initialize with values assuming column-major storage.
161 lda = a_cs;
162 inca = a_rs;
163
164 // If A is a row-major matrix, then we can use the underlying column-major
165 // BLAS implementation by fiddling with the parameters.
166 if ( bl1_is_row_storage( a_rs, a_cs ) )
167 {
169 bl1_toggle_uplo( uplo );
170 }
171
172 bl1_zsymv_blas( uplo,
173 m,
174 alpha,
175 a, lda,
176 x, incx,
177 beta,
178 y, incy );
179
180 // Free the temporary contiguous matrix.
182 &a, &a_rs, &a_cs );
183}
void bl1_zsymv_blas(uplo1_t uplo, int m, dcomplex *alpha, dcomplex *a, int lda, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy)
Definition bl1_symv.c:337
void bl1_zcreate_contigmr(uplo1_t uplo, int m, int n, dcomplex *a_save, int a_rs_save, int a_cs_save, dcomplex **a, int *a_rs, int *a_cs)
Definition bl1_create_contigmr.c:109
void bl1_zfree_contigm(dcomplex *a_save, int a_rs_save, int a_cs_save, dcomplex **a, int *a_rs, int *a_cs)
Definition bl1_free_contigm.c:61
Definition blis_type_defs.h:138

References bl1_is_row_storage(), bl1_zcreate_contigmr(), bl1_zero_dim1(), bl1_zfree_contigm(), and bl1_zsymv_blas().

Referenced by FLA_Symv_external().

◆ bl1_zsymv_blas()

void bl1_zsymv_blas ( uplo1_t  uplo,
int  m,
dcomplex alpha,
dcomplex a,
int  lda,
dcomplex x,
int  incx,
dcomplex beta,
dcomplex y,
int  incy 
)
338{
341 int n = 1;
342 int ldx = m;
343 int ldy = m;
344
345#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
349
352
353 x_copy = bl1_zallocv( m );
354 y_copy = bl1_zallocv( m );
355
357 m,
358 x, incx,
359 x_copy, 1 );
360
362 m,
363 y, incy,
364 y_copy, 1 );
365
369 m,
370 n,
371 alpha,
372 a, lda,
373 x_copy, ldx,
374 beta,
375 y_copy, ldy );
376
378 m,
379 y_copy, 1,
380 y, incy );
381
382 bl1_zfree( x_copy );
383 bl1_zfree( y_copy );
384
385#else
386 char blas_side;
387 char blas_uplo;
388
391
392 x_copy = bl1_zallocv( m );
393 y_copy = bl1_zallocv( m );
394
396 m,
397 x, incx,
398 x_copy, 1 );
399
401 m,
402 y, incy,
403 y_copy, 1 );
404
406 &blas_uplo,
407 &m,
408 &n,
409 alpha,
410 a, &lda,
411 x_copy, &ldx,
412 beta,
413 y_copy, &ldy );
414
416 m,
417 y_copy, 1,
418 y, incy );
419
420 bl1_zfree( x_copy );
421 bl1_zfree( y_copy );
422#endif
423}
void bl1_zcopyv(conj1_t conj, int m, dcomplex *x, int incx, dcomplex *y, int incy)
Definition bl1_copyv.c:63
void F77_zsymm(char *side, char *uplo, int *m, int *n, dcomplex *alpha, dcomplex *a, int *lda, dcomplex *b, int *ldb, dcomplex *beta, dcomplex *c, int *ldc)
void cblas_zsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, const int N, const void *alpha, const void *A, const int lda, const void *B, const int ldb, const void *beta, void *C, const int ldc)
dcomplex * bl1_zallocv(unsigned int n_elem)
Definition bl1_allocv.c:45
void bl1_zfree(dcomplex *p)
Definition bl1_free.c:45

References bl1_param_map_to_netlib_side(), bl1_param_map_to_netlib_uplo(), bl1_zallocv(), bl1_zcopyv(), bl1_zfree(), BLIS1_LEFT, BLIS1_NO_CONJUGATE, cblas_zsymm(), CblasColMajor, and F77_zsymm().

Referenced by bl1_zsymv().