libflame revision_anchor
Functions
bl1_trmvsx.c File Reference

(r)

Functions

void bl1_strmvsx (uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *alpha, float *a, int a_rs, int a_cs, float *x, int incx, float *beta, float *y, int incy)
 
void bl1_dtrmvsx (uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *alpha, double *a, int a_rs, int a_cs, double *x, int incx, double *beta, double *y, int incy)
 
void bl1_ctrmvsx (uplo1_t uplo, trans1_t trans, diag1_t diag, int m, scomplex *alpha, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy)
 
void bl1_ztrmvsx (uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *alpha, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy)
 

Function Documentation

◆ bl1_ctrmvsx()

void bl1_ctrmvsx ( uplo1_t  uplo,
trans1_t  trans,
diag1_t  diag,
int  m,
scomplex alpha,
scomplex a,
int  a_rs,
int  a_cs,
scomplex x,
int  incx,
scomplex beta,
scomplex y,
int  incy 
)
130{
131 scomplex* a_save = a;
132 int a_rs_save = a_rs;
133 int a_cs_save = a_cs;
135 int incx_temp;
136
137 // Return early if possible.
138 if ( bl1_zero_dim1( m ) ) return;
139
140 // If necessary, allocate, initialize, and use a temporary contiguous
141 // copy of the matrix rather than the original matrix.
143 m,
144 m,
146 &a, &a_rs, &a_cs );
147
148 // Allocate a temporary vector conformal to x.
149 x_temp = bl1_callocv( m );
150 incx_temp = 1;
151
152 // Copy x to a temporary vector.
154 m,
155 x, incx,
156 x_temp, incx_temp );
157
158 // Perform the operation, storing the result to x_temp.
159 bl1_ctrmv( uplo,
160 trans,
161 diag,
162 m,
163 a, a_rs, a_cs,
164 x_temp, incx_temp );
165
166 // Scale y by beta.
168 m,
169 beta,
170 y, incy );
171
172 // Axpy the partial result in x_temp into y.
174 m,
175 alpha,
177 y, incy );
178
179 // Free the temporary vector.
180 bl1_cfree( x_temp );
181
182 // Free the temporary contiguous matrix.
184 &a, &a_rs, &a_cs );
185}
int i
Definition bl1_axmyv2.c:145
void bl1_caxpyv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy)
Definition bl1_axpyv.c:29
void bl1_ccopyv(conj1_t conj, int m, scomplex *x, int incx, scomplex *y, int incy)
Definition bl1_copyv.c:49
void bl1_cscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition bl1_scalv.c:46
void bl1_ctrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx)
Definition bl1_trmv.c:99
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_cfree(scomplex *p)
Definition bl1_free.c:40
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
scomplex * bl1_callocv(unsigned int n_elem)
Definition bl1_allocv.c:40
@ BLIS1_NO_CONJUGATE
Definition blis_type_defs.h:81
Definition blis_type_defs.h:133

References bl1_callocv(), bl1_caxpyv(), bl1_ccopyv(), bl1_ccreate_contigmr(), bl1_cfree(), bl1_cfree_contigm(), bl1_cscalv(), bl1_ctrmv(), bl1_zero_dim1(), and BLIS1_NO_CONJUGATE.

Referenced by FLA_Hess_UT_step_opc_var5().

◆ bl1_dtrmvsx()

void bl1_dtrmvsx ( uplo1_t  uplo,
trans1_t  trans,
diag1_t  diag,
int  m,
double alpha,
double a,
int  a_rs,
int  a_cs,
double x,
int  incx,
double beta,
double y,
int  incy 
)
72{
73 double* a_save = a;
74 int a_rs_save = a_rs;
75 int a_cs_save = a_cs;
76 double* x_temp;
77 int incx_temp;
78
79 // Return early if possible.
80 if ( bl1_zero_dim1( m ) ) return;
81
82 // If necessary, allocate, initialize, and use a temporary contiguous
83 // copy of the matrix rather than the original matrix.
85 m,
86 m,
88 &a, &a_rs, &a_cs );
89
90 // Allocate a temporary vector conformal to x.
91 x_temp = bl1_dallocv( m );
92 incx_temp = 1;
93
94 // Copy x to a temporary vector.
96 m,
97 x, incx,
99
100 // Perform the operation, storing the result to x_temp.
101 bl1_dtrmv( uplo,
102 trans,
103 diag,
104 m,
105 a, a_rs, a_cs,
106 x_temp, incx_temp );
107
108 // Scale y by beta.
110 m,
111 beta,
112 y, incy );
113
114 // Axpy the partial result in x_temp into y.
116 m,
117 alpha,
119 y, incy );
120
121 // Free the temporary vector.
122 bl1_dfree( x_temp );
123
124 // Free the temporary contiguous matrix.
126 &a, &a_rs, &a_cs );
127}
void bl1_daxpyv(conj1_t conj, int n, double *alpha, double *x, int incx, double *y, int incy)
Definition bl1_axpyv.c:21
void bl1_dcopyv(conj1_t conj, int m, double *x, int incx, double *y, int incy)
Definition bl1_copyv.c:42
void bl1_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition bl1_scalv.c:24
void bl1_dtrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *a, int a_rs, int a_cs, double *x, int incx)
Definition bl1_trmv.c:56
double * bl1_dallocv(unsigned int n_elem)
Definition bl1_allocv.c:35
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
void bl1_dfree(double *p)
Definition bl1_free.c:35

References bl1_dallocv(), bl1_daxpyv(), bl1_dcopyv(), bl1_dcreate_contigmr(), bl1_dfree(), bl1_dfree_contigm(), bl1_dscalv(), bl1_dtrmv(), bl1_zero_dim1(), and BLIS1_NO_CONJUGATE.

Referenced by FLA_Hess_UT_step_opd_var5().

◆ bl1_strmvsx()

void bl1_strmvsx ( uplo1_t  uplo,
trans1_t  trans,
diag1_t  diag,
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 float* x_temp;
19 int incx_temp;
20
21 // Return early if possible.
22 if ( bl1_zero_dim1( m ) ) return;
23
24 // If necessary, allocate, initialize, and use a temporary contiguous
25 // copy of the matrix rather than the original matrix.
27 m,
28 m,
30 &a, &a_rs, &a_cs );
31
32 // Allocate a temporary vector conformal to x.
33 x_temp = bl1_sallocv( m );
34 incx_temp = 1;
35
36 // Copy x to a temporary vector.
38 m,
39 x, incx,
41
42 // Perform the operation, storing the result to x_temp.
43 bl1_strmv( uplo,
44 trans,
45 diag,
46 m,
47 a, a_rs, a_cs,
49
50 // Scale y by beta.
52 m,
53 beta,
54 y, incy );
55
56 // Axpy the partial result in x_temp into y.
58 m,
59 alpha,
61 y, incy );
62
63 // Free the temporary vector.
65
66 // Free the temporary contiguous matrix.
68 &a, &a_rs, &a_cs );
69}
void bl1_saxpyv(conj1_t conj, int n, float *alpha, float *x, int incx, float *y, int incy)
Definition bl1_axpyv.c:13
void bl1_scopyv(conj1_t conj, int m, float *x, int incx, float *y, int incy)
Definition bl1_copyv.c:35
void bl1_sscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition bl1_scalv.c:13
void bl1_strmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *a, int a_rs, int a_cs, float *x, int incx)
Definition bl1_trmv.c:13
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
float * bl1_sallocv(unsigned int n_elem)
Definition bl1_allocv.c:30
void bl1_sfree(float *p)
Definition bl1_free.c:30
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_sallocv(), bl1_saxpyv(), bl1_scopyv(), bl1_screate_contigmr(), bl1_sfree(), bl1_sfree_contigm(), bl1_sscalv(), bl1_strmv(), bl1_zero_dim1(), and BLIS1_NO_CONJUGATE.

Referenced by FLA_Hess_UT_step_ops_var5().

◆ bl1_ztrmvsx()

void bl1_ztrmvsx ( uplo1_t  uplo,
trans1_t  trans,
diag1_t  diag,
int  m,
dcomplex alpha,
dcomplex a,
int  a_rs,
int  a_cs,
dcomplex x,
int  incx,
dcomplex beta,
dcomplex y,
int  incy 
)
188{
189 dcomplex* a_save = a;
190 int a_rs_save = a_rs;
191 int a_cs_save = a_cs;
193 int incx_temp;
194
195 // Return early if possible.
196 if ( bl1_zero_dim1( m ) ) return;
197
198 // If necessary, allocate, initialize, and use a temporary contiguous
199 // copy of the matrix rather than the original matrix.
201 m,
202 m,
204 &a, &a_rs, &a_cs );
205
206 // Allocate a temporary vector conformal to x.
207 x_temp = bl1_zallocv( m );
208 incx_temp = 1;
209
210 // Copy x to a temporary vector.
212 m,
213 x, incx,
214 x_temp, incx_temp );
215
216 // Perform the operation, storing the result to x_temp.
217 bl1_ztrmv( uplo,
218 trans,
219 diag,
220 m,
221 a, a_rs, a_cs,
222 x_temp, incx_temp );
223
224 // Scale y by beta.
226 m,
227 beta,
228 y, incy );
229
230 // Axpy the partial result in x_temp into y.
232 m,
233 alpha,
235 y, incy );
236
237 // Free the temporary vector.
238 bl1_zfree( x_temp );
239
240 // Free the temporary contiguous matrix.
242 &a, &a_rs, &a_cs );
243}
void bl1_zaxpyv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy)
Definition bl1_axpyv.c:60
void bl1_zcopyv(conj1_t conj, int m, dcomplex *x, int incx, dcomplex *y, int incy)
Definition bl1_copyv.c:63
void bl1_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition bl1_scalv.c:72
void bl1_ztrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx)
Definition bl1_trmv.c:177
dcomplex * bl1_zallocv(unsigned int n_elem)
Definition bl1_allocv.c:45
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(dcomplex *p)
Definition bl1_free.c:45
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_zallocv(), bl1_zaxpyv(), bl1_zcopyv(), bl1_zcreate_contigmr(), bl1_zero_dim1(), bl1_zfree(), bl1_zfree_contigm(), bl1_zscalv(), bl1_ztrmv(), and BLIS1_NO_CONJUGATE.

Referenced by FLA_Hess_UT_step_opz_var5().