libflame  revision_anchor
Functions
bl1_ger.c File Reference

(r)

Functions

void bl1_sger (conj1_t conjx, conj1_t conjy, int m, int n, float *alpha, float *x, int incx, float *y, int incy, float *a, int a_rs, int a_cs)
 
void bl1_dger (conj1_t conjx, conj1_t conjy, int m, int n, double *alpha, double *x, int incx, double *y, int incy, double *a, int a_rs, int a_cs)
 
void bl1_cger (conj1_t conjx, conj1_t conjy, int m, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *a, int a_rs, int a_cs)
 
void bl1_zger (conj1_t conjx, conj1_t conjy, int m, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int a_rs, int a_cs)
 
void bl1_sger_blas (int m, int n, float *alpha, float *x, int incx, float *y, int incy, float *a, int lda)
 
void bl1_dger_blas (int m, int n, double *alpha, double *x, int incx, double *y, int incy, double *a, int lda)
 
void bl1_cgerc_blas (int m, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *a, int lda)
 
void bl1_cgeru_blas (int m, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *a, int lda)
 
void bl1_zgerc_blas (int m, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int lda)
 
void bl1_zgeru_blas (int m, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int lda)
 

Function Documentation

◆ bl1_cger()

void bl1_cger ( conj1_t  conjx,
conj1_t  conjy,
int  m,
int  n,
scomplex alpha,
scomplex x,
int  incx,
scomplex y,
int  incy,
scomplex a,
int  a_rs,
int  a_cs 
)

References bl1_callocv(), bl1_ccopyv(), bl1_ccreate_contigm(), bl1_cfree(), bl1_cfree_saved_contigm(), bl1_cgerc_blas(), bl1_cgeru_blas(), bl1_is_conj(), bl1_is_row_storage(), bl1_zero_dim2(), and BLIS1_CONJUGATE.

Referenced by FLA_Apply_H2_UT_l_opc_var1(), FLA_Apply_H2_UT_r_opc_var1(), FLA_Apply_HUD_UT_l_opc_var1(), FLA_Bidiag_UT_u_step_ofc_var3(), FLA_Bidiag_UT_u_step_opc_var2(), FLA_Bidiag_UT_u_step_opc_var3(), FLA_Eig_gest_il_opc_var3(), FLA_Eig_gest_il_opc_var4(), FLA_Eig_gest_iu_opc_var3(), FLA_Eig_gest_iu_opc_var4(), FLA_Eig_gest_nl_opc_var4(), FLA_Eig_gest_nu_opc_var4(), FLA_Ger_external(), FLA_Gerc_external(), FLA_Hess_UT_step_ofc_var2(), FLA_Hess_UT_step_ofc_var3(), FLA_Hess_UT_step_ofc_var4(), FLA_Hess_UT_step_opc_var2(), FLA_Hess_UT_step_opc_var3(), FLA_Hess_UT_step_opc_var4(), FLA_LU_nopiv_opc_var5(), FLA_LU_piv_opc_var5(), FLA_Lyap_h_opc_var2(), FLA_Lyap_n_opc_var2(), FLA_SA_LU_unb(), FLA_Trinv_ln_opc_var3(), FLA_Trinv_ln_opc_var4(), FLA_Trinv_lu_opc_var3(), FLA_Trinv_lu_opc_var4(), FLA_Trinv_un_opc_var3(), FLA_Trinv_un_opc_var4(), FLA_Trinv_uu_opc_var3(), and FLA_Trinv_uu_opc_var4().

112 {
113  int m_save = m;
114  int n_save = n;
115  scomplex* a_save = a;
116  int a_rs_save = a_rs;
117  int a_cs_save = a_cs;
118  scomplex* x_conj;
119  int incx_conj;
120  int lda, inca;
121 
122  // Return early if possible.
123  if ( bl1_zero_dim2( m, n ) ) return;
124 
125  // If necessary, allocate, initialize, and use a temporary contiguous
126  // copy of the matrix rather than the original matrix.
128  n,
129  a_save, a_rs_save, a_cs_save,
130  &a, &a_rs, &a_cs );
131 
132  // Initialize with values assuming column-major storage.
133  lda = a_cs;
134  inca = a_rs;
135 
136  // If A is a row-major matrix, then we can use the underlying column-major
137  // BLAS implementation by fiddling with the parameters.
138  if ( bl1_is_row_storage( a_rs, a_cs ) )
139  {
140  bl1_swap_ints( m, n );
141  bl1_swap_ints( lda, inca );
142  bl1_swap_ints( incx, incy );
143  bl1_swap_conj( conjx, conjy );
144  bl1_cswap_pointers( x, y );
145  }
146 
147  // Initialize with values assuming no conjugation of x.
148  x_conj = x;
149  incx_conj = incx;
150 
151  // We need a temporary vector for the cases when x is conjugated.
152  if ( bl1_is_conj( conjx ) )
153  {
154  x_conj = bl1_callocv( m );
155  incx_conj = 1;
156 
158  m,
159  x, incx,
160  x_conj, incx_conj );
161  }
162 
163  // Conjugation of y is supported in the BLAS.
164  if ( bl1_is_conj( conjy ) )
165  {
166  bl1_cgerc_blas( m,
167  n,
168  alpha,
169  x_conj, incx_conj,
170  y, incy,
171  a, lda );
172  }
173  else
174  {
175  bl1_cgeru_blas( m,
176  n,
177  alpha,
178  x_conj, incx_conj,
179  y, incy,
180  a, lda );
181  }
182 
183  // Free the temporary conjugated x vector.
184  if ( bl1_is_conj( conjx ) )
185  bl1_cfree( x_conj );
186 
187  // Free the temporary contiguous matrix.
188  bl1_cfree_saved_contigm( m_save,
189  n_save,
190  a_save, a_rs_save, a_cs_save,
191  &a, &a_rs, &a_cs );
192 }
int bl1_is_conj(conj1_t conj)
Definition: bl1_is.c:42
void bl1_cfree_saved_contigm(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_free_saved_contigm.c:59
int bl1_zero_dim2(int m, int n)
Definition: bl1_is.c:118
void bl1_ccreate_contigm(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_contigm.c:81
void bl1_cgerc_blas(int m, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *a, int lda)
Definition: bl1_ger.c:323
Definition: blis_type_defs.h:82
int bl1_is_row_storage(int rs, int cs)
Definition: bl1_is.c:95
Definition: blis_type_defs.h:132
void bl1_cgeru_blas(int m, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *a, int lda)
Definition: bl1_ger.c:345
void bl1_cfree(scomplex *p)
Definition: bl1_free.c:40
scomplex * bl1_callocv(unsigned int n_elem)
Definition: bl1_allocv.c:40
void bl1_ccopyv(conj1_t conj, int m, scomplex *x, int incx, scomplex *y, int incy)
Definition: bl1_copyv.c:49

◆ bl1_cgerc_blas()

void bl1_cgerc_blas ( int  m,
int  n,
scomplex alpha,
scomplex x,
int  incx,
scomplex y,
int  incy,
scomplex a,
int  lda 
)

References cblas_cgerc(), CblasColMajor, and F77_cgerc().

Referenced by bl1_cger().

324 {
325 #ifdef BLIS1_ENABLE_CBLAS_INTERFACES
326  enum CBLAS_ORDER cblas_order = CblasColMajor;
327 
328  cblas_cgerc( cblas_order,
329  m,
330  n,
331  alpha,
332  x, incx,
333  y, incy,
334  a, lda );
335 #else
336  F77_cgerc ( &m,
337  &n,
338  alpha,
339  x, &incx,
340  y, &incy,
341  a, &lda );
342 #endif
343 }
CBLAS_ORDER
Definition: blis_prototypes_cblas.h:17
Definition: blis_prototypes_cblas.h:17
void F77_cgerc(int *m, int *n, scomplex *alpha, scomplex *x, int *incx, scomplex *y, int *incy, scomplex *a, int *lda)
void cblas_cgerc(const enum CBLAS_ORDER order, const int M, const int N, const void *alpha, const void *X, const int incX, const void *Y, const int incY, void *A, const int lda)

◆ bl1_cgeru_blas()

void bl1_cgeru_blas ( int  m,
int  n,
scomplex alpha,
scomplex x,
int  incx,
scomplex y,
int  incy,
scomplex a,
int  lda 
)

References cblas_cgeru(), CblasColMajor, and F77_cgeru().

Referenced by bl1_cger().

346 {
347 #ifdef BLIS1_ENABLE_CBLAS_INTERFACES
348  enum CBLAS_ORDER cblas_order = CblasColMajor;
349 
350  cblas_cgeru( cblas_order,
351  m,
352  n,
353  alpha,
354  x, incx,
355  y, incy,
356  a, lda );
357 #else
358  F77_cgeru ( &m,
359  &n,
360  alpha,
361  x, &incx,
362  y, &incy,
363  a, &lda );
364 #endif
365 }
CBLAS_ORDER
Definition: blis_prototypes_cblas.h:17
void F77_cgeru(int *m, int *n, scomplex *alpha, scomplex *x, int *incx, scomplex *y, int *incy, scomplex *a, int *lda)
Definition: blis_prototypes_cblas.h:17
void cblas_cgeru(const enum CBLAS_ORDER order, const int M, const int N, const void *alpha, const void *X, const int incX, const void *Y, const int incY, void *A, const int lda)

◆ bl1_dger()

void bl1_dger ( conj1_t  conjx,
conj1_t  conjy,
int  m,
int  n,
double *  alpha,
double *  x,
int  incx,
double *  y,
int  incy,
double *  a,
int  a_rs,
int  a_cs 
)

References bl1_dcreate_contigm(), bl1_dfree_saved_contigm(), bl1_dger_blas(), bl1_is_row_storage(), and bl1_zero_dim2().

Referenced by FLA_Apply_H2_UT_l_opd_var1(), FLA_Apply_H2_UT_r_opd_var1(), FLA_Apply_HUD_UT_l_opd_var1(), FLA_Bidiag_UT_u_step_ofd_var3(), FLA_Bidiag_UT_u_step_opd_var2(), FLA_Bidiag_UT_u_step_opd_var3(), FLA_Eig_gest_il_opd_var3(), FLA_Eig_gest_il_opd_var4(), FLA_Eig_gest_iu_opd_var3(), FLA_Eig_gest_iu_opd_var4(), FLA_Eig_gest_nl_opd_var4(), FLA_Eig_gest_nu_opd_var4(), FLA_Ger_external(), FLA_Gerc_external(), FLA_Hess_UT_step_ofd_var2(), FLA_Hess_UT_step_ofd_var3(), FLA_Hess_UT_step_ofd_var4(), FLA_Hess_UT_step_opd_var2(), FLA_Hess_UT_step_opd_var3(), FLA_Hess_UT_step_opd_var4(), FLA_LU_nopiv_opd_var5(), FLA_LU_piv_opd_var5(), FLA_Lyap_h_opd_var2(), FLA_Lyap_n_opd_var2(), FLA_SA_LU_unb(), FLA_Trinv_ln_opd_var3(), FLA_Trinv_ln_opd_var4(), FLA_Trinv_lu_opd_var3(), FLA_Trinv_lu_opd_var4(), FLA_Trinv_un_opd_var3(), FLA_Trinv_un_opd_var4(), FLA_Trinv_uu_opd_var3(), and FLA_Trinv_uu_opd_var4().

63 {
64  int m_save = m;
65  int n_save = n;
66  double* a_save = a;
67  int a_rs_save = a_rs;
68  int a_cs_save = a_cs;
69  int lda, inca;
70 
71  // Return early if possible.
72  if ( bl1_zero_dim2( m, n ) ) return;
73 
74  // If necessary, allocate, initialize, and use a temporary contiguous
75  // copy of the matrix rather than the original matrix.
77  n,
78  a_save, a_rs_save, a_cs_save,
79  &a, &a_rs, &a_cs );
80 
81  // Initialize with values assuming column-major storage.
82  lda = a_cs;
83  inca = a_rs;
84 
85  // If A is a row-major matrix, then we can use the underlying column-major
86  // BLAS implementation by fiddling with the parameters.
87  if ( bl1_is_row_storage( a_rs, a_cs ) )
88  {
89  bl1_swap_ints( m, n );
90  bl1_swap_ints( lda, inca );
91  bl1_swap_ints( incx, incy );
92  bl1_swap_conj( conjx, conjy );
93  bl1_dswap_pointers( x, y );
94  }
95 
96  // Initialize with values assuming no conjugation of x.
97  bl1_dger_blas( m,
98  n,
99  alpha,
100  x, incx,
101  y, incy,
102  a, lda );
103 
104  // Free the temporary contiguous matrix.
105  bl1_dfree_saved_contigm( m_save,
106  n_save,
107  a_save, a_rs_save, a_cs_save,
108  &a, &a_rs, &a_cs );
109 }
int bl1_zero_dim2(int m, int n)
Definition: bl1_is.c:118
void bl1_dcreate_contigm(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_contigm.c:47
void bl1_dger_blas(int m, int n, double *alpha, double *x, int incx, double *y, int incy, double *a, int lda)
Definition: bl1_ger.c:301
int bl1_is_row_storage(int rs, int cs)
Definition: bl1_is.c:95
void bl1_dfree_saved_contigm(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_free_saved_contigm.c:36

◆ bl1_dger_blas()

void bl1_dger_blas ( int  m,
int  n,
double *  alpha,
double *  x,
int  incx,
double *  y,
int  incy,
double *  a,
int  lda 
)

References cblas_dger(), CblasColMajor, and F77_dger().

Referenced by bl1_dger().

302 {
303 #ifdef BLIS1_ENABLE_CBLAS_INTERFACES
304  enum CBLAS_ORDER cblas_order = CblasColMajor;
305 
306  cblas_dger( cblas_order,
307  m,
308  n,
309  *alpha,
310  x, incx,
311  y, incy,
312  a, lda );
313 #else
314  F77_dger( &m,
315  &n,
316  alpha,
317  x, &incx,
318  y, &incy,
319  a, &lda );
320 #endif
321 }
CBLAS_ORDER
Definition: blis_prototypes_cblas.h:17
void F77_dger(int *m, int *n, double *alpha, double *x, int *incx, double *y, int *incy, double *a, int *lda)
Definition: blis_prototypes_cblas.h:17
void cblas_dger(const enum CBLAS_ORDER order, const int M, const int N, const double alpha, const double *X, const int incX, const double *Y, const int incY, double *A, const int lda)

◆ bl1_sger()

void bl1_sger ( conj1_t  conjx,
conj1_t  conjy,
int  m,
int  n,
float *  alpha,
float *  x,
int  incx,
float *  y,
int  incy,
float *  a,
int  a_rs,
int  a_cs 
)

References bl1_is_row_storage(), bl1_screate_contigm(), bl1_sfree_saved_contigm(), bl1_sger_blas(), and bl1_zero_dim2().

Referenced by FLA_Apply_H2_UT_l_ops_var1(), FLA_Apply_H2_UT_r_ops_var1(), FLA_Apply_HUD_UT_l_ops_var1(), FLA_Bidiag_UT_u_step_ofs_var3(), FLA_Bidiag_UT_u_step_ops_var2(), FLA_Bidiag_UT_u_step_ops_var3(), FLA_Eig_gest_il_ops_var3(), FLA_Eig_gest_il_ops_var4(), FLA_Eig_gest_iu_ops_var3(), FLA_Eig_gest_iu_ops_var4(), FLA_Eig_gest_nl_ops_var4(), FLA_Eig_gest_nu_ops_var4(), FLA_Ger_external(), FLA_Gerc_external(), FLA_Hess_UT_step_ofs_var2(), FLA_Hess_UT_step_ofs_var3(), FLA_Hess_UT_step_ofs_var4(), FLA_Hess_UT_step_ops_var2(), FLA_Hess_UT_step_ops_var3(), FLA_Hess_UT_step_ops_var4(), FLA_LU_nopiv_ops_var5(), FLA_LU_piv_ops_var5(), FLA_Lyap_h_ops_var2(), FLA_Lyap_n_ops_var2(), FLA_SA_LU_unb(), FLA_Trinv_ln_ops_var3(), FLA_Trinv_ln_ops_var4(), FLA_Trinv_lu_ops_var3(), FLA_Trinv_lu_ops_var4(), FLA_Trinv_un_ops_var3(), FLA_Trinv_un_ops_var4(), FLA_Trinv_uu_ops_var3(), and FLA_Trinv_uu_ops_var4().

14 {
15  int m_save = m;
16  int n_save = n;
17  float* a_save = a;
18  int a_rs_save = a_rs;
19  int a_cs_save = a_cs;
20  int lda, inca;
21 
22  // Return early if possible.
23  if ( bl1_zero_dim2( m, n ) ) return;
24 
25  // If necessary, allocate, initialize, and use a temporary contiguous
26  // copy of the matrix rather than the original matrix.
28  n,
29  a_save, a_rs_save, a_cs_save,
30  &a, &a_rs, &a_cs );
31 
32  // Initialize with values assuming column-major storage.
33  lda = a_cs;
34  inca = a_rs;
35 
36  // If A is a row-major matrix, then we can use the underlying column-major
37  // BLAS implementation by fiddling with the parameters.
38  if ( bl1_is_row_storage( a_rs, a_cs ) )
39  {
40  bl1_swap_ints( m, n );
41  bl1_swap_ints( lda, inca );
42  bl1_swap_ints( incx, incy );
43  bl1_swap_conj( conjx, conjy );
44  bl1_sswap_pointers( x, y );
45  }
46 
47  // Initialize with values assuming no conjugation of x.
48  bl1_sger_blas( m,
49  n,
50  alpha,
51  x, incx,
52  y, incy,
53  a, lda );
54 
55  // Free the temporary contiguous matrix.
57  n_save,
58  a_save, a_rs_save, a_cs_save,
59  &a, &a_rs, &a_cs );
60 }
void bl1_sfree_saved_contigm(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_free_saved_contigm.c:13
int bl1_zero_dim2(int m, int n)
Definition: bl1_is.c:118
void bl1_screate_contigm(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_contigm.c:13
int bl1_is_row_storage(int rs, int cs)
Definition: bl1_is.c:95
void bl1_sger_blas(int m, int n, float *alpha, float *x, int incx, float *y, int incy, float *a, int lda)
Definition: bl1_ger.c:279

◆ bl1_sger_blas()

void bl1_sger_blas ( int  m,
int  n,
float *  alpha,
float *  x,
int  incx,
float *  y,
int  incy,
float *  a,
int  lda 
)

References cblas_sger(), CblasColMajor, and F77_sger().

Referenced by bl1_sger().

280 {
281 #ifdef BLIS1_ENABLE_CBLAS_INTERFACES
282  enum CBLAS_ORDER cblas_order = CblasColMajor;
283 
284  cblas_sger( cblas_order,
285  m,
286  n,
287  *alpha,
288  x, incx,
289  y, incy,
290  a, lda );
291 #else
292  F77_sger( &m,
293  &n,
294  alpha,
295  x, &incx,
296  y, &incy,
297  a, &lda );
298 #endif
299 }
CBLAS_ORDER
Definition: blis_prototypes_cblas.h:17
void cblas_sger(const enum CBLAS_ORDER order, const int M, const int N, const float alpha, const float *X, const int incX, const float *Y, const int incY, float *A, const int lda)
void F77_sger(int *m, int *n, float *alpha, float *x, int *incx, float *y, int *incy, float *a, int *lda)
Definition: blis_prototypes_cblas.h:17

◆ bl1_zger()

void bl1_zger ( conj1_t  conjx,
conj1_t  conjy,
int  m,
int  n,
dcomplex alpha,
dcomplex x,
int  incx,
dcomplex y,
int  incy,
dcomplex a,
int  a_rs,
int  a_cs 
)

References bl1_is_conj(), bl1_is_row_storage(), bl1_zallocv(), bl1_zcopyv(), bl1_zcreate_contigm(), bl1_zero_dim2(), bl1_zfree(), bl1_zfree_saved_contigm(), bl1_zgerc_blas(), bl1_zgeru_blas(), and BLIS1_CONJUGATE.

Referenced by FLA_Apply_H2_UT_l_opz_var1(), FLA_Apply_H2_UT_r_opz_var1(), FLA_Apply_HUD_UT_l_opz_var1(), FLA_Bidiag_UT_u_step_ofz_var3(), FLA_Bidiag_UT_u_step_opz_var2(), FLA_Bidiag_UT_u_step_opz_var3(), FLA_Eig_gest_il_opz_var3(), FLA_Eig_gest_il_opz_var4(), FLA_Eig_gest_iu_opz_var3(), FLA_Eig_gest_iu_opz_var4(), FLA_Eig_gest_nl_opz_var4(), FLA_Eig_gest_nu_opz_var4(), FLA_Ger_external(), FLA_Gerc_external(), FLA_Hess_UT_step_ofz_var2(), FLA_Hess_UT_step_ofz_var3(), FLA_Hess_UT_step_ofz_var4(), FLA_Hess_UT_step_opz_var2(), FLA_Hess_UT_step_opz_var3(), FLA_Hess_UT_step_opz_var4(), FLA_LU_nopiv_opz_var5(), FLA_LU_piv_opz_var5(), FLA_Lyap_h_opz_var2(), FLA_Lyap_n_opz_var2(), FLA_SA_LU_unb(), FLA_Trinv_ln_opz_var3(), FLA_Trinv_ln_opz_var4(), FLA_Trinv_lu_opz_var3(), FLA_Trinv_lu_opz_var4(), FLA_Trinv_un_opz_var3(), FLA_Trinv_un_opz_var4(), FLA_Trinv_uu_opz_var3(), and FLA_Trinv_uu_opz_var4().

195 {
196  int m_save = m;
197  int n_save = n;
198  dcomplex* a_save = a;
199  int a_rs_save = a_rs;
200  int a_cs_save = a_cs;
201  dcomplex* x_conj;
202  int incx_conj;
203  int lda, inca;
204 
205  // Return early if possible.
206  if ( bl1_zero_dim2( m, n ) ) return;
207 
208  // If necessary, allocate, initialize, and use a temporary contiguous
209  // copy of the matrix rather than the original matrix.
211  n,
212  a_save, a_rs_save, a_cs_save,
213  &a, &a_rs, &a_cs );
214 
215  // Initialize with values assuming column-major storage.
216  lda = a_cs;
217  inca = a_rs;
218 
219  // If A is a row-major matrix, then we can use the underlying column-major
220  // BLAS implementation by fiddling with the parameters.
221  if ( bl1_is_row_storage( a_rs, a_cs ) )
222  {
223  bl1_swap_ints( m, n );
224  bl1_swap_ints( lda, inca );
225  bl1_swap_ints( incx, incy );
226  bl1_swap_conj( conjx, conjy );
227  bl1_zswap_pointers( x, y );
228  }
229 
230  // Initialize with values assuming no conjugation of x.
231  x_conj = x;
232  incx_conj = incx;
233 
234  // We need a temporary vector for the cases when x is conjugated.
235  if ( bl1_is_conj( conjx ) )
236  {
237  x_conj = bl1_zallocv( m );
238  incx_conj = 1;
239 
241  m,
242  x, incx,
243  x_conj, incx_conj );
244  }
245 
246  // Conjugation of y is supported in the BLAS.
247  if ( bl1_is_conj( conjy ) )
248  {
249  bl1_zgerc_blas( m,
250  n,
251  alpha,
252  x_conj, incx_conj,
253  y, incy,
254  a, lda );
255  }
256  else
257  {
258  bl1_zgeru_blas( m,
259  n,
260  alpha,
261  x_conj, incx_conj,
262  y, incy,
263  a, lda );
264  }
265 
266  // Free the temporary conjugated x vector.
267  if ( bl1_is_conj( conjx ) )
268  bl1_zfree( x_conj );
269 
270  // Free the temporary contiguous matrix.
271  bl1_zfree_saved_contigm( m_save,
272  n_save,
273  a_save, a_rs_save, a_cs_save,
274  &a, &a_rs, &a_cs );
275 }
void bl1_zcreate_contigm(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_contigm.c:115
int bl1_is_conj(conj1_t conj)
Definition: bl1_is.c:42
void bl1_zgeru_blas(int m, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int lda)
Definition: bl1_ger.c:389
int bl1_zero_dim2(int m, int n)
Definition: bl1_is.c:118
void bl1_zfree(dcomplex *p)
Definition: bl1_free.c:45
Definition: blis_type_defs.h:82
int bl1_is_row_storage(int rs, int cs)
Definition: bl1_is.c:95
void bl1_zfree_saved_contigm(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_free_saved_contigm.c:82
dcomplex * bl1_zallocv(unsigned int n_elem)
Definition: bl1_allocv.c:45
void bl1_zgerc_blas(int m, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int lda)
Definition: bl1_ger.c:367
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

◆ bl1_zgerc_blas()

void bl1_zgerc_blas ( int  m,
int  n,
dcomplex alpha,
dcomplex x,
int  incx,
dcomplex y,
int  incy,
dcomplex a,
int  lda 
)

References cblas_zgerc(), CblasColMajor, and F77_zgerc().

Referenced by bl1_zger().

368 {
369 #ifdef BLIS1_ENABLE_CBLAS_INTERFACES
370  enum CBLAS_ORDER cblas_order = CblasColMajor;
371 
372  cblas_zgerc( cblas_order,
373  m,
374  n,
375  alpha,
376  x, incx,
377  y, incy,
378  a, lda );
379 #else
380  F77_zgerc ( &m,
381  &n,
382  alpha,
383  x, &incx,
384  y, &incy,
385  a, &lda );
386 #endif
387 }
CBLAS_ORDER
Definition: blis_prototypes_cblas.h:17
void cblas_zgerc(const enum CBLAS_ORDER order, const int M, const int N, const void *alpha, const void *X, const int incX, const void *Y, const int incY, void *A, const int lda)
Definition: blis_prototypes_cblas.h:17
void F77_zgerc(int *m, int *n, dcomplex *alpha, dcomplex *x, int *incx, dcomplex *y, int *incy, dcomplex *a, int *lda)

◆ bl1_zgeru_blas()

void bl1_zgeru_blas ( int  m,
int  n,
dcomplex alpha,
dcomplex x,
int  incx,
dcomplex y,
int  incy,
dcomplex a,
int  lda 
)

References cblas_zgeru(), CblasColMajor, and F77_zgeru().

Referenced by bl1_zger().

390 {
391 #ifdef BLIS1_ENABLE_CBLAS_INTERFACES
392  enum CBLAS_ORDER cblas_order = CblasColMajor;
393 
394  cblas_zgeru( cblas_order,
395  m,
396  n,
397  alpha,
398  x, incx,
399  y, incy,
400  a, lda );
401 #else
402  F77_zgeru ( &m,
403  &n,
404  alpha,
405  x, &incx,
406  y, &incy,
407  a, &lda );
408 #endif
409 }
CBLAS_ORDER
Definition: blis_prototypes_cblas.h:17
void F77_zgeru(int *m, int *n, dcomplex *alpha, dcomplex *x, int *incx, dcomplex *y, int *incy, dcomplex *a, int *lda)
Definition: blis_prototypes_cblas.h:17
void cblas_zgeru(const enum CBLAS_ORDER order, const int M, const int N, const void *alpha, const void *X, const int incX, const void *Y, const int incY, void *A, const int lda)