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 
)

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().

130 {
131  scomplex* a_save = a;
132  int a_rs_save = a_rs;
133  int a_cs_save = a_cs;
134  scomplex* x_temp;
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.
142  bl1_ccreate_contigmr( uplo,
143  m,
144  m,
145  a_save, a_rs_save, a_cs_save,
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,
176  x_temp, incx_temp,
177  y, incy );
178 
179  // Free the temporary vector.
180  bl1_cfree( x_temp );
181 
182  // Free the temporary contiguous matrix.
183  bl1_cfree_contigm( a_save, a_rs_save, a_cs_save,
184  &a, &a_rs, &a_cs );
185 }
void bl1_cscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition: bl1_scalv.c:46
void bl1_caxpyv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy)
Definition: bl1_axpyv.c:29
Definition: blis_type_defs.h:81
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
int bl1_zero_dim1(int m)
Definition: bl1_is.c:113
Definition: blis_type_defs.h:132
void bl1_cfree(scomplex *p)
Definition: bl1_free.c:40
scomplex * bl1_callocv(unsigned int n_elem)
Definition: bl1_allocv.c:40
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
void bl1_ccopyv(conj1_t conj, int m, scomplex *x, int incx, scomplex *y, int incy)
Definition: bl1_copyv.c:49
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

◆ 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 
)

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().

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,
87  a_save, a_rs_save, a_cs_save,
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,
98  x_temp, incx_temp );
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,
118  x_temp, incx_temp,
119  y, incy );
120 
121  // Free the temporary vector.
122  bl1_dfree( x_temp );
123 
124  // Free the temporary contiguous matrix.
125  bl1_dfree_contigm( a_save, a_rs_save, a_cs_save,
126  &a, &a_rs, &a_cs );
127 }
Definition: blis_type_defs.h:81
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
void bl1_dfree(double *p)
Definition: bl1_free.c:35
double * bl1_dallocv(unsigned int n_elem)
Definition: bl1_allocv.c:35
int bl1_zero_dim1(int m)
Definition: bl1_is.c:113
void bl1_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition: bl1_scalv.c:24
void bl1_dcopyv(conj1_t conj, int m, double *x, int incx, double *y, int incy)
Definition: bl1_copyv.c:42
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_daxpyv(conj1_t conj, int n, double *alpha, double *x, int incx, double *y, int incy)
Definition: bl1_axpyv.c:21

◆ 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 
)

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().

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,
29  a_save, a_rs_save, a_cs_save,
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,
40  x_temp, incx_temp );
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,
48  x_temp, incx_temp );
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,
60  x_temp, incx_temp,
61  y, incy );
62 
63  // Free the temporary vector.
64  bl1_sfree( x_temp );
65 
66  // Free the temporary contiguous matrix.
67  bl1_sfree_contigm( a_save, a_rs_save, a_cs_save,
68  &a, &a_rs, &a_cs );
69 }
Definition: blis_type_defs.h:81
void bl1_sfree(float *p)
Definition: bl1_free.c:30
int bl1_zero_dim1(int m)
Definition: bl1_is.c:113
float * bl1_sallocv(unsigned int n_elem)
Definition: bl1_allocv.c:30
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_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_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_sscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition: bl1_scalv.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

◆ 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 
)

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().

188 {
189  dcomplex* a_save = a;
190  int a_rs_save = a_rs;
191  int a_cs_save = a_cs;
192  dcomplex* x_temp;
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.
200  bl1_zcreate_contigmr( uplo,
201  m,
202  m,
203  a_save, a_rs_save, a_cs_save,
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,
234  x_temp, incx_temp,
235  y, incy );
236 
237  // Free the temporary vector.
238  bl1_zfree( x_temp );
239 
240  // Free the temporary contiguous matrix.
241  bl1_zfree_contigm( a_save, a_rs_save, a_cs_save,
242  &a, &a_rs, &a_cs );
243 }
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_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition: bl1_scalv.c:72
Definition: blis_type_defs.h:81
void bl1_zfree(dcomplex *p)
Definition: bl1_free.c:45
int bl1_zero_dim1(int m)
Definition: bl1_is.c:113
dcomplex * bl1_zallocv(unsigned int n_elem)
Definition: bl1_allocv.c:45
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
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
void bl1_zcopyv(conj1_t conj, int m, dcomplex *x, int incx, dcomplex *y, int incy)
Definition: bl1_copyv.c:63
Definition: blis_type_defs.h:137
void bl1_zaxpyv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy)
Definition: bl1_axpyv.c:60