|
libflame
12600
|
Go to the source code of this file.
Functions | |
| void | bl1_sgemv (trans1_t transa, conj1_t conjx, int m, int n, float *alpha, float *a, int a_rs, int a_cs, float *x, int incx, float *beta, float *y, int incy) |
| void | bl1_dgemv (trans1_t transa, conj1_t conjx, int m, int n, double *alpha, double *a, int a_rs, int a_cs, double *x, int incx, double *beta, double *y, int incy) |
| void | bl1_cgemv (trans1_t transa, conj1_t conjx, int m, int n, scomplex *alpha, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy) |
| void | bl1_zgemv (trans1_t transa, conj1_t conjx, int m, int n, dcomplex *alpha, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy) |
| void | bl1_sgemv_blas (trans1_t transa, int m, int n, float *alpha, float *a, int lda, float *x, int incx, float *beta, float *y, int incy) |
| void | bl1_dgemv_blas (trans1_t transa, int m, int n, double *alpha, double *a, int lda, double *x, int incx, double *beta, double *y, int incy) |
| void | bl1_cgemv_blas (trans1_t transa, int m, int n, scomplex *alpha, scomplex *a, int lda, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy) |
| void | bl1_zgemv_blas (trans1_t transa, int m, int n, dcomplex *alpha, dcomplex *a, int lda, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy) |
| 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) |
| void | bl1_shemv (uplo1_t uplo, conj1_t conj, int m, float *alpha, float *a, int a_rs, int a_cs, float *x, int incx, float *beta, float *y, int incy) |
| void | bl1_dhemv (uplo1_t uplo, conj1_t conj, int m, double *alpha, double *a, int a_rs, int a_cs, double *x, int incx, double *beta, double *y, int incy) |
| void | bl1_chemv (uplo1_t uplo, conj1_t conj, int m, scomplex *alpha, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy) |
| void | bl1_zhemv (uplo1_t uplo, conj1_t conj, int m, dcomplex *alpha, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy) |
| void | bl1_chemv_blas (uplo1_t uplo, int m, scomplex *alpha, scomplex *a, int lda, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy) |
| void | bl1_zhemv_blas (uplo1_t uplo, int m, dcomplex *alpha, dcomplex *a, int lda, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy) |
| void | bl1_sher (uplo1_t uplo, conj1_t conj, int m, float *alpha, float *x, int incx, float *a, int a_rs, int a_cs) |
| void | bl1_dher (uplo1_t uplo, conj1_t conj, int m, double *alpha, double *x, int incx, double *a, int a_rs, int a_cs) |
| void | bl1_cher (uplo1_t uplo, conj1_t conj, int m, float *alpha, scomplex *x, int incx, scomplex *a, int a_rs, int a_cs) |
| void | bl1_zher (uplo1_t uplo, conj1_t conj, int m, double *alpha, dcomplex *x, int incx, dcomplex *a, int a_rs, int a_cs) |
| void | bl1_cher_blas (uplo1_t uplo, int m, float *alpha, scomplex *x, int incx, scomplex *a, int lda) |
| void | bl1_zher_blas (uplo1_t uplo, int m, double *alpha, dcomplex *x, int incx, dcomplex *a, int lda) |
| void | bl1_sher2 (uplo1_t uplo, conj1_t conj, int m, float *alpha, float *x, int incx, float *y, int incy, float *a, int a_rs, int a_cs) |
| void | bl1_dher2 (uplo1_t uplo, conj1_t conj, int m, double *alpha, double *x, int incx, double *y, int incy, double *a, int a_rs, int a_cs) |
| void | bl1_cher2 (uplo1_t uplo, conj1_t conj, int m, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *a, int a_rs, int a_cs) |
| void | bl1_zher2 (uplo1_t uplo, conj1_t conj, int m, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int a_rs, int a_cs) |
| void | bl1_cher2_blas (uplo1_t uplo, int m, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *a, int lda) |
| void | bl1_zher2_blas (uplo1_t uplo, int m, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int lda) |
| 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) |
| void | bl1_ssyr (uplo1_t uplo, int m, float *alpha, float *x, int incx, float *a, int a_rs, int a_cs) |
| void | bl1_dsyr (uplo1_t uplo, int m, double *alpha, double *x, int incx, double *a, int a_rs, int a_cs) |
| void | bl1_csyr (uplo1_t uplo, int m, scomplex *alpha, scomplex *x, int incx, scomplex *a, int a_rs, int a_cs) |
| void | bl1_zsyr (uplo1_t uplo, int m, dcomplex *alpha, dcomplex *x, int incx, dcomplex *a, int a_rs, int a_cs) |
| void | bl1_ssyr_blas (uplo1_t uplo, int m, float *alpha, float *x, int incx, float *a, int lda) |
| void | bl1_dsyr_blas (uplo1_t uplo, int m, double *alpha, double *x, int incx, double *a, int lda) |
| void | bl1_csyr_blas (uplo1_t uplo, int m, scomplex *alpha, scomplex *x, int incx, scomplex *a, int lda) |
| void | bl1_zsyr_blas (uplo1_t uplo, int m, dcomplex *alpha, dcomplex *x, int incx, dcomplex *a, int lda) |
| void | bl1_ssyr2 (uplo1_t uplo, int m, float *alpha, float *x, int incx, float *y, int incy, float *a, int a_rs, int a_cs) |
| void | bl1_dsyr2 (uplo1_t uplo, int m, double *alpha, double *x, int incx, double *y, int incy, double *a, int a_rs, int a_cs) |
| void | bl1_csyr2 (uplo1_t uplo, int m, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *a, int a_rs, int a_cs) |
| void | bl1_zsyr2 (uplo1_t uplo, int m, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int a_rs, int a_cs) |
| void | bl1_ssyr2_blas (uplo1_t uplo, int m, float *alpha, float *x, int incx, float *y, int incy, float *a, int lda) |
| void | bl1_dsyr2_blas (uplo1_t uplo, int m, double *alpha, double *x, int incx, double *y, int incy, double *a, int lda) |
| void | bl1_csyr2_blas (uplo1_t uplo, int m, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *a, int lda) |
| void | bl1_zsyr2_blas (uplo1_t uplo, int m, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int lda) |
| 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) |
| 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) |
| 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) |
| 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) |
| void | bl1_strmv_blas (uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *a, int lda, float *x, int incx) |
| void | bl1_dtrmv_blas (uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *a, int lda, double *x, int incx) |
| void | bl1_ctrmv_blas (uplo1_t uplo, trans1_t trans, diag1_t diag, int m, scomplex *a, int lda, scomplex *x, int incx) |
| void | bl1_ztrmv_blas (uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *a, int lda, dcomplex *x, int incx) |
| void | bl1_strsv (uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *a, int a_rs, int a_cs, float *x, int incx) |
| void | bl1_dtrsv (uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *a, int a_rs, int a_cs, double *x, int incx) |
| void | bl1_ctrsv (uplo1_t uplo, trans1_t trans, diag1_t diag, int m, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx) |
| void | bl1_ztrsv (uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx) |
| void | bl1_strsv_blas (uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *a, int lda, float *x, int incx) |
| void | bl1_dtrsv_blas (uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *a, int lda, double *x, int incx) |
| void | bl1_ctrsv_blas (uplo1_t uplo, trans1_t trans, diag1_t diag, int m, scomplex *a, int lda, scomplex *x, int incx) |
| void | bl1_ztrsv_blas (uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *a, int lda, dcomplex *x, int incx) |
| 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) |
| void | bl1_strsvsx (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_dtrsvsx (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_ctrsvsx (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_ztrsvsx (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) |
| void bl1_cgemv | ( | trans1_t | transa, |
| conj1_t | conjx, | ||
| int | m, | ||
| int | n, | ||
| scomplex * | alpha, | ||
| scomplex * | a, | ||
| int | a_rs, | ||
| int | a_cs, | ||
| scomplex * | x, | ||
| int | incx, | ||
| scomplex * | beta, | ||
| scomplex * | y, | ||
| int | incy | ||
| ) |
References bl1_c0(), bl1_c1(), bl1_callocv(), bl1_caxpyv(), bl1_cconjv(), bl1_ccopyv(), bl1_ccreate_contigm(), bl1_cfree(), bl1_cfree_contigm(), bl1_cgemv_blas(), bl1_cscalv(), bl1_does_trans(), bl1_is_conj(), bl1_is_conjnotrans(), bl1_is_row_storage(), bl1_zero_dim2(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, and BLIS1_NO_TRANSPOSE.
Referenced by FLA_Accum_T_UT_fc_opc_var1(), FLA_Accum_T_UT_fr_opc_var1(), 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_var2(), FLA_Bidiag_UT_u_step_ofc_var3(), FLA_Bidiag_UT_u_step_ofc_var4(), FLA_Bidiag_UT_u_step_opc_var1(), FLA_Bidiag_UT_u_step_opc_var2(), FLA_Bidiag_UT_u_step_opc_var3(), FLA_Bidiag_UT_u_step_opc_var4(), FLA_Bidiag_UT_u_step_opc_var5(), FLA_CAQR2_UT_opc_var1(), FLA_Chol_l_opc_var2(), FLA_Chol_u_opc_var2(), FLA_Eig_gest_il_opc_var2(), FLA_Eig_gest_il_opc_var3(), FLA_Eig_gest_iu_opc_var2(), FLA_Eig_gest_iu_opc_var3(), FLA_Eig_gest_nl_opc_var2(), FLA_Eig_gest_nu_opc_var2(), FLA_Gemv_external(), FLA_Gemvc_external(), FLA_Hess_UT_step_ofc_var2(), FLA_Hess_UT_step_ofc_var3(), FLA_Hess_UT_step_ofc_var4(), FLA_Hess_UT_step_opc_var1(), FLA_Hess_UT_step_opc_var2(), FLA_Hess_UT_step_opc_var3(), FLA_Hess_UT_step_opc_var4(), FLA_Hess_UT_step_opc_var5(), FLA_LQ_UT_opc_var2(), FLA_LU_nopiv_opc_var2(), FLA_LU_nopiv_opc_var3(), FLA_LU_nopiv_opc_var4(), FLA_LU_piv_opc_var3(), FLA_LU_piv_opc_var4(), FLA_Lyap_h_opc_var2(), FLA_Lyap_h_opc_var3(), FLA_Lyap_n_opc_var2(), FLA_Lyap_n_opc_var3(), FLA_QR2_UT_opc_var1(), FLA_QR_UT_opc_var2(), FLA_Tridiag_UT_l_step_ofc_var2(), FLA_Tridiag_UT_l_step_ofc_var3(), FLA_Tridiag_UT_l_step_opc_var1(), FLA_Tridiag_UT_l_step_opc_var2(), FLA_Tridiag_UT_l_step_opc_var3(), FLA_Ttmm_l_opc_var2(), and FLA_Ttmm_u_opc_var2().
{
scomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
scomplex zero = bl1_c0();
scomplex one = bl1_c1();
scomplex* x_conj;
scomplex* ax;
int lda, inca;
int n_x;
int incx_conj;
int incax;
// Return early if possible.
if ( bl1_zero_dim2( m, n ) )
{
int n_elem;
if ( bl1_does_trans( transa ) ) n_elem = n;
else n_elem = m;
bl1_cscalv( BLIS1_NO_CONJUGATE,
n_elem,
beta,
y, incy );
return;
}
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_ccreate_contigm( m,
n,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( m, n );
bl1_swap_ints( lda, inca );
bl1_toggle_trans( transa );
}
// Initialize with values assuming no conjugation of x.
x_conj = x;
incx_conj = incx;
// We need a temporary vector for the cases when x is conjugated, and
// also for the cases where A is conjugated.
if ( bl1_is_conj( conjx ) || bl1_is_conjnotrans( transa ) )
{
if ( bl1_does_trans( transa ) ) n_x = m;
else n_x = n;
x_conj = bl1_callocv( n_x );
incx_conj = 1;
bl1_ccopyv( conjx,
n_x,
x, incx,
x_conj, incx_conj );
}
// We want to handle the conjnotrans case, but without explicitly
// conjugating A. To do so, we leverage the fact that computing the
// product conj(A) * x is equivalent to computing conj( A * conj(x) ).
if ( bl1_is_conjnotrans( transa ) )
{
// We need a temporary vector for the product A * conj(x), which is
// conformal to y. We know we are not transposing, so y is length m.
ax = bl1_callocv( m );
incax = 1;
// Start by conjugating the contents of the temporary copy of x.
bl1_cconjv( n,
x_conj, incx_conj );
// Compute A * conj(x) where x is the temporary copy of x created above.
bl1_cgemv_blas( BLIS1_NO_TRANSPOSE,
m,
n,
&one,
a, lda,
x_conj, incx_conj,
&zero,
ax, incax );
// Scale y by beta.
bl1_cscalv( BLIS1_NO_CONJUGATE,
m,
beta,
y, incy );
// And finally, accumulate alpha * conj( A * conj(x) ) into y.
bl1_caxpyv( BLIS1_CONJUGATE,
m,
alpha,
ax, incax,
y, incy);
// Free the temporary vector for Ax.
bl1_cfree( ax );
}
else // notrans, trans, or conjtrans
{
bl1_cgemv_blas( transa,
m,
n,
alpha,
a, lda,
x_conj, incx_conj,
beta,
y, incy );
}
// Free the temporary conjugated x vector.
if ( bl1_is_conj( conjx ) || bl1_is_conjnotrans( transa ) )
bl1_cfree( x_conj );
// Free the temporary contiguous matrix.
bl1_cfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_cgemv_blas | ( | trans1_t | transa, |
| int | m, | ||
| int | n, | ||
| scomplex * | alpha, | ||
| scomplex * | a, | ||
| int | lda, | ||
| scomplex * | x, | ||
| int | incx, | ||
| scomplex * | beta, | ||
| scomplex * | y, | ||
| int | incy | ||
| ) |
References bl1_param_map_to_netlib_trans(), cblas_cgemv(), CblasColMajor, and F77_cgemv().
Referenced by bl1_cgemv().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_TRANSPOSE cblas_transa;
bl1_param_map_to_netlib_trans( transa, &cblas_transa );
cblas_cgemv( cblas_order,
cblas_transa,
m,
n,
alpha,
a, lda,
x, incx,
beta,
y, incy );
#else
char blas_transa;
bl1_param_map_to_netlib_trans( transa, &blas_transa );
F77_cgemv( &blas_transa,
&m,
&n,
alpha,
a, &lda,
x, &incx,
beta,
y, &incy );
#endif
}
| 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().
{
int m_save = m;
int n_save = n;
scomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
scomplex* x_conj;
int incx_conj;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim2( m, n ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_ccreate_contigm( m,
n,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( m, n );
bl1_swap_ints( lda, inca );
bl1_swap_ints( incx, incy );
bl1_swap_conj( conjx, conjy );
bl1_cswap_pointers( x, y );
}
// Initialize with values assuming no conjugation of x.
x_conj = x;
incx_conj = incx;
// We need a temporary vector for the cases when x is conjugated.
if ( bl1_is_conj( conjx ) )
{
x_conj = bl1_callocv( m );
incx_conj = 1;
bl1_ccopyv( BLIS1_CONJUGATE,
m,
x, incx,
x_conj, incx_conj );
}
// Conjugation of y is supported in the BLAS.
if ( bl1_is_conj( conjy ) )
{
bl1_cgerc_blas( m,
n,
alpha,
x_conj, incx_conj,
y, incy,
a, lda );
}
else
{
bl1_cgeru_blas( m,
n,
alpha,
x_conj, incx_conj,
y, incy,
a, lda );
}
// Free the temporary conjugated x vector.
if ( bl1_is_conj( conjx ) )
bl1_cfree( x_conj );
// Free the temporary contiguous matrix.
bl1_cfree_saved_contigm( m_save,
n_save,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| 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().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
cblas_cgerc( cblas_order,
m,
n,
alpha,
x, incx,
y, incy,
a, lda );
#else
F77_cgerc ( &m,
&n,
alpha,
x, &incx,
y, &incy,
a, &lda );
#endif
}
| 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().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
cblas_cgeru( cblas_order,
m,
n,
alpha,
x, incx,
y, incy,
a, lda );
#else
F77_cgeru ( &m,
&n,
alpha,
x, &incx,
y, &incy,
a, &lda );
#endif
}
| void bl1_chemv | ( | uplo1_t | uplo, |
| conj1_t | conj, | ||
| int | m, | ||
| scomplex * | alpha, | ||
| scomplex * | a, | ||
| int | a_rs, | ||
| int | a_cs, | ||
| scomplex * | x, | ||
| int | incx, | ||
| scomplex * | beta, | ||
| scomplex * | y, | ||
| int | incy | ||
| ) |
References bl1_c0(), bl1_c1(), bl1_callocv(), bl1_caxpyv(), bl1_ccopyv(), bl1_ccreate_contigmr(), bl1_cfree(), bl1_cfree_contigm(), bl1_chemv_blas(), bl1_cscalv(), bl1_is_conj(), bl1_is_row_storage(), bl1_zero_dim1(), BLIS1_CONJUGATE, and BLIS1_NO_CONJUGATE.
Referenced by FLA_Eig_gest_il_opc_var1(), FLA_Eig_gest_il_opc_var2(), FLA_Eig_gest_iu_opc_var1(), FLA_Eig_gest_iu_opc_var2(), FLA_Eig_gest_nl_opc_var1(), FLA_Eig_gest_nl_opc_var2(), FLA_Eig_gest_nu_opc_var1(), FLA_Eig_gest_nu_opc_var2(), FLA_Hemv_external(), FLA_Hemvc_external(), FLA_Lyap_h_opc_var1(), FLA_Lyap_n_opc_var1(), FLA_Tridiag_UT_l_step_ofc_var2(), FLA_Tridiag_UT_l_step_ofc_var3(), FLA_Tridiag_UT_l_step_opc_var1(), FLA_Tridiag_UT_l_step_opc_var2(), and FLA_Tridiag_UT_l_step_opc_var3().
{
scomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
scomplex zero = bl1_c0();
scomplex one = bl1_c1();
scomplex* x_conj;
scomplex* ax;
int lda, inca;
int incx_conj;
int incax;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_ccreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
bl1_toggle_conj( conj );
}
// We want to handle the case where A is conjugated, but without
// explicitly or conjugating A. To do so, we leverage the fact that
// computing the product conj(A) * x is equivalent to computing
// conj( A * conj(x) ).
if ( bl1_is_conj( conj ) )
{
// We need a temporary vector so we can create a conjugated copy of x.
x_conj = bl1_callocv( m );
incx_conj = 1;
bl1_ccopyv( BLIS1_CONJUGATE,
m,
x, incx,
x_conj, incx_conj );
// We need a temporary vector for the product A * conj(x), which is
// conformal to y (and x).
ax = bl1_callocv( m );
incax = 1;
// Compute A * conj(x) where x is the temporary copy of x created above.
bl1_chemv_blas( uplo,
m,
&one,
a, lda,
x_conj, incx_conj,
&zero,
ax, incax );
// Scale y by beta.
bl1_cscalv( BLIS1_NO_CONJUGATE,
m,
beta,
y, incy );
// And finally, accumulate alpha * conj( A * conj(x) ) into y.
bl1_caxpyv( BLIS1_CONJUGATE,
m,
alpha,
ax, incax,
y, incy);
// Free the temporary vectors for x and Ax.
bl1_cfree( x_conj );
bl1_cfree( ax );
}
else // noconj
{
bl1_chemv_blas( uplo,
m,
alpha,
a, lda,
x, incx,
beta,
y, incy );
}
// Free the temporary contiguous matrix.
bl1_cfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_chemv_blas | ( | uplo1_t | uplo, |
| int | m, | ||
| scomplex * | alpha, | ||
| scomplex * | a, | ||
| int | lda, | ||
| scomplex * | x, | ||
| int | incx, | ||
| scomplex * | beta, | ||
| scomplex * | y, | ||
| int | incy | ||
| ) |
References bl1_param_map_to_netlib_uplo(), cblas_chemv(), CblasColMajor, and F77_chemv().
Referenced by bl1_chemv().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
cblas_chemv( cblas_order,
cblas_uplo,
m,
alpha,
a, lda,
x, incx,
beta,
y, incy );
#else
char blas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
F77_chemv( &blas_uplo,
&m,
alpha,
a, &lda,
x, &incx,
beta,
y, &incy );
#endif
}
| void bl1_cher | ( | uplo1_t | uplo, |
| conj1_t | conj, | ||
| int | m, | ||
| float * | alpha, | ||
| scomplex * | x, | ||
| int | incx, | ||
| scomplex * | a, | ||
| int | a_rs, | ||
| int | a_cs | ||
| ) |
References bl1_callocv(), bl1_ccopyv(), bl1_ccreate_contigmr(), bl1_cfree(), bl1_cfree_saved_contigm(), bl1_cher_blas(), bl1_is_conj(), bl1_is_row_storage(), bl1_zero_dim1(), and BLIS1_CONJUGATE.
Referenced by FLA_Chol_l_opc_var3(), FLA_Chol_u_opc_var3(), FLA_Her_external(), FLA_Herc_external(), FLA_Ttmm_l_opc_var1(), and FLA_Ttmm_u_opc_var1().
{
int m_save = m;
scomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
scomplex* x_conj;
int incx_conj;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_ccreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
bl1_toggle_conj( conj );
}
// Initialize with values assuming no conjugation of ( x * x' ).
x_conj = x;
incx_conj = incx;
// We want to handle the case where ( x * x' ) is conjugated, but
// without explicitly conjugating the matrix. To do so, we leverage
// the fact that computing the product conj( x * x' ) is equivalent
// to computing ( conj(x) * conj(x)' ), since ( x * x' ) is Hermitian.
if ( bl1_is_conj( conj ) )
{
x_conj = bl1_callocv( m );
incx_conj = 1;
bl1_ccopyv( BLIS1_CONJUGATE,
m,
x, incx,
x_conj, incx_conj );
}
bl1_cher_blas( uplo,
m,
alpha,
x_conj, incx_conj,
a, lda );
// Free the temporary conjugated x vector.
if ( bl1_is_conj( conj ) )
bl1_cfree( x_conj );
// Free the temporary contiguous matrix.
bl1_cfree_saved_contigm( m_save,
m_save,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_cher2 | ( | uplo1_t | uplo, |
| conj1_t | conj, | ||
| int | m, | ||
| 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_contigmr(), bl1_cfree(), bl1_cfree_saved_contigm(), bl1_cher2_blas(), bl1_is_conj(), bl1_is_row_storage(), bl1_zero_dim1(), and BLIS1_CONJUGATE.
Referenced by FLA_Eig_gest_il_opc_var4(), FLA_Eig_gest_il_opc_var5(), FLA_Eig_gest_iu_opc_var4(), FLA_Eig_gest_iu_opc_var5(), FLA_Eig_gest_nl_opc_var4(), FLA_Eig_gest_nl_opc_var5(), FLA_Eig_gest_nu_opc_var4(), FLA_Eig_gest_nu_opc_var5(), FLA_Her2_external(), FLA_Her2c_external(), FLA_Lyap_h_opc_var4(), FLA_Lyap_n_opc_var4(), FLA_Tridiag_UT_l_step_ofc_var2(), FLA_Tridiag_UT_l_step_opc_var1(), and FLA_Tridiag_UT_l_step_opc_var2().
{
int m_save = m;
scomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
scomplex* x_conj;
scomplex* y_conj;
int incx_conj;
int incy_conj;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_ccreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
bl1_toggle_conj( conj );
}
// Initialize with values assuming no conjugation of ( x * y' ) or
// ( y * x' ).
x_conj = x;
incx_conj = incx;
y_conj = y;
incy_conj = incy;
// We want to handle the case where ( x * y' ) and ( y * x' ) are
// conjugated, but without explicitly conjugating the matrices. To do
// so, we leverage the fact that computing the products conj( x * y' )
// and conj( y * x' ) is equivalent to computing ( conj(x) * conj(y)' )
// and ( conj(y) * conj(x)' ), respectively.
if ( bl1_is_conj( conj ) )
{
x_conj = bl1_callocv( m );
incx_conj = 1;
y_conj = bl1_callocv( m );
incy_conj = 1;
bl1_ccopyv( BLIS1_CONJUGATE,
m,
x, incx,
x_conj, incx_conj );
bl1_ccopyv( BLIS1_CONJUGATE,
m,
y, incy,
y_conj, incy_conj );
}
bl1_cher2_blas( uplo,
m,
alpha,
x_conj, incx_conj,
y_conj, incy_conj,
a, lda );
// Free the temporary conjugated x and y vectors.
if ( bl1_is_conj( conj ) )
{
bl1_cfree( x_conj );
bl1_cfree( y_conj );
}
// Free the temporary contiguous matrix.
bl1_cfree_saved_contigm( m_save,
m_save,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_cher2_blas | ( | uplo1_t | uplo, |
| int | m, | ||
| scomplex * | alpha, | ||
| scomplex * | x, | ||
| int | incx, | ||
| scomplex * | y, | ||
| int | incy, | ||
| scomplex * | a, | ||
| int | lda | ||
| ) |
References bl1_param_map_to_netlib_uplo(), cblas_cher2(), CblasColMajor, and F77_cher2().
Referenced by bl1_cher2().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
cblas_cher2( cblas_order,
cblas_uplo,
m,
alpha,
x, incx,
y, incy,
a, lda );
#else
char blas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
F77_cher2( &blas_uplo,
&m,
alpha,
x, &incx,
y, &incy,
a, &lda );
#endif
}
| void bl1_cher_blas | ( | uplo1_t | uplo, |
| int | m, | ||
| float * | alpha, | ||
| scomplex * | x, | ||
| int | incx, | ||
| scomplex * | a, | ||
| int | lda | ||
| ) |
References bl1_param_map_to_netlib_uplo(), cblas_cher(), CblasColMajor, and F77_cher().
Referenced by bl1_cher().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
cblas_cher( cblas_order,
cblas_uplo,
m,
*alpha,
x, incx,
a, lda );
#else
char blas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
F77_cher( &blas_uplo,
&m,
alpha,
x, &incx,
a, &lda );
#endif
}
| 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 | ||
| ) |
References bl1_ccreate_contigmr(), bl1_cfree_contigm(), bl1_csymv_blas(), bl1_is_row_storage(), and bl1_zero_dim1().
Referenced by FLA_Symv_external().
{
scomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_ccreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
}
bl1_csymv_blas( uplo,
m,
alpha,
a, lda,
x, incx,
beta,
y, incy );
// Free the temporary contiguous matrix.
bl1_cfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| 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 | ||
| ) |
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().
{
scomplex* x_copy;
scomplex* y_copy;
int n = 1;
int ldx = m;
int ldy = m;
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_SIDE cblas_side;
enum CBLAS_UPLO cblas_uplo;
bl1_param_map_to_netlib_side( BLIS1_LEFT, &cblas_side );
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
x_copy = bl1_callocv( m );
y_copy = bl1_callocv( m );
bl1_ccopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_copy, 1 );
bl1_ccopyv( BLIS1_NO_CONJUGATE,
m,
y, incy,
y_copy, 1 );
cblas_csymm( cblas_order,
cblas_side,
cblas_uplo,
m,
n,
alpha,
a, lda,
x_copy, ldx,
beta,
y_copy, ldy );
bl1_ccopyv( BLIS1_NO_CONJUGATE,
m,
y_copy, 1,
y, incy );
bl1_cfree( x_copy );
bl1_cfree( y_copy );
#else
char blas_side;
char blas_uplo;
bl1_param_map_to_netlib_side( BLIS1_LEFT, &blas_side );
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
x_copy = bl1_callocv( m );
y_copy = bl1_callocv( m );
bl1_ccopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_copy, 1 );
bl1_ccopyv( BLIS1_NO_CONJUGATE,
m,
y, incy,
y_copy, 1 );
F77_csymm ( &blas_side,
&blas_uplo,
&m,
&n,
alpha,
a, &lda,
x_copy, &ldx,
beta,
y_copy, &ldy );
bl1_ccopyv( BLIS1_NO_CONJUGATE,
m,
y_copy, 1,
y, incy );
bl1_cfree( x_copy );
bl1_cfree( y_copy );
#endif
}
| void bl1_csyr | ( | uplo1_t | uplo, |
| int | m, | ||
| scomplex * | alpha, | ||
| scomplex * | x, | ||
| int | incx, | ||
| scomplex * | a, | ||
| int | a_rs, | ||
| int | a_cs | ||
| ) |
References bl1_ccreate_contigmr(), bl1_cfree_saved_contigm(), bl1_csyr_blas(), bl1_is_row_storage(), and bl1_zero_dim1().
Referenced by FLA_Syr_external().
{
int m_save = m;
scomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_ccreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
}
bl1_csyr_blas( uplo,
m,
alpha,
x, incx,
a, lda );
// Free the temporary contiguous matrix.
bl1_cfree_saved_contigm( m_save,
m_save,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_csyr2 | ( | uplo1_t | uplo, |
| int | m, | ||
| scomplex * | alpha, | ||
| scomplex * | x, | ||
| int | incx, | ||
| scomplex * | y, | ||
| int | incy, | ||
| scomplex * | a, | ||
| int | a_rs, | ||
| int | a_cs | ||
| ) |
References bl1_ccreate_contigmr(), bl1_cfree_saved_contigm(), bl1_csyr2_blas(), bl1_is_row_storage(), and bl1_zero_dim1().
Referenced by FLA_Syr2_external().
{
int m_save = m;
scomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_ccreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
}
bl1_csyr2_blas( uplo,
m,
alpha,
x, incx,
y, incy,
a, lda );
// Free the temporary contiguous matrix.
bl1_cfree_saved_contigm( m_save,
m_save,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_csyr2_blas | ( | uplo1_t | uplo, |
| int | m, | ||
| scomplex * | alpha, | ||
| scomplex * | x, | ||
| int | incx, | ||
| scomplex * | y, | ||
| int | incy, | ||
| scomplex * | a, | ||
| int | lda | ||
| ) |
References bl1_callocv(), bl1_ccopyv(), bl1_cfree(), bl1_param_map_to_netlib_trans(), bl1_param_map_to_netlib_uplo(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, cblas_csyr2k(), CblasColMajor, F77_csyr2k(), scomplex::imag, and scomplex::real.
Referenced by bl1_csyr2().
{
scomplex* x_copy;
scomplex* y_copy;
scomplex beta;
int k = 1;
int ldx = m;
int ldy = m;
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
enum CBLAS_TRANSPOSE cblas_trans;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
bl1_param_map_to_netlib_trans( BLIS1_NO_TRANSPOSE, &cblas_trans );
x_copy = bl1_callocv( m );
y_copy = bl1_callocv( m );
bl1_ccopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_copy, 1 );
bl1_ccopyv( BLIS1_NO_CONJUGATE,
m,
y, incy,
y_copy, 1 );
beta.real = 1.0;
beta.imag = 0.0;
cblas_csyr2k( cblas_order,
cblas_uplo,
cblas_trans,
m,
k,
alpha,
x_copy, ldx,
y_copy, ldy,
&beta,
a, lda );
bl1_cfree( x_copy );
bl1_cfree( y_copy );
#else
char blas_uplo;
char blas_trans;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
bl1_param_map_to_netlib_trans( BLIS1_NO_TRANSPOSE, &blas_trans );
x_copy = bl1_callocv( m );
y_copy = bl1_callocv( m );
bl1_ccopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_copy, 1 );
bl1_ccopyv( BLIS1_NO_CONJUGATE,
m,
y, incy,
y_copy, 1 );
beta.real = 1.0;
beta.imag = 0.0;
F77_csyr2k ( &blas_uplo,
&blas_trans,
&m,
&k,
alpha,
x_copy, &ldx,
y_copy, &ldy,
&beta,
a, &lda );
bl1_cfree( x_copy );
bl1_cfree( y_copy );
#endif
}
| void bl1_csyr_blas | ( | uplo1_t | uplo, |
| int | m, | ||
| scomplex * | alpha, | ||
| scomplex * | x, | ||
| int | incx, | ||
| scomplex * | a, | ||
| int | lda | ||
| ) |
References bl1_callocv(), bl1_ccopyv(), bl1_cfree(), bl1_param_map_to_netlib_trans(), bl1_param_map_to_netlib_uplo(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, cblas_csyrk(), CblasColMajor, F77_csyrk(), scomplex::imag, and scomplex::real.
Referenced by bl1_csyr().
{
scomplex* x_copy;
scomplex beta;
int k = 1;
int ldx = m;
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
enum CBLAS_TRANSPOSE cblas_trans;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
bl1_param_map_to_netlib_trans( BLIS1_NO_TRANSPOSE, &cblas_trans );
x_copy = bl1_callocv( m );
bl1_ccopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_copy, 1 );
beta.real = 1.0;
beta.imag = 0.0;
cblas_csyrk( cblas_order,
cblas_uplo,
cblas_trans,
m,
k,
alpha,
x_copy, ldx,
&beta,
a, lda );
bl1_cfree( x_copy );
#else
char blas_uplo;
char blas_trans;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
bl1_param_map_to_netlib_trans( BLIS1_NO_TRANSPOSE, &blas_trans );
x_copy = bl1_callocv( m );
bl1_ccopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_copy, 1 );
beta.real = 1.0;
beta.imag = 0.0;
F77_csyrk ( &blas_uplo,
&blas_trans,
&m,
&k,
alpha,
x_copy, &ldx,
&beta,
a, &lda );
bl1_cfree( x_copy );
#endif
}
| 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 | ||
| ) |
References bl1_callocv(), bl1_ccopyv(), bl1_ccreate_contigmr(), bl1_cfree(), bl1_cfree_contigm(), bl1_ctrmv_blas(), bl1_is_conjnotrans(), bl1_is_row_storage(), bl1_zero_dim1(), and BLIS1_CONJUGATE.
Referenced by bl1_ctrmvsx(), FLA_CAQR2_UT_opc_var1(), FLA_Eig_gest_nl_opc_var1(), FLA_Eig_gest_nl_opc_var5(), FLA_Eig_gest_nu_opc_var1(), FLA_Eig_gest_nu_opc_var5(), FLA_Hess_UT_step_opc_var5(), FLA_Trinv_ln_opc_var1(), FLA_Trinv_ln_opc_var4(), FLA_Trinv_lu_opc_var1(), FLA_Trinv_lu_opc_var4(), FLA_Trinv_un_opc_var1(), FLA_Trinv_un_opc_var4(), FLA_Trinv_uu_opc_var1(), FLA_Trinv_uu_opc_var4(), FLA_Trmv_external(), FLA_Ttmm_l_opc_var3(), and FLA_Ttmm_u_opc_var3().
{
scomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
scomplex* x_conj;
int incx_conj;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_ccreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
bl1_toggle_trans( trans );
}
// Initialize with values assuming that trans is not conjnotrans.
x_conj = x;
incx_conj = incx;
// We want to handle the conjnotrans case, but without explicitly
// conjugating A. To do so, we leverage the fact that computing the
// product conj(A) * x is equivalent to computing conj( A * conj(x) ).
// Note: strictly speaking, we don't need to create a copy of x since
// the operation is simpler than, say, gemv. However, we create a copy
// anyway since in practice it performs better due to increased spatial
// locality.
if ( bl1_is_conjnotrans( trans ) )
{
x_conj = bl1_callocv( m );
incx_conj = 1;
bl1_ccopyv( BLIS1_CONJUGATE,
m,
x, incx,
x_conj, incx_conj );
}
bl1_ctrmv_blas( uplo,
trans,
diag,
m,
a, lda,
x_conj, incx_conj );
// Save the contents of and then free the temporary conjugated x vector.
if ( bl1_is_conjnotrans( trans ) )
{
bl1_ccopyv( BLIS1_CONJUGATE,
m,
x_conj, incx_conj,
x, incx );
bl1_cfree( x_conj );
}
// Free the temporary contiguous matrix.
bl1_cfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_ctrmv_blas | ( | uplo1_t | uplo, |
| trans1_t | trans, | ||
| diag1_t | diag, | ||
| int | m, | ||
| scomplex * | a, | ||
| int | lda, | ||
| scomplex * | x, | ||
| int | incx | ||
| ) |
References bl1_param_map_to_netlib_diag(), bl1_param_map_to_netlib_trans(), bl1_param_map_to_netlib_uplo(), cblas_ctrmv(), CblasColMajor, and F77_ctrmv().
Referenced by bl1_ctrmv().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
enum CBLAS_TRANSPOSE cblas_trans;
enum CBLAS_DIAG cblas_diag;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
bl1_param_map_to_netlib_trans( trans, &cblas_trans );
bl1_param_map_to_netlib_diag( diag, &cblas_diag );
cblas_ctrmv( cblas_order,
cblas_uplo,
cblas_trans,
cblas_diag,
m,
a, lda,
x, incx );
#else
char blas_uplo;
char blas_trans;
char blas_diag;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
bl1_param_map_to_netlib_trans( trans, &blas_trans );
bl1_param_map_to_netlib_diag( diag, &blas_diag );
F77_ctrmv( &blas_uplo,
&blas_trans,
&blas_diag,
&m,
a, &lda,
x, &incx );
#endif
}
| 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().
{
scomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
scomplex* x_temp;
int incx_temp;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_ccreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Allocate a temporary vector conformal to x.
x_temp = bl1_callocv( m );
incx_temp = 1;
// Copy x to a temporary vector.
bl1_ccopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_temp, incx_temp );
// Perform the operation, storing the result to x_temp.
bl1_ctrmv( uplo,
trans,
diag,
m,
a, a_rs, a_cs,
x_temp, incx_temp );
// Scale y by beta.
bl1_cscalv( BLIS1_NO_CONJUGATE,
m,
beta,
y, incy );
// Axpy the partial result in x_temp into y.
bl1_caxpyv( BLIS1_NO_CONJUGATE,
m,
alpha,
x_temp, incx_temp,
y, incy );
// Free the temporary vector.
bl1_cfree( x_temp );
// Free the temporary contiguous matrix.
bl1_cfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_ctrsv | ( | uplo1_t | uplo, |
| trans1_t | trans, | ||
| diag1_t | diag, | ||
| int | m, | ||
| scomplex * | a, | ||
| int | a_rs, | ||
| int | a_cs, | ||
| scomplex * | x, | ||
| int | incx | ||
| ) |
References bl1_callocv(), bl1_ccopyv(), bl1_ccreate_contigmr(), bl1_cfree(), bl1_cfree_contigm(), bl1_ctrsv_blas(), bl1_is_conjnotrans(), bl1_is_row_storage(), bl1_zero_dim1(), and BLIS1_CONJUGATE.
Referenced by bl1_ctrsvsx(), FLA_Chol_l_opc_var1(), FLA_Chol_u_opc_var1(), FLA_Eig_gest_il_opc_var1(), FLA_Eig_gest_il_opc_var5(), FLA_Eig_gest_iu_opc_var1(), FLA_Eig_gest_iu_opc_var5(), FLA_Hess_UT_step_opc_var5(), FLA_LU_nopiv_opc_var1(), FLA_LU_nopiv_opc_var2(), FLA_LU_nopiv_opc_var3(), FLA_LU_piv_opc_var3(), FLA_Lyap_h_opc_var1(), FLA_Lyap_h_opc_var2(), FLA_Lyap_h_opc_var3(), FLA_Lyap_h_opc_var4(), FLA_Lyap_n_opc_var1(), FLA_Lyap_n_opc_var2(), FLA_Lyap_n_opc_var3(), FLA_Lyap_n_opc_var4(), FLA_Trinv_ln_opc_var2(), FLA_Trinv_ln_opc_var4(), FLA_Trinv_lu_opc_var2(), FLA_Trinv_lu_opc_var4(), FLA_Trinv_un_opc_var2(), FLA_Trinv_un_opc_var4(), FLA_Trinv_uu_opc_var2(), FLA_Trinv_uu_opc_var4(), and FLA_Trsv_external().
{
scomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
scomplex* x_conj;
int incx_conj;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_ccreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
bl1_toggle_trans( trans );
}
// Initialize with values assuming that trans is not conjnotrans.
x_conj = x;
incx_conj = incx;
// We want to handle the conjnotrans case, but without explicitly
// conjugating A. To do so, we leverage the fact that computing the
// product conj(A) * x is equivalent to computing conj( A * conj(x) ).
// Note: strictly speaking, we don't need to create a copy of x since
// the operation is simpler than, say, gemv. However, we create a copy
// anyway since in practice it performs better due to increased spatial
// locality.
if ( bl1_is_conjnotrans( trans ) )
{
x_conj = bl1_callocv( m );
incx_conj = 1;
bl1_ccopyv( BLIS1_CONJUGATE,
m,
x, incx,
x_conj, incx_conj );
}
bl1_ctrsv_blas( uplo,
trans,
diag,
m,
a, lda,
x_conj, incx_conj );
// Save the contents of and then free the temporary conjugated x vector.
if ( bl1_is_conjnotrans( trans ) )
{
bl1_ccopyv( BLIS1_CONJUGATE,
m,
x_conj, incx_conj,
x, incx );
bl1_cfree( x_conj );
}
// Free the temporary contiguous matrix.
bl1_cfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_ctrsv_blas | ( | uplo1_t | uplo, |
| trans1_t | trans, | ||
| diag1_t | diag, | ||
| int | m, | ||
| scomplex * | a, | ||
| int | lda, | ||
| scomplex * | x, | ||
| int | incx | ||
| ) |
References bl1_param_map_to_netlib_diag(), bl1_param_map_to_netlib_trans(), bl1_param_map_to_netlib_uplo(), cblas_ctrsv(), CblasColMajor, and F77_ctrsv().
Referenced by bl1_ctrsv().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
enum CBLAS_TRANSPOSE cblas_trans;
enum CBLAS_DIAG cblas_diag;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
bl1_param_map_to_netlib_trans( trans, &cblas_trans );
bl1_param_map_to_netlib_diag( diag, &cblas_diag );
cblas_ctrsv( cblas_order,
cblas_uplo,
cblas_trans,
cblas_diag,
m,
a, lda,
x, incx );
#else
char blas_uplo;
char blas_trans;
char blas_diag;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
bl1_param_map_to_netlib_trans( trans, &blas_trans );
bl1_param_map_to_netlib_diag( diag, &blas_diag );
F77_ctrsv( &blas_uplo,
&blas_trans,
&blas_diag,
&m,
a, &lda,
x, &incx );
#endif
}
| void bl1_ctrsvsx | ( | 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_ctrsv(), bl1_zero_dim1(), and BLIS1_NO_CONJUGATE.
{
scomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
scomplex* x_temp;
int incx_temp;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_ccreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Allocate a temporary vector conformal to x.
x_temp = bl1_callocv( m );
incx_temp = 1;
// Copy x to a temporary vector.
bl1_ccopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_temp, incx_temp );
// Perform the operation, storing the result to x_temp.
bl1_ctrsv( uplo,
trans,
diag,
m,
a, a_rs, a_cs,
x_temp, incx_temp );
// Scale y by beta.
bl1_cscalv( BLIS1_NO_CONJUGATE,
m,
beta,
y, incy );
// Axpy the partial result in x_temp into y.
bl1_caxpyv( BLIS1_NO_CONJUGATE,
m,
alpha,
x_temp, incx_temp,
y, incy );
// Free the temporary vector.
bl1_cfree( x_temp );
// Free the temporary contiguous matrix.
bl1_cfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_dgemv | ( | trans1_t | transa, |
| conj1_t | conjx, | ||
| int | m, | ||
| int | n, | ||
| double * | alpha, | ||
| double * | a, | ||
| int | a_rs, | ||
| int | a_cs, | ||
| double * | x, | ||
| int | incx, | ||
| double * | beta, | ||
| double * | y, | ||
| int | incy | ||
| ) |
References bl1_dcreate_contigm(), bl1_dfree_contigm(), bl1_dgemv_blas(), bl1_does_trans(), bl1_dscalv(), bl1_is_row_storage(), bl1_zero_dim2(), and BLIS1_NO_CONJUGATE.
Referenced by FLA_Accum_T_UT_fc_opd_var1(), FLA_Accum_T_UT_fr_opd_var1(), 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_var2(), FLA_Bidiag_UT_u_step_ofd_var3(), FLA_Bidiag_UT_u_step_ofd_var4(), FLA_Bidiag_UT_u_step_opd_var1(), FLA_Bidiag_UT_u_step_opd_var2(), FLA_Bidiag_UT_u_step_opd_var3(), FLA_Bidiag_UT_u_step_opd_var4(), FLA_Bidiag_UT_u_step_opd_var5(), FLA_CAQR2_UT_opd_var1(), FLA_Chol_l_opd_var2(), FLA_Chol_u_opd_var2(), FLA_Eig_gest_il_opd_var2(), FLA_Eig_gest_il_opd_var3(), FLA_Eig_gest_iu_opd_var2(), FLA_Eig_gest_iu_opd_var3(), FLA_Eig_gest_nl_opd_var2(), FLA_Eig_gest_nu_opd_var2(), FLA_Gemv_external(), FLA_Gemvc_external(), FLA_Hess_UT_step_ofd_var2(), FLA_Hess_UT_step_ofd_var3(), FLA_Hess_UT_step_ofd_var4(), FLA_Hess_UT_step_opd_var1(), FLA_Hess_UT_step_opd_var2(), FLA_Hess_UT_step_opd_var3(), FLA_Hess_UT_step_opd_var4(), FLA_Hess_UT_step_opd_var5(), FLA_LQ_UT_opd_var2(), FLA_LU_nopiv_opd_var2(), FLA_LU_nopiv_opd_var3(), FLA_LU_nopiv_opd_var4(), FLA_LU_piv_opd_var3(), FLA_LU_piv_opd_var4(), FLA_Lyap_h_opd_var2(), FLA_Lyap_h_opd_var3(), FLA_Lyap_n_opd_var2(), FLA_Lyap_n_opd_var3(), FLA_QR2_UT_opd_var1(), FLA_QR_UT_opd_var2(), 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(), FLA_Tridiag_UT_l_step_opd_var3(), FLA_Ttmm_l_opd_var2(), and FLA_Ttmm_u_opd_var2().
{
double* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim2( m, n ) )
{
int n_elem;
if ( bl1_does_trans( transa ) ) n_elem = n;
else n_elem = m;
bl1_dscalv( BLIS1_NO_CONJUGATE,
n_elem,
beta,
y, incy );
return;
}
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_dcreate_contigm( m,
n,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( m, n );
bl1_swap_ints( lda, inca );
bl1_toggle_trans( transa );
}
bl1_dgemv_blas( transa,
m,
n,
alpha,
a, lda,
x, incx,
beta,
y, incy );
// Free the temporary contiguous matrix.
bl1_dfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_dgemv_blas | ( | trans1_t | transa, |
| int | m, | ||
| int | n, | ||
| double * | alpha, | ||
| double * | a, | ||
| int | lda, | ||
| double * | x, | ||
| int | incx, | ||
| double * | beta, | ||
| double * | y, | ||
| int | incy | ||
| ) |
References bl1_param_map_to_netlib_trans(), cblas_dgemv(), CblasColMajor, and F77_dgemv().
Referenced by bl1_dgemv().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_TRANSPOSE cblas_transa;
bl1_param_map_to_netlib_trans( transa, &cblas_transa );
cblas_dgemv( cblas_order,
cblas_transa,
m,
n,
*alpha,
a, lda,
x, incx,
*beta,
y, incy );
#else
char blas_transa;
bl1_param_map_to_netlib_trans( transa, &blas_transa );
F77_dgemv( &blas_transa,
&m,
&n,
alpha,
a, &lda,
x, &incx,
beta,
y, &incy );
#endif
}
| 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().
{
int m_save = m;
int n_save = n;
double* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim2( m, n ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_dcreate_contigm( m,
n,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( m, n );
bl1_swap_ints( lda, inca );
bl1_swap_ints( incx, incy );
bl1_swap_conj( conjx, conjy );
bl1_dswap_pointers( x, y );
}
// Initialize with values assuming no conjugation of x.
bl1_dger_blas( m,
n,
alpha,
x, incx,
y, incy,
a, lda );
// Free the temporary contiguous matrix.
bl1_dfree_saved_contigm( m_save,
n_save,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| 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().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
cblas_dger( cblas_order,
m,
n,
*alpha,
x, incx,
y, incy,
a, lda );
#else
F77_dger( &m,
&n,
alpha,
x, &incx,
y, &incy,
a, &lda );
#endif
}
| void bl1_dhemv | ( | uplo1_t | uplo, |
| conj1_t | conj, | ||
| int | m, | ||
| double * | alpha, | ||
| double * | a, | ||
| int | a_rs, | ||
| int | a_cs, | ||
| double * | x, | ||
| int | incx, | ||
| double * | beta, | ||
| double * | y, | ||
| int | incy | ||
| ) |
References bl1_dsymv().
Referenced by FLA_Eig_gest_il_opd_var1(), FLA_Eig_gest_il_opd_var2(), FLA_Eig_gest_iu_opd_var1(), FLA_Eig_gest_iu_opd_var2(), FLA_Eig_gest_nl_opd_var1(), FLA_Eig_gest_nl_opd_var2(), FLA_Eig_gest_nu_opd_var1(), FLA_Eig_gest_nu_opd_var2(), FLA_Lyap_h_opd_var1(), and FLA_Lyap_n_opd_var1().
{
bl1_dsymv( uplo,
m,
alpha,
a, a_rs, a_cs,
x, incx,
beta,
y, incy );
}
| void bl1_dher | ( | uplo1_t | uplo, |
| conj1_t | conj, | ||
| int | m, | ||
| double * | alpha, | ||
| double * | x, | ||
| int | incx, | ||
| double * | a, | ||
| int | a_rs, | ||
| int | a_cs | ||
| ) |
References bl1_dsyr().
{
bl1_dsyr( uplo,
m,
alpha,
x, incx,
a, a_rs, a_cs );
}
| void bl1_dher2 | ( | uplo1_t | uplo, |
| conj1_t | conj, | ||
| int | m, | ||
| double * | alpha, | ||
| double * | x, | ||
| int | incx, | ||
| double * | y, | ||
| int | incy, | ||
| double * | a, | ||
| int | a_rs, | ||
| int | a_cs | ||
| ) |
References bl1_dsyr2().
Referenced by FLA_Eig_gest_il_opd_var4(), FLA_Eig_gest_il_opd_var5(), FLA_Eig_gest_iu_opd_var4(), FLA_Eig_gest_iu_opd_var5(), FLA_Eig_gest_nl_opd_var4(), FLA_Eig_gest_nl_opd_var5(), FLA_Eig_gest_nu_opd_var4(), FLA_Eig_gest_nu_opd_var5(), FLA_Lyap_h_opd_var4(), and FLA_Lyap_n_opd_var4().
{
bl1_dsyr2( uplo,
m,
alpha,
x, incx,
y, incy,
a, a_rs, a_cs );
}
| 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 | ||
| ) |
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().
{
double* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_dcreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
}
bl1_dsymv_blas( uplo,
m,
alpha,
a, lda,
x, incx,
beta,
y, incy );
// Free the temporary contiguous matrix.
bl1_dfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| 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 | ||
| ) |
References bl1_param_map_to_netlib_uplo(), cblas_dsymv(), CblasColMajor, and F77_dsymv().
Referenced by bl1_dsymv().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
cblas_dsymv( cblas_order,
cblas_uplo,
m,
*alpha,
a, lda,
x, incx,
*beta,
y, incy );
#else
char blas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
F77_dsymv( &blas_uplo,
&m,
alpha,
a, &lda,
x, &incx,
beta,
y, &incy );
#endif
}
| void bl1_dsyr | ( | uplo1_t | uplo, |
| int | m, | ||
| double * | alpha, | ||
| double * | x, | ||
| int | incx, | ||
| double * | a, | ||
| int | a_rs, | ||
| int | a_cs | ||
| ) |
References bl1_dcreate_contigmr(), bl1_dfree_saved_contigm(), bl1_dsyr_blas(), bl1_is_row_storage(), and bl1_zero_dim1().
Referenced by bl1_dher(), FLA_Chol_l_opd_var3(), FLA_Chol_u_opd_var3(), FLA_Her_external(), FLA_Herc_external(), FLA_Syr_external(), FLA_Ttmm_l_opd_var1(), and FLA_Ttmm_u_opd_var1().
{
int m_save = m;
double* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_dcreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
}
bl1_dsyr_blas( uplo,
m,
alpha,
x, incx,
a, lda );
// Free the temporary contiguous matrix.
bl1_dfree_saved_contigm( m_save,
m_save,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_dsyr2 | ( | uplo1_t | uplo, |
| int | m, | ||
| double * | alpha, | ||
| double * | x, | ||
| int | incx, | ||
| double * | y, | ||
| int | incy, | ||
| double * | a, | ||
| int | a_rs, | ||
| int | a_cs | ||
| ) |
References bl1_dcreate_contigmr(), bl1_dfree_saved_contigm(), bl1_dsyr2_blas(), bl1_is_row_storage(), and bl1_zero_dim1().
Referenced by bl1_dher2(), FLA_Her2_external(), FLA_Her2c_external(), FLA_Syr2_external(), FLA_Tridiag_UT_l_step_ofd_var2(), FLA_Tridiag_UT_l_step_opd_var1(), and FLA_Tridiag_UT_l_step_opd_var2().
{
int m_save = m;
double* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_dcreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
}
bl1_dsyr2_blas( uplo,
m,
alpha,
x, incx,
y, incy,
a, lda );
// Free the temporary contiguous matrix.
bl1_dfree_saved_contigm( m_save,
m_save,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_dsyr2_blas | ( | uplo1_t | uplo, |
| int | m, | ||
| double * | alpha, | ||
| double * | x, | ||
| int | incx, | ||
| double * | y, | ||
| int | incy, | ||
| double * | a, | ||
| int | lda | ||
| ) |
References bl1_param_map_to_netlib_uplo(), cblas_dsyr2(), CblasColMajor, and F77_dsyr2().
Referenced by bl1_dsyr2().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
cblas_dsyr2( cblas_order,
cblas_uplo,
m,
*alpha,
x, incx,
y, incy,
a, lda );
#else
char blas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
F77_dsyr2( &blas_uplo,
&m,
alpha,
x, &incx,
y, &incy,
a, &lda );
#endif
}
| void bl1_dsyr_blas | ( | uplo1_t | uplo, |
| int | m, | ||
| double * | alpha, | ||
| double * | x, | ||
| int | incx, | ||
| double * | a, | ||
| int | lda | ||
| ) |
References bl1_param_map_to_netlib_uplo(), cblas_dsyr(), CblasColMajor, and F77_dsyr().
Referenced by bl1_dsyr().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
cblas_dsyr( cblas_order,
cblas_uplo,
m,
*alpha,
x, incx,
a, lda );
#else
char blas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
F77_dsyr( &blas_uplo,
&m,
alpha,
x, &incx,
a, &lda );
#endif
}
| 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 | ||
| ) |
References bl1_dcreate_contigmr(), bl1_dfree_contigm(), bl1_dtrmv_blas(), bl1_is_row_storage(), and bl1_zero_dim1().
Referenced by bl1_dtrmvsx(), FLA_CAQR2_UT_opd_var1(), FLA_Eig_gest_nl_opd_var1(), FLA_Eig_gest_nl_opd_var5(), FLA_Eig_gest_nu_opd_var1(), FLA_Eig_gest_nu_opd_var5(), FLA_Hess_UT_step_opd_var5(), FLA_Trinv_ln_opd_var1(), FLA_Trinv_ln_opd_var4(), FLA_Trinv_lu_opd_var1(), FLA_Trinv_lu_opd_var4(), FLA_Trinv_un_opd_var1(), FLA_Trinv_un_opd_var4(), FLA_Trinv_uu_opd_var1(), FLA_Trinv_uu_opd_var4(), FLA_Trmv_external(), FLA_Ttmm_l_opd_var3(), and FLA_Ttmm_u_opd_var3().
{
double* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_dcreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
bl1_toggle_trans( trans );
}
bl1_dtrmv_blas( uplo,
trans,
diag,
m,
a, lda,
x, incx );
// Free the temporary contiguous matrix.
bl1_dfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_dtrmv_blas | ( | uplo1_t | uplo, |
| trans1_t | trans, | ||
| diag1_t | diag, | ||
| int | m, | ||
| double * | a, | ||
| int | lda, | ||
| double * | x, | ||
| int | incx | ||
| ) |
References bl1_param_map_to_netlib_diag(), bl1_param_map_to_netlib_trans(), bl1_param_map_to_netlib_uplo(), cblas_dtrmv(), CblasColMajor, and F77_dtrmv().
Referenced by bl1_dtrmv().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
enum CBLAS_TRANSPOSE cblas_trans;
enum CBLAS_DIAG cblas_diag;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
bl1_param_map_to_netlib_trans( trans, &cblas_trans );
bl1_param_map_to_netlib_diag( diag, &cblas_diag );
cblas_dtrmv( cblas_order,
cblas_uplo,
cblas_trans,
cblas_diag,
m,
a, lda,
x, incx );
#else
char blas_uplo;
char blas_trans;
char blas_diag;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
bl1_param_map_to_netlib_trans( trans, &blas_trans );
bl1_param_map_to_netlib_diag( diag, &blas_diag );
F77_dtrmv( &blas_uplo,
&blas_trans,
&blas_diag,
&m,
a, &lda,
x, &incx );
#endif
}
| 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().
{
double* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
double* x_temp;
int incx_temp;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_dcreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Allocate a temporary vector conformal to x.
x_temp = bl1_dallocv( m );
incx_temp = 1;
// Copy x to a temporary vector.
bl1_dcopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_temp, incx_temp );
// Perform the operation, storing the result to x_temp.
bl1_dtrmv( uplo,
trans,
diag,
m,
a, a_rs, a_cs,
x_temp, incx_temp );
// Scale y by beta.
bl1_dscalv( BLIS1_NO_CONJUGATE,
m,
beta,
y, incy );
// Axpy the partial result in x_temp into y.
bl1_daxpyv( BLIS1_NO_CONJUGATE,
m,
alpha,
x_temp, incx_temp,
y, incy );
// Free the temporary vector.
bl1_dfree( x_temp );
// Free the temporary contiguous matrix.
bl1_dfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_dtrsv | ( | uplo1_t | uplo, |
| trans1_t | trans, | ||
| diag1_t | diag, | ||
| int | m, | ||
| double * | a, | ||
| int | a_rs, | ||
| int | a_cs, | ||
| double * | x, | ||
| int | incx | ||
| ) |
References bl1_dcreate_contigmr(), bl1_dfree_contigm(), bl1_dtrsv_blas(), bl1_is_row_storage(), and bl1_zero_dim1().
Referenced by bl1_dtrsvsx(), FLA_Chol_l_opd_var1(), FLA_Chol_u_opd_var1(), FLA_Eig_gest_il_opd_var1(), FLA_Eig_gest_il_opd_var5(), FLA_Eig_gest_iu_opd_var1(), FLA_Eig_gest_iu_opd_var5(), FLA_Hess_UT_step_opd_var5(), FLA_LU_nopiv_opd_var1(), FLA_LU_nopiv_opd_var2(), FLA_LU_nopiv_opd_var3(), FLA_LU_piv_opd_var3(), FLA_Lyap_h_opd_var1(), FLA_Lyap_h_opd_var2(), FLA_Lyap_h_opd_var3(), FLA_Lyap_h_opd_var4(), FLA_Lyap_n_opd_var1(), FLA_Lyap_n_opd_var2(), FLA_Lyap_n_opd_var3(), FLA_Lyap_n_opd_var4(), FLA_Trinv_ln_opd_var2(), FLA_Trinv_ln_opd_var4(), FLA_Trinv_lu_opd_var2(), FLA_Trinv_lu_opd_var4(), FLA_Trinv_un_opd_var2(), FLA_Trinv_un_opd_var4(), FLA_Trinv_uu_opd_var2(), FLA_Trinv_uu_opd_var4(), and FLA_Trsv_external().
{
double* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_dcreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
bl1_toggle_trans( trans );
}
bl1_dtrsv_blas( uplo,
trans,
diag,
m,
a, lda,
x, incx );
// Free the temporary contiguous matrix.
bl1_dfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_dtrsv_blas | ( | uplo1_t | uplo, |
| trans1_t | trans, | ||
| diag1_t | diag, | ||
| int | m, | ||
| double * | a, | ||
| int | lda, | ||
| double * | x, | ||
| int | incx | ||
| ) |
References bl1_param_map_to_netlib_diag(), bl1_param_map_to_netlib_trans(), bl1_param_map_to_netlib_uplo(), cblas_dtrsv(), CblasColMajor, and F77_dtrsv().
Referenced by bl1_dtrsv().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
enum CBLAS_TRANSPOSE cblas_trans;
enum CBLAS_DIAG cblas_diag;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
bl1_param_map_to_netlib_trans( trans, &cblas_trans );
bl1_param_map_to_netlib_diag( diag, &cblas_diag );
cblas_dtrsv( cblas_order,
cblas_uplo,
cblas_trans,
cblas_diag,
m,
a, lda,
x, incx );
#else
char blas_uplo;
char blas_trans;
char blas_diag;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
bl1_param_map_to_netlib_trans( trans, &blas_trans );
bl1_param_map_to_netlib_diag( diag, &blas_diag );
F77_dtrsv( &blas_uplo,
&blas_trans,
&blas_diag,
&m,
a, &lda,
x, &incx );
#endif
}
| void bl1_dtrsvsx | ( | 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_dtrsv(), bl1_zero_dim1(), and BLIS1_NO_CONJUGATE.
{
double* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
double* x_temp;
int incx_temp;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_dcreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Allocate a temporary vector conformal to x.
x_temp = bl1_dallocv( m );
incx_temp = 1;
// Copy x to a temporary vector.
bl1_dcopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_temp, incx_temp );
// Perform the operation, storing the result to x_temp.
bl1_dtrsv( uplo,
trans,
diag,
m,
a, a_rs, a_cs,
x_temp, incx_temp );
// Scale y by beta.
bl1_dscalv( BLIS1_NO_CONJUGATE,
m,
beta,
y, incy );
// Axpy the partial result in x_temp into y.
bl1_daxpyv( BLIS1_NO_CONJUGATE,
m,
alpha,
x_temp, incx_temp,
y, incy );
// Free the temporary vector.
bl1_dfree( x_temp );
// Free the temporary contiguous matrix.
bl1_dfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_sgemv | ( | trans1_t | transa, |
| conj1_t | conjx, | ||
| int | m, | ||
| int | n, | ||
| float * | alpha, | ||
| float * | a, | ||
| int | a_rs, | ||
| int | a_cs, | ||
| float * | x, | ||
| int | incx, | ||
| float * | beta, | ||
| float * | y, | ||
| int | incy | ||
| ) |
References bl1_does_trans(), bl1_is_row_storage(), bl1_screate_contigm(), bl1_sfree_contigm(), bl1_sgemv_blas(), bl1_sscalv(), bl1_zero_dim2(), and BLIS1_NO_CONJUGATE.
Referenced by FLA_Accum_T_UT_fc_ops_var1(), FLA_Accum_T_UT_fr_ops_var1(), 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_var2(), FLA_Bidiag_UT_u_step_ofs_var3(), FLA_Bidiag_UT_u_step_ofs_var4(), FLA_Bidiag_UT_u_step_ops_var1(), FLA_Bidiag_UT_u_step_ops_var2(), FLA_Bidiag_UT_u_step_ops_var3(), FLA_Bidiag_UT_u_step_ops_var4(), FLA_Bidiag_UT_u_step_ops_var5(), FLA_CAQR2_UT_ops_var1(), FLA_Chol_l_ops_var2(), FLA_Chol_u_ops_var2(), FLA_Eig_gest_il_ops_var2(), FLA_Eig_gest_il_ops_var3(), FLA_Eig_gest_iu_ops_var2(), FLA_Eig_gest_iu_ops_var3(), FLA_Eig_gest_nl_ops_var2(), FLA_Eig_gest_nu_ops_var2(), FLA_Gemv_external(), FLA_Gemvc_external(), FLA_Hess_UT_step_ofs_var2(), FLA_Hess_UT_step_ofs_var3(), FLA_Hess_UT_step_ofs_var4(), FLA_Hess_UT_step_ops_var1(), FLA_Hess_UT_step_ops_var2(), FLA_Hess_UT_step_ops_var3(), FLA_Hess_UT_step_ops_var4(), FLA_Hess_UT_step_ops_var5(), FLA_LQ_UT_ops_var2(), FLA_LU_nopiv_ops_var2(), FLA_LU_nopiv_ops_var3(), FLA_LU_nopiv_ops_var4(), FLA_LU_piv_ops_var3(), FLA_LU_piv_ops_var4(), FLA_Lyap_h_ops_var2(), FLA_Lyap_h_ops_var3(), FLA_Lyap_n_ops_var2(), FLA_Lyap_n_ops_var3(), FLA_QR2_UT_ops_var1(), FLA_QR_UT_ops_var2(), 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(), FLA_Tridiag_UT_l_step_ops_var3(), FLA_Ttmm_l_ops_var2(), and FLA_Ttmm_u_ops_var2().
{
float* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim2( m, n ) )
{
int n_elem;
if ( bl1_does_trans( transa ) ) n_elem = n;
else n_elem = m;
bl1_sscalv( BLIS1_NO_CONJUGATE,
n_elem,
beta,
y, incy );
return;
}
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_screate_contigm( m,
n,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( m, n );
bl1_swap_ints( lda, inca );
bl1_toggle_trans( transa );
}
bl1_sgemv_blas( transa,
m,
n,
alpha,
a, lda,
x, incx,
beta,
y, incy );
// Free the temporary contiguous matrix.
bl1_sfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_sgemv_blas | ( | trans1_t | transa, |
| int | m, | ||
| int | n, | ||
| float * | alpha, | ||
| float * | a, | ||
| int | lda, | ||
| float * | x, | ||
| int | incx, | ||
| float * | beta, | ||
| float * | y, | ||
| int | incy | ||
| ) |
References bl1_param_map_to_netlib_trans(), cblas_sgemv(), CblasColMajor, and F77_sgemv().
Referenced by bl1_sgemv().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_TRANSPOSE cblas_transa;
bl1_param_map_to_netlib_trans( transa, &cblas_transa );
cblas_sgemv( cblas_order,
cblas_transa,
m,
n,
*alpha,
a, lda,
x, incx,
*beta,
y, incy );
#else
char blas_transa;
bl1_param_map_to_netlib_trans( transa, &blas_transa );
F77_sgemv( &blas_transa,
&m,
&n,
alpha,
a, &lda,
x, &incx,
beta,
y, &incy );
#endif
}
| 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().
{
int m_save = m;
int n_save = n;
float* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim2( m, n ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_screate_contigm( m,
n,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( m, n );
bl1_swap_ints( lda, inca );
bl1_swap_ints( incx, incy );
bl1_swap_conj( conjx, conjy );
bl1_sswap_pointers( x, y );
}
// Initialize with values assuming no conjugation of x.
bl1_sger_blas( m,
n,
alpha,
x, incx,
y, incy,
a, lda );
// Free the temporary contiguous matrix.
bl1_sfree_saved_contigm( m_save,
n_save,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| 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().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
cblas_sger( cblas_order,
m,
n,
*alpha,
x, incx,
y, incy,
a, lda );
#else
F77_sger( &m,
&n,
alpha,
x, &incx,
y, &incy,
a, &lda );
#endif
}
| void bl1_shemv | ( | uplo1_t | uplo, |
| conj1_t | conj, | ||
| int | m, | ||
| float * | alpha, | ||
| float * | a, | ||
| int | a_rs, | ||
| int | a_cs, | ||
| float * | x, | ||
| int | incx, | ||
| float * | beta, | ||
| float * | y, | ||
| int | incy | ||
| ) |
References bl1_ssymv().
Referenced by FLA_Eig_gest_il_ops_var1(), FLA_Eig_gest_il_ops_var2(), FLA_Eig_gest_iu_ops_var1(), FLA_Eig_gest_iu_ops_var2(), FLA_Eig_gest_nl_ops_var1(), FLA_Eig_gest_nl_ops_var2(), FLA_Eig_gest_nu_ops_var1(), FLA_Eig_gest_nu_ops_var2(), FLA_Lyap_h_ops_var1(), and FLA_Lyap_n_ops_var1().
{
bl1_ssymv( uplo,
m,
alpha,
a, a_rs, a_cs,
x, incx,
beta,
y, incy );
}
| void bl1_sher | ( | uplo1_t | uplo, |
| conj1_t | conj, | ||
| int | m, | ||
| float * | alpha, | ||
| float * | x, | ||
| int | incx, | ||
| float * | a, | ||
| int | a_rs, | ||
| int | a_cs | ||
| ) |
References bl1_ssyr().
{
bl1_ssyr( uplo,
m,
alpha,
x, incx,
a, a_rs, a_cs );
}
| void bl1_sher2 | ( | uplo1_t | uplo, |
| conj1_t | conj, | ||
| int | m, | ||
| float * | alpha, | ||
| float * | x, | ||
| int | incx, | ||
| float * | y, | ||
| int | incy, | ||
| float * | a, | ||
| int | a_rs, | ||
| int | a_cs | ||
| ) |
References bl1_ssyr2().
Referenced by FLA_Eig_gest_il_ops_var4(), FLA_Eig_gest_il_ops_var5(), FLA_Eig_gest_iu_ops_var4(), FLA_Eig_gest_iu_ops_var5(), FLA_Eig_gest_nl_ops_var4(), FLA_Eig_gest_nl_ops_var5(), FLA_Eig_gest_nu_ops_var4(), FLA_Eig_gest_nu_ops_var5(), FLA_Lyap_h_ops_var4(), and FLA_Lyap_n_ops_var4().
{
bl1_ssyr2( uplo,
m,
alpha,
x, incx,
y, incy,
a, a_rs, a_cs );
}
| 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 | ||
| ) |
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().
{
float* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_screate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
}
bl1_ssymv_blas( uplo,
m,
alpha,
a, lda,
x, incx,
beta,
y, incy );
// Free the temporary contiguous matrix.
bl1_sfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| 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 | ||
| ) |
References bl1_param_map_to_netlib_uplo(), cblas_ssymv(), CblasColMajor, and F77_ssymv().
Referenced by bl1_ssymv().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
cblas_ssymv( cblas_order,
cblas_uplo,
m,
*alpha,
a, lda,
x, incx,
*beta,
y, incy );
#else
char blas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
F77_ssymv( &blas_uplo,
&m,
alpha,
a, &lda,
x, &incx,
beta,
y, &incy );
#endif
}
| void bl1_ssyr | ( | uplo1_t | uplo, |
| int | m, | ||
| float * | alpha, | ||
| float * | x, | ||
| int | incx, | ||
| float * | a, | ||
| int | a_rs, | ||
| int | a_cs | ||
| ) |
References bl1_is_row_storage(), bl1_screate_contigmr(), bl1_sfree_saved_contigm(), bl1_ssyr_blas(), and bl1_zero_dim1().
Referenced by bl1_sher(), FLA_Chol_l_ops_var3(), FLA_Chol_u_ops_var3(), FLA_Her_external(), FLA_Herc_external(), FLA_Syr_external(), FLA_Ttmm_l_ops_var1(), and FLA_Ttmm_u_ops_var1().
{
int m_save = m;
float* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_screate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
}
bl1_ssyr_blas( uplo,
m,
alpha,
x, incx,
a, lda );
// Free the temporary contiguous matrix.
bl1_sfree_saved_contigm( m_save,
m_save,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_ssyr2 | ( | uplo1_t | uplo, |
| int | m, | ||
| 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_contigmr(), bl1_sfree_saved_contigm(), bl1_ssyr2_blas(), and bl1_zero_dim1().
Referenced by bl1_sher2(), FLA_Her2_external(), FLA_Her2c_external(), FLA_Syr2_external(), FLA_Tridiag_UT_l_step_ofs_var2(), FLA_Tridiag_UT_l_step_ops_var1(), and FLA_Tridiag_UT_l_step_ops_var2().
{
int m_save = m;
float* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_screate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
}
bl1_ssyr2_blas( uplo,
m,
alpha,
x, incx,
y, incy,
a, lda );
// Free the temporary contiguous matrix.
bl1_sfree_saved_contigm( m_save,
m_save,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_ssyr2_blas | ( | uplo1_t | uplo, |
| int | m, | ||
| float * | alpha, | ||
| float * | x, | ||
| int | incx, | ||
| float * | y, | ||
| int | incy, | ||
| float * | a, | ||
| int | lda | ||
| ) |
References bl1_param_map_to_netlib_uplo(), cblas_ssyr2(), CblasColMajor, and F77_ssyr2().
Referenced by bl1_ssyr2().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
cblas_ssyr2( cblas_order,
cblas_uplo,
m,
*alpha,
x, incx,
y, incy,
a, lda );
#else
char blas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
F77_ssyr2( &blas_uplo,
&m,
alpha,
x, &incx,
y, &incy,
a, &lda );
#endif
}
| void bl1_ssyr_blas | ( | uplo1_t | uplo, |
| int | m, | ||
| float * | alpha, | ||
| float * | x, | ||
| int | incx, | ||
| float * | a, | ||
| int | lda | ||
| ) |
References bl1_param_map_to_netlib_uplo(), cblas_ssyr(), CblasColMajor, and F77_ssyr().
Referenced by bl1_ssyr().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
cblas_ssyr( cblas_order,
cblas_uplo,
m,
*alpha,
x, incx,
a, lda );
#else
char blas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
F77_ssyr( &blas_uplo,
&m,
alpha,
x, &incx,
a, &lda );
#endif
}
| 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 | ||
| ) |
References bl1_is_row_storage(), bl1_screate_contigmr(), bl1_sfree_contigm(), bl1_strmv_blas(), and bl1_zero_dim1().
Referenced by bl1_strmvsx(), FLA_CAQR2_UT_ops_var1(), FLA_Eig_gest_nl_ops_var1(), FLA_Eig_gest_nl_ops_var5(), FLA_Eig_gest_nu_ops_var1(), FLA_Eig_gest_nu_ops_var5(), FLA_Hess_UT_step_ops_var5(), FLA_Trinv_ln_ops_var1(), FLA_Trinv_ln_ops_var4(), FLA_Trinv_lu_ops_var1(), FLA_Trinv_lu_ops_var4(), FLA_Trinv_un_ops_var1(), FLA_Trinv_un_ops_var4(), FLA_Trinv_uu_ops_var1(), FLA_Trinv_uu_ops_var4(), FLA_Trmv_external(), FLA_Ttmm_l_ops_var3(), and FLA_Ttmm_u_ops_var3().
{
float* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_screate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
bl1_toggle_trans( trans );
}
bl1_strmv_blas( uplo,
trans,
diag,
m,
a, lda,
x, incx );
// Free the temporary contiguous matrix.
bl1_sfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_strmv_blas | ( | uplo1_t | uplo, |
| trans1_t | trans, | ||
| diag1_t | diag, | ||
| int | m, | ||
| float * | a, | ||
| int | lda, | ||
| float * | x, | ||
| int | incx | ||
| ) |
References bl1_param_map_to_netlib_diag(), bl1_param_map_to_netlib_trans(), bl1_param_map_to_netlib_uplo(), cblas_strmv(), CblasColMajor, and F77_strmv().
Referenced by bl1_strmv().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
enum CBLAS_TRANSPOSE cblas_trans;
enum CBLAS_DIAG cblas_diag;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
bl1_param_map_to_netlib_trans( trans, &cblas_trans );
bl1_param_map_to_netlib_diag( diag, &cblas_diag );
cblas_strmv( cblas_order,
cblas_uplo,
cblas_trans,
cblas_diag,
m,
a, lda,
x, incx );
#else
char blas_uplo;
char blas_trans;
char blas_diag;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
bl1_param_map_to_netlib_trans( trans, &blas_trans );
bl1_param_map_to_netlib_diag( diag, &blas_diag );
F77_strmv( &blas_uplo,
&blas_trans,
&blas_diag,
&m,
a, &lda,
x, &incx );
#endif
}
| 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().
{
float* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
float* x_temp;
int incx_temp;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_screate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Allocate a temporary vector conformal to x.
x_temp = bl1_sallocv( m );
incx_temp = 1;
// Copy x to a temporary vector.
bl1_scopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_temp, incx_temp );
// Perform the operation, storing the result to x_temp.
bl1_strmv( uplo,
trans,
diag,
m,
a, a_rs, a_cs,
x_temp, incx_temp );
// Scale y by beta.
bl1_sscalv( BLIS1_NO_CONJUGATE,
m,
beta,
y, incy );
// Axpy the partial result in x_temp into y.
bl1_saxpyv( BLIS1_NO_CONJUGATE,
m,
alpha,
x_temp, incx_temp,
y, incy );
// Free the temporary vector.
bl1_sfree( x_temp );
// Free the temporary contiguous matrix.
bl1_sfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_strsv | ( | uplo1_t | uplo, |
| trans1_t | trans, | ||
| diag1_t | diag, | ||
| int | m, | ||
| float * | a, | ||
| int | a_rs, | ||
| int | a_cs, | ||
| float * | x, | ||
| int | incx | ||
| ) |
References bl1_is_row_storage(), bl1_screate_contigmr(), bl1_sfree_contigm(), bl1_strsv_blas(), and bl1_zero_dim1().
Referenced by bl1_strsvsx(), FLA_Chol_l_ops_var1(), FLA_Chol_u_ops_var1(), FLA_Eig_gest_il_ops_var1(), FLA_Eig_gest_il_ops_var5(), FLA_Eig_gest_iu_ops_var1(), FLA_Eig_gest_iu_ops_var5(), FLA_Hess_UT_step_ops_var5(), FLA_LU_nopiv_ops_var1(), FLA_LU_nopiv_ops_var2(), FLA_LU_nopiv_ops_var3(), FLA_LU_piv_ops_var3(), FLA_Lyap_h_ops_var1(), FLA_Lyap_h_ops_var2(), FLA_Lyap_h_ops_var3(), FLA_Lyap_h_ops_var4(), FLA_Lyap_n_ops_var1(), FLA_Lyap_n_ops_var2(), FLA_Lyap_n_ops_var3(), FLA_Lyap_n_ops_var4(), FLA_Trinv_ln_ops_var2(), FLA_Trinv_ln_ops_var4(), FLA_Trinv_lu_ops_var2(), FLA_Trinv_lu_ops_var4(), FLA_Trinv_un_ops_var2(), FLA_Trinv_un_ops_var4(), FLA_Trinv_uu_ops_var2(), FLA_Trinv_uu_ops_var4(), and FLA_Trsv_external().
{
float* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_screate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
bl1_toggle_trans( trans );
}
bl1_strsv_blas( uplo,
trans,
diag,
m,
a, lda,
x, incx );
// Free the temporary contiguous matrix.
bl1_sfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_strsv_blas | ( | uplo1_t | uplo, |
| trans1_t | trans, | ||
| diag1_t | diag, | ||
| int | m, | ||
| float * | a, | ||
| int | lda, | ||
| float * | x, | ||
| int | incx | ||
| ) |
References bl1_param_map_to_netlib_diag(), bl1_param_map_to_netlib_trans(), bl1_param_map_to_netlib_uplo(), cblas_strsv(), CblasColMajor, and F77_strsv().
Referenced by bl1_strsv().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
enum CBLAS_TRANSPOSE cblas_trans;
enum CBLAS_DIAG cblas_diag;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
bl1_param_map_to_netlib_trans( trans, &cblas_trans );
bl1_param_map_to_netlib_diag( diag, &cblas_diag );
cblas_strsv( cblas_order,
cblas_uplo,
cblas_trans,
cblas_diag,
m,
a, lda,
x, incx );
#else
char blas_uplo;
char blas_trans;
char blas_diag;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
bl1_param_map_to_netlib_trans( trans, &blas_trans );
bl1_param_map_to_netlib_diag( diag, &blas_diag );
F77_strsv( &blas_uplo,
&blas_trans,
&blas_diag,
&m,
a, &lda,
x, &incx );
#endif
}
| void bl1_strsvsx | ( | 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_strsv(), bl1_zero_dim1(), and BLIS1_NO_CONJUGATE.
{
float* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
float* x_temp;
int incx_temp;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_screate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Allocate a temporary vector conformal to x.
x_temp = bl1_sallocv( m );
incx_temp = 1;
// Copy x to a temporary vector.
bl1_scopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_temp, incx_temp );
// Perform the operation, storing the result to x_temp.
bl1_strsv( uplo,
trans,
diag,
m,
a, a_rs, a_cs,
x_temp, incx_temp );
// Scale y by beta.
bl1_sscalv( BLIS1_NO_CONJUGATE,
m,
beta,
y, incy );
// Axpy the partial result in x_temp into y.
bl1_saxpyv( BLIS1_NO_CONJUGATE,
m,
alpha,
x_temp, incx_temp,
y, incy );
// Free the temporary vector.
bl1_sfree( x_temp );
// Free the temporary contiguous matrix.
bl1_sfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_zgemv | ( | trans1_t | transa, |
| conj1_t | conjx, | ||
| int | m, | ||
| int | n, | ||
| dcomplex * | alpha, | ||
| dcomplex * | a, | ||
| int | a_rs, | ||
| int | a_cs, | ||
| dcomplex * | x, | ||
| int | incx, | ||
| dcomplex * | beta, | ||
| dcomplex * | y, | ||
| int | incy | ||
| ) |
References bl1_does_trans(), bl1_is_conj(), bl1_is_conjnotrans(), bl1_is_row_storage(), bl1_z0(), bl1_z1(), bl1_zallocv(), bl1_zaxpyv(), bl1_zconjv(), bl1_zcopyv(), bl1_zcreate_contigm(), bl1_zero_dim2(), bl1_zfree(), bl1_zfree_contigm(), bl1_zgemv_blas(), bl1_zscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, and BLIS1_NO_TRANSPOSE.
Referenced by FLA_Accum_T_UT_fc_opz_var1(), FLA_Accum_T_UT_fr_opz_var1(), 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_var2(), FLA_Bidiag_UT_u_step_ofz_var3(), FLA_Bidiag_UT_u_step_ofz_var4(), FLA_Bidiag_UT_u_step_opz_var1(), FLA_Bidiag_UT_u_step_opz_var2(), FLA_Bidiag_UT_u_step_opz_var3(), FLA_Bidiag_UT_u_step_opz_var4(), FLA_Bidiag_UT_u_step_opz_var5(), FLA_CAQR2_UT_opz_var1(), FLA_Chol_l_opz_var2(), FLA_Chol_u_opz_var2(), FLA_Eig_gest_il_opz_var2(), FLA_Eig_gest_il_opz_var3(), FLA_Eig_gest_iu_opz_var2(), FLA_Eig_gest_iu_opz_var3(), FLA_Eig_gest_nl_opz_var2(), FLA_Eig_gest_nu_opz_var2(), FLA_Gemv_external(), FLA_Gemvc_external(), FLA_Hess_UT_step_ofz_var2(), FLA_Hess_UT_step_ofz_var3(), FLA_Hess_UT_step_ofz_var4(), FLA_Hess_UT_step_opz_var1(), FLA_Hess_UT_step_opz_var2(), FLA_Hess_UT_step_opz_var3(), FLA_Hess_UT_step_opz_var4(), FLA_Hess_UT_step_opz_var5(), FLA_LQ_UT_opz_var2(), FLA_LU_nopiv_opz_var2(), FLA_LU_nopiv_opz_var3(), FLA_LU_nopiv_opz_var4(), FLA_LU_piv_opz_var3(), FLA_LU_piv_opz_var4(), FLA_Lyap_h_opz_var2(), FLA_Lyap_h_opz_var3(), FLA_Lyap_n_opz_var2(), FLA_Lyap_n_opz_var3(), FLA_QR2_UT_opz_var1(), FLA_QR_UT_opz_var2(), FLA_Tridiag_UT_l_step_ofz_var2(), FLA_Tridiag_UT_l_step_ofz_var3(), FLA_Tridiag_UT_l_step_opz_var1(), FLA_Tridiag_UT_l_step_opz_var2(), FLA_Tridiag_UT_l_step_opz_var3(), FLA_Ttmm_l_opz_var2(), and FLA_Ttmm_u_opz_var2().
{
dcomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
dcomplex zero = bl1_z0();
dcomplex one = bl1_z1();
dcomplex* x_conj;
dcomplex* ax;
int lda, inca;
int n_x;
int incx_conj;
int incax;
// Return early if possible.
if ( bl1_zero_dim2( m, n ) )
{
int n_elem;
if ( bl1_does_trans( transa ) ) n_elem = n;
else n_elem = m;
bl1_zscalv( BLIS1_NO_CONJUGATE,
n_elem,
beta,
y, incy );
return;
}
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_zcreate_contigm( m,
n,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( m, n );
bl1_swap_ints( lda, inca );
bl1_toggle_trans( transa );
}
// Initialize with values assuming no conjugation of x.
x_conj = x;
incx_conj = incx;
// We need a temporary vector for the cases when x is conjugated, and
// also for the cases where A is conjugated.
if ( bl1_is_conj( conjx ) || bl1_is_conjnotrans( transa ) )
{
if ( bl1_does_trans( transa ) ) n_x = m;
else n_x = n;
x_conj = bl1_zallocv( n_x );
incx_conj = 1;
bl1_zcopyv( conjx,
n_x,
x, incx,
x_conj, incx_conj );
}
// We want to handle the conjnotrans case, but without explicitly
// conjugating A. To do so, we leverage the fact that computing the
// product conj(A) * x is equivalent to computing conj( A * conj(x) ).
if ( bl1_is_conjnotrans( transa ) )
{
// We need a temporary vector for the product A * conj(x), which is
// conformal to y. We know we are not transposing, so y is length m.
ax = bl1_zallocv( m );
incax = 1;
// Start by conjugating the contents of the temporary copy of x.
bl1_zconjv( n,
x_conj, incx_conj );
// Compute A * conj(x) where x is the temporary copy of x created above.
bl1_zgemv_blas( BLIS1_NO_TRANSPOSE,
m,
n,
&one,
a, lda,
x_conj, incx_conj,
&zero,
ax, incax );
// Scale y by beta.
bl1_zscalv( BLIS1_NO_CONJUGATE,
m,
beta,
y, incy );
// And finally, accumulate alpha * conj( A * conj(x) ) into y.
bl1_zaxpyv( BLIS1_CONJUGATE,
m,
alpha,
ax, incax,
y, incy);
// Free the temporary vector for Ax.
bl1_zfree( ax );
}
else // notrans, trans, or conjtrans
{
bl1_zgemv_blas( transa,
m,
n,
alpha,
a, lda,
x_conj, incx_conj,
beta,
y, incy );
}
// Free the temporary conjugated x vector.
if ( bl1_is_conj( conjx ) || bl1_is_conjnotrans( transa ) )
bl1_zfree( x_conj );
// Free the temporary contiguous matrix.
bl1_zfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_zgemv_blas | ( | trans1_t | transa, |
| int | m, | ||
| int | n, | ||
| dcomplex * | alpha, | ||
| dcomplex * | a, | ||
| int | lda, | ||
| dcomplex * | x, | ||
| int | incx, | ||
| dcomplex * | beta, | ||
| dcomplex * | y, | ||
| int | incy | ||
| ) |
References bl1_param_map_to_netlib_trans(), cblas_zgemv(), CblasColMajor, and F77_zgemv().
Referenced by bl1_zgemv().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_TRANSPOSE cblas_transa;
bl1_param_map_to_netlib_trans( transa, &cblas_transa );
cblas_zgemv( cblas_order,
cblas_transa,
m,
n,
alpha,
a, lda,
x, incx,
beta,
y, incy );
#else
char blas_transa;
bl1_param_map_to_netlib_trans( transa, &blas_transa );
F77_zgemv( &blas_transa,
&m,
&n,
alpha,
a, &lda,
x, &incx,
beta,
y, &incy );
#endif
}
| 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().
{
int m_save = m;
int n_save = n;
dcomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
dcomplex* x_conj;
int incx_conj;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim2( m, n ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_zcreate_contigm( m,
n,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( m, n );
bl1_swap_ints( lda, inca );
bl1_swap_ints( incx, incy );
bl1_swap_conj( conjx, conjy );
bl1_zswap_pointers( x, y );
}
// Initialize with values assuming no conjugation of x.
x_conj = x;
incx_conj = incx;
// We need a temporary vector for the cases when x is conjugated.
if ( bl1_is_conj( conjx ) )
{
x_conj = bl1_zallocv( m );
incx_conj = 1;
bl1_zcopyv( BLIS1_CONJUGATE,
m,
x, incx,
x_conj, incx_conj );
}
// Conjugation of y is supported in the BLAS.
if ( bl1_is_conj( conjy ) )
{
bl1_zgerc_blas( m,
n,
alpha,
x_conj, incx_conj,
y, incy,
a, lda );
}
else
{
bl1_zgeru_blas( m,
n,
alpha,
x_conj, incx_conj,
y, incy,
a, lda );
}
// Free the temporary conjugated x vector.
if ( bl1_is_conj( conjx ) )
bl1_zfree( x_conj );
// Free the temporary contiguous matrix.
bl1_zfree_saved_contigm( m_save,
n_save,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| 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().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
cblas_zgerc( cblas_order,
m,
n,
alpha,
x, incx,
y, incy,
a, lda );
#else
F77_zgerc ( &m,
&n,
alpha,
x, &incx,
y, &incy,
a, &lda );
#endif
}
| 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().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
cblas_zgeru( cblas_order,
m,
n,
alpha,
x, incx,
y, incy,
a, lda );
#else
F77_zgeru ( &m,
&n,
alpha,
x, &incx,
y, &incy,
a, &lda );
#endif
}
| void bl1_zhemv | ( | uplo1_t | uplo, |
| conj1_t | conj, | ||
| int | m, | ||
| dcomplex * | alpha, | ||
| dcomplex * | a, | ||
| int | a_rs, | ||
| int | a_cs, | ||
| dcomplex * | x, | ||
| int | incx, | ||
| dcomplex * | beta, | ||
| dcomplex * | y, | ||
| int | incy | ||
| ) |
References bl1_is_conj(), bl1_is_row_storage(), bl1_z0(), bl1_z1(), bl1_zallocv(), bl1_zaxpyv(), bl1_zcopyv(), bl1_zcreate_contigmr(), bl1_zero_dim1(), bl1_zfree(), bl1_zfree_contigm(), bl1_zhemv_blas(), bl1_zscalv(), BLIS1_CONJUGATE, and BLIS1_NO_CONJUGATE.
Referenced by FLA_Eig_gest_il_opz_var1(), FLA_Eig_gest_il_opz_var2(), FLA_Eig_gest_iu_opz_var1(), FLA_Eig_gest_iu_opz_var2(), FLA_Eig_gest_nl_opz_var1(), FLA_Eig_gest_nl_opz_var2(), FLA_Eig_gest_nu_opz_var1(), FLA_Eig_gest_nu_opz_var2(), FLA_Hemv_external(), FLA_Hemvc_external(), FLA_Lyap_h_opz_var1(), FLA_Lyap_n_opz_var1(), FLA_Tridiag_UT_l_step_ofz_var2(), FLA_Tridiag_UT_l_step_ofz_var3(), FLA_Tridiag_UT_l_step_opz_var1(), FLA_Tridiag_UT_l_step_opz_var2(), and FLA_Tridiag_UT_l_step_opz_var3().
{
dcomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
dcomplex zero = bl1_z0();
dcomplex one = bl1_z1();
dcomplex* x_conj;
dcomplex* ax;
int lda, inca;
int incx_conj;
int incax;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_zcreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
bl1_toggle_conj( conj );
}
// We want to handle the case where A is conjugated, but without
// explicitly or conjugating A. To do so, we leverage the fact that
// computing the product conj(A) * x is equivalent to computing
// conj( A * conj(x) ).
if ( bl1_is_conj( conj ) )
{
// We need a temporary vector so we can create a conjugated copy of x.
x_conj = bl1_zallocv( m );
incx_conj = 1;
bl1_zcopyv( BLIS1_CONJUGATE,
m,
x, incx,
x_conj, incx_conj );
// We need a temporary vector for the product A * conj(x), which is
// conformal to y (and x).
ax = bl1_zallocv( m );
incax = 1;
// Compute A * conj(x) where x is the temporary copy of x created above.
bl1_zhemv_blas( uplo,
m,
&one,
a, lda,
x_conj, incx_conj,
&zero,
ax, incax );
// Scale y by beta.
bl1_zscalv( BLIS1_NO_CONJUGATE,
m,
beta,
y, incy );
// And finally, accumulate alpha * conj( A * conj(x) ) into y.
bl1_zaxpyv( BLIS1_CONJUGATE,
m,
alpha,
ax, incax,
y, incy);
// Free the temporary vectors for x and Ax.
bl1_zfree( x_conj );
bl1_zfree( ax );
}
else // noconj
{
bl1_zhemv_blas( uplo,
m,
alpha,
a, lda,
x, incx,
beta,
y, incy );
}
// Free the temporary contiguous matrix.
bl1_zfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_zhemv_blas | ( | uplo1_t | uplo, |
| int | m, | ||
| dcomplex * | alpha, | ||
| dcomplex * | a, | ||
| int | lda, | ||
| dcomplex * | x, | ||
| int | incx, | ||
| dcomplex * | beta, | ||
| dcomplex * | y, | ||
| int | incy | ||
| ) |
References bl1_param_map_to_netlib_uplo(), cblas_zhemv(), CblasColMajor, and F77_zhemv().
Referenced by bl1_zhemv().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
cblas_zhemv( cblas_order,
cblas_uplo,
m,
alpha,
a, lda,
x, incx,
beta,
y, incy );
#else
char blas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
F77_zhemv( &blas_uplo,
&m,
alpha,
a, &lda,
x, &incx,
beta,
y, &incy );
#endif
}
| void bl1_zher | ( | uplo1_t | uplo, |
| conj1_t | conj, | ||
| int | m, | ||
| double * | alpha, | ||
| dcomplex * | x, | ||
| int | incx, | ||
| dcomplex * | a, | ||
| int | a_rs, | ||
| int | a_cs | ||
| ) |
References bl1_is_conj(), bl1_is_row_storage(), bl1_zallocv(), bl1_zcopyv(), bl1_zcreate_contigmr(), bl1_zero_dim1(), bl1_zfree(), bl1_zfree_saved_contigm(), bl1_zher_blas(), and BLIS1_CONJUGATE.
Referenced by FLA_Chol_l_opz_var3(), FLA_Chol_u_opz_var3(), FLA_Her_external(), FLA_Herc_external(), FLA_Ttmm_l_opz_var1(), and FLA_Ttmm_u_opz_var1().
{
int m_save = m;
dcomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
dcomplex* x_conj;
int incx_conj;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_zcreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
bl1_toggle_conj( conj );
}
// Initialize with values assuming no conjugation of ( x * x' ).
x_conj = x;
incx_conj = incx;
// We want to handle the case where ( x * x' ) is conjugated, but
// without explicitly conjugating the matrix. To do so, we leverage
// the fact that computing the product conj( x * x' ) is equivalent
// to computing ( conj(x) * conj(x)' ), since ( x * x' ) is Hermitian.
if ( bl1_is_conj( conj ) )
{
x_conj = bl1_zallocv( m );
incx_conj = 1;
bl1_zcopyv( BLIS1_CONJUGATE,
m,
x, incx,
x_conj, incx_conj );
}
bl1_zher_blas( uplo,
m,
alpha,
x_conj, incx_conj,
a, lda );
// Free the temporary conjugated x vector.
if ( bl1_is_conj( conj ) )
bl1_zfree( x_conj );
// Free the temporary contiguous matrix.
bl1_zfree_saved_contigm( m_save,
m_save,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_zher2 | ( | uplo1_t | uplo, |
| conj1_t | conj, | ||
| int | m, | ||
| 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_contigmr(), bl1_zero_dim1(), bl1_zfree(), bl1_zfree_saved_contigm(), bl1_zher2_blas(), and BLIS1_CONJUGATE.
Referenced by FLA_Eig_gest_il_opz_var4(), FLA_Eig_gest_il_opz_var5(), FLA_Eig_gest_iu_opz_var4(), FLA_Eig_gest_iu_opz_var5(), FLA_Eig_gest_nl_opz_var4(), FLA_Eig_gest_nl_opz_var5(), FLA_Eig_gest_nu_opz_var4(), FLA_Eig_gest_nu_opz_var5(), FLA_Her2_external(), FLA_Her2c_external(), FLA_Lyap_h_opz_var4(), FLA_Lyap_n_opz_var4(), FLA_Tridiag_UT_l_step_ofz_var2(), FLA_Tridiag_UT_l_step_opz_var1(), and FLA_Tridiag_UT_l_step_opz_var2().
{
int m_save = m;
dcomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
dcomplex* x_conj;
dcomplex* y_conj;
int incx_conj;
int incy_conj;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_zcreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
bl1_toggle_conj( conj );
}
// Initialize with values assuming no conjugation of ( x * y' ) or
// ( y * x' ).
x_conj = x;
incx_conj = incx;
y_conj = y;
incy_conj = incy;
// We want to handle the case where ( x * y' ) and ( y * x' ) are
// conjugated, but without explicitly conjugating the matrices. To do
// so, we leverage the fact that computing the products conj( x * y' )
// and conj( y * x' ) is equivalent to computing ( conj(x) * conj(y)' )
// and ( conj(y) * conj(x)' ), respectively.
if ( bl1_is_conj( conj ) )
{
x_conj = bl1_zallocv( m );
incx_conj = 1;
y_conj = bl1_zallocv( m );
incy_conj = 1;
bl1_zcopyv( BLIS1_CONJUGATE,
m,
x, incx,
x_conj, incx_conj );
bl1_zcopyv( BLIS1_CONJUGATE,
m,
y, incy,
y_conj, incy_conj );
}
bl1_zher2_blas( uplo,
m,
alpha,
x_conj, incx_conj,
y_conj, incy_conj,
a, lda );
// Free the temporary conjugated x and y vectors.
if ( bl1_is_conj( conj ) )
{
bl1_zfree( x_conj );
bl1_zfree( y_conj );
}
// Free the temporary contiguous matrix.
bl1_zfree_saved_contigm( m_save,
m_save,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_zher2_blas | ( | uplo1_t | uplo, |
| int | m, | ||
| dcomplex * | alpha, | ||
| dcomplex * | x, | ||
| int | incx, | ||
| dcomplex * | y, | ||
| int | incy, | ||
| dcomplex * | a, | ||
| int | lda | ||
| ) |
References bl1_param_map_to_netlib_uplo(), cblas_zher2(), CblasColMajor, and F77_zher2().
Referenced by bl1_zher2().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
cblas_zher2( cblas_order,
cblas_uplo,
m,
alpha,
x, incx,
y, incy,
a, lda );
#else
char blas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
F77_zher2( &blas_uplo,
&m,
alpha,
x, &incx,
y, &incy,
a, &lda );
#endif
}
| void bl1_zher_blas | ( | uplo1_t | uplo, |
| int | m, | ||
| double * | alpha, | ||
| dcomplex * | x, | ||
| int | incx, | ||
| dcomplex * | a, | ||
| int | lda | ||
| ) |
References bl1_param_map_to_netlib_uplo(), cblas_zher(), CblasColMajor, and F77_zher().
Referenced by bl1_zher().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
cblas_zher( cblas_order,
cblas_uplo,
m,
*alpha,
x, incx,
a, lda );
#else
char blas_uplo;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
F77_zher( &blas_uplo,
&m,
alpha,
x, &incx,
a, &lda );
#endif
}
| 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 | ||
| ) |
References bl1_is_row_storage(), bl1_zcreate_contigmr(), bl1_zero_dim1(), bl1_zfree_contigm(), and bl1_zsymv_blas().
Referenced by FLA_Symv_external().
{
dcomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_zcreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
}
bl1_zsymv_blas( uplo,
m,
alpha,
a, lda,
x, incx,
beta,
y, incy );
// Free the temporary contiguous matrix.
bl1_zfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| 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 | ||
| ) |
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().
{
dcomplex* x_copy;
dcomplex* y_copy;
int n = 1;
int ldx = m;
int ldy = m;
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_SIDE cblas_side;
enum CBLAS_UPLO cblas_uplo;
bl1_param_map_to_netlib_side( BLIS1_LEFT, &cblas_side );
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
x_copy = bl1_zallocv( m );
y_copy = bl1_zallocv( m );
bl1_zcopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_copy, 1 );
bl1_zcopyv( BLIS1_NO_CONJUGATE,
m,
y, incy,
y_copy, 1 );
cblas_zsymm( cblas_order,
cblas_side,
cblas_uplo,
m,
n,
alpha,
a, lda,
x_copy, ldx,
beta,
y_copy, ldy );
bl1_zcopyv( BLIS1_NO_CONJUGATE,
m,
y_copy, 1,
y, incy );
bl1_zfree( x_copy );
bl1_zfree( y_copy );
#else
char blas_side;
char blas_uplo;
bl1_param_map_to_netlib_side( BLIS1_LEFT, &blas_side );
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
x_copy = bl1_zallocv( m );
y_copy = bl1_zallocv( m );
bl1_zcopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_copy, 1 );
bl1_zcopyv( BLIS1_NO_CONJUGATE,
m,
y, incy,
y_copy, 1 );
F77_zsymm ( &blas_side,
&blas_uplo,
&m,
&n,
alpha,
a, &lda,
x_copy, &ldx,
beta,
y_copy, &ldy );
bl1_zcopyv( BLIS1_NO_CONJUGATE,
m,
y_copy, 1,
y, incy );
bl1_zfree( x_copy );
bl1_zfree( y_copy );
#endif
}
| void bl1_zsyr | ( | uplo1_t | uplo, |
| int | m, | ||
| dcomplex * | alpha, | ||
| dcomplex * | x, | ||
| int | incx, | ||
| dcomplex * | a, | ||
| int | a_rs, | ||
| int | a_cs | ||
| ) |
References bl1_is_row_storage(), bl1_zcreate_contigmr(), bl1_zero_dim1(), bl1_zfree_saved_contigm(), and bl1_zsyr_blas().
Referenced by FLA_Syr_external().
{
int m_save = m;
dcomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_zcreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
}
bl1_zsyr_blas( uplo,
m,
alpha,
x, incx,
a, lda );
// Free the temporary contiguous matrix.
bl1_zfree_saved_contigm( m_save,
m_save,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_zsyr2 | ( | uplo1_t | uplo, |
| int | m, | ||
| dcomplex * | alpha, | ||
| dcomplex * | x, | ||
| int | incx, | ||
| dcomplex * | y, | ||
| int | incy, | ||
| dcomplex * | a, | ||
| int | a_rs, | ||
| int | a_cs | ||
| ) |
References bl1_is_row_storage(), bl1_zcreate_contigmr(), bl1_zero_dim1(), bl1_zfree_saved_contigm(), and bl1_zsyr2_blas().
Referenced by FLA_Syr2_external().
{
int m_save = m;
dcomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_zcreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
}
bl1_zsyr2_blas( uplo,
m,
alpha,
x, incx,
y, incy,
a, lda );
// Free the temporary contiguous matrix.
bl1_zfree_saved_contigm( m_save,
m_save,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_zsyr2_blas | ( | uplo1_t | uplo, |
| int | m, | ||
| dcomplex * | alpha, | ||
| dcomplex * | x, | ||
| int | incx, | ||
| dcomplex * | y, | ||
| int | incy, | ||
| dcomplex * | a, | ||
| int | lda | ||
| ) |
References bl1_param_map_to_netlib_trans(), bl1_param_map_to_netlib_uplo(), bl1_zallocv(), bl1_zcopyv(), bl1_zfree(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, cblas_zsyr2k(), CblasColMajor, F77_zsyr2k(), dcomplex::imag, and dcomplex::real.
Referenced by bl1_zsyr2().
{
dcomplex* x_copy;
dcomplex* y_copy;
dcomplex beta;
int k = 1;
int ldx = m;
int ldy = m;
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
enum CBLAS_TRANSPOSE cblas_trans;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
bl1_param_map_to_netlib_trans( BLIS1_NO_TRANSPOSE, &cblas_trans );
x_copy = bl1_zallocv( m );
y_copy = bl1_zallocv( m );
bl1_zcopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_copy, 1 );
bl1_zcopyv( BLIS1_NO_CONJUGATE,
m,
y, incy,
y_copy, 1 );
beta.real = 1.0;
beta.imag = 0.0;
cblas_zsyr2k( cblas_order,
cblas_uplo,
cblas_trans,
m,
k,
alpha,
x_copy, ldx,
y_copy, ldy,
&beta,
a, lda );
bl1_zfree( x_copy );
bl1_zfree( y_copy );
#else
char blas_uplo;
char blas_trans;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
bl1_param_map_to_netlib_trans( BLIS1_NO_TRANSPOSE, &blas_trans );
x_copy = bl1_zallocv( m );
y_copy = bl1_zallocv( m );
bl1_zcopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_copy, 1 );
bl1_zcopyv( BLIS1_NO_CONJUGATE,
m,
y, incy,
y_copy, 1 );
beta.real = 1.0;
beta.imag = 0.0;
F77_zsyr2k ( &blas_uplo,
&blas_trans,
&m,
&k,
alpha,
x_copy, &ldx,
y_copy, &ldy,
&beta,
a, &lda );
bl1_zfree( x_copy );
bl1_zfree( y_copy );
#endif
}
| void bl1_zsyr_blas | ( | uplo1_t | uplo, |
| int | m, | ||
| dcomplex * | alpha, | ||
| dcomplex * | x, | ||
| int | incx, | ||
| dcomplex * | a, | ||
| int | lda | ||
| ) |
References bl1_param_map_to_netlib_trans(), bl1_param_map_to_netlib_uplo(), bl1_zallocv(), bl1_zcopyv(), bl1_zfree(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, cblas_zsyrk(), CblasColMajor, F77_zsyrk(), dcomplex::imag, and dcomplex::real.
Referenced by bl1_zsyr().
{
dcomplex* x_copy;
dcomplex beta;
int k = 1;
int ldx = m;
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
enum CBLAS_TRANSPOSE cblas_trans;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
bl1_param_map_to_netlib_trans( BLIS1_NO_TRANSPOSE, &cblas_trans );
x_copy = bl1_zallocv( m );
bl1_zcopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_copy, 1 );
beta.real = 1.0;
beta.imag = 0.0;
cblas_zsyrk( cblas_order,
cblas_uplo,
cblas_trans,
m,
k,
alpha,
x_copy, ldx,
&beta,
a, lda );
bl1_zfree( x_copy );
#else
char blas_uplo;
char blas_trans;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
bl1_param_map_to_netlib_trans( BLIS1_NO_TRANSPOSE, &blas_trans );
x_copy = bl1_zallocv( m );
bl1_zcopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_copy, 1 );
beta.real = 1.0;
beta.imag = 0.0;
F77_zsyrk ( &blas_uplo,
&blas_trans,
&m,
&k,
alpha,
x_copy, &ldx,
&beta,
a, &lda );
bl1_zfree( x_copy );
#endif
}
| 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 | ||
| ) |
References bl1_is_conjnotrans(), bl1_is_row_storage(), bl1_zallocv(), bl1_zcopyv(), bl1_zcreate_contigmr(), bl1_zero_dim1(), bl1_zfree(), bl1_zfree_contigm(), bl1_ztrmv_blas(), and BLIS1_CONJUGATE.
Referenced by bl1_ztrmvsx(), FLA_CAQR2_UT_opz_var1(), FLA_Eig_gest_nl_opz_var1(), FLA_Eig_gest_nl_opz_var5(), FLA_Eig_gest_nu_opz_var1(), FLA_Eig_gest_nu_opz_var5(), FLA_Hess_UT_step_opz_var5(), FLA_Trinv_ln_opz_var1(), FLA_Trinv_ln_opz_var4(), FLA_Trinv_lu_opz_var1(), FLA_Trinv_lu_opz_var4(), FLA_Trinv_un_opz_var1(), FLA_Trinv_un_opz_var4(), FLA_Trinv_uu_opz_var1(), FLA_Trinv_uu_opz_var4(), FLA_Trmv_external(), FLA_Ttmm_l_opz_var3(), and FLA_Ttmm_u_opz_var3().
{
dcomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
dcomplex* x_conj;
int incx_conj;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_zcreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
bl1_toggle_trans( trans );
}
// Initialize with values assuming that trans is not conjnotrans.
x_conj = x;
incx_conj = incx;
// We want to handle the conjnotrans case, but without explicitly
// conjugating A. To do so, we leverage the fact that computing the
// product conj(A) * x is equivalent to computing conj( A * conj(x) ).
// Note: strictly speaking, we don't need to create a copy of x since
// the operation is simpler than, say, gemv. However, we create a copy
// anyway since in practice it performs better due to increased spatial
// locality.
if ( bl1_is_conjnotrans( trans ) )
{
x_conj = bl1_zallocv( m );
incx_conj = 1;
bl1_zcopyv( BLIS1_CONJUGATE,
m,
x, incx,
x_conj, incx_conj );
}
bl1_ztrmv_blas( uplo,
trans,
diag,
m,
a, lda,
x_conj, incx_conj );
// Save the contents of and then free the temporary conjugated x vector.
if ( bl1_is_conjnotrans( trans ) )
{
bl1_zcopyv( BLIS1_CONJUGATE,
m,
x_conj, incx_conj,
x, incx );
bl1_zfree( x_conj );
}
// Free the temporary contiguous matrix.
bl1_zfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_ztrmv_blas | ( | uplo1_t | uplo, |
| trans1_t | trans, | ||
| diag1_t | diag, | ||
| int | m, | ||
| dcomplex * | a, | ||
| int | lda, | ||
| dcomplex * | x, | ||
| int | incx | ||
| ) |
References bl1_param_map_to_netlib_diag(), bl1_param_map_to_netlib_trans(), bl1_param_map_to_netlib_uplo(), cblas_ztrmv(), CblasColMajor, and F77_ztrmv().
Referenced by bl1_ztrmv().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
enum CBLAS_TRANSPOSE cblas_trans;
enum CBLAS_DIAG cblas_diag;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
bl1_param_map_to_netlib_trans( trans, &cblas_trans );
bl1_param_map_to_netlib_diag( diag, &cblas_diag );
cblas_ztrmv( cblas_order,
cblas_uplo,
cblas_trans,
cblas_diag,
m,
a, lda,
x, incx );
#else
char blas_uplo;
char blas_trans;
char blas_diag;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
bl1_param_map_to_netlib_trans( trans, &blas_trans );
bl1_param_map_to_netlib_diag( diag, &blas_diag );
F77_ztrmv( &blas_uplo,
&blas_trans,
&blas_diag,
&m,
a, &lda,
x, &incx );
#endif
}
| 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().
{
dcomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
dcomplex* x_temp;
int incx_temp;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_zcreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Allocate a temporary vector conformal to x.
x_temp = bl1_zallocv( m );
incx_temp = 1;
// Copy x to a temporary vector.
bl1_zcopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_temp, incx_temp );
// Perform the operation, storing the result to x_temp.
bl1_ztrmv( uplo,
trans,
diag,
m,
a, a_rs, a_cs,
x_temp, incx_temp );
// Scale y by beta.
bl1_zscalv( BLIS1_NO_CONJUGATE,
m,
beta,
y, incy );
// Axpy the partial result in x_temp into y.
bl1_zaxpyv( BLIS1_NO_CONJUGATE,
m,
alpha,
x_temp, incx_temp,
y, incy );
// Free the temporary vector.
bl1_zfree( x_temp );
// Free the temporary contiguous matrix.
bl1_zfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_ztrsv | ( | uplo1_t | uplo, |
| trans1_t | trans, | ||
| diag1_t | diag, | ||
| int | m, | ||
| dcomplex * | a, | ||
| int | a_rs, | ||
| int | a_cs, | ||
| dcomplex * | x, | ||
| int | incx | ||
| ) |
References bl1_is_conjnotrans(), bl1_is_row_storage(), bl1_zallocv(), bl1_zcopyv(), bl1_zcreate_contigmr(), bl1_zero_dim1(), bl1_zfree(), bl1_zfree_contigm(), bl1_ztrsv_blas(), and BLIS1_CONJUGATE.
Referenced by bl1_ztrsvsx(), FLA_Chol_l_opz_var1(), FLA_Chol_u_opz_var1(), FLA_Eig_gest_il_opz_var1(), FLA_Eig_gest_il_opz_var5(), FLA_Eig_gest_iu_opz_var1(), FLA_Eig_gest_iu_opz_var5(), FLA_Hess_UT_step_opz_var5(), FLA_LU_nopiv_opz_var1(), FLA_LU_nopiv_opz_var2(), FLA_LU_nopiv_opz_var3(), FLA_LU_piv_opz_var3(), FLA_Lyap_h_opz_var1(), FLA_Lyap_h_opz_var2(), FLA_Lyap_h_opz_var3(), FLA_Lyap_h_opz_var4(), FLA_Lyap_n_opz_var1(), FLA_Lyap_n_opz_var2(), FLA_Lyap_n_opz_var3(), FLA_Lyap_n_opz_var4(), FLA_Trinv_ln_opz_var2(), FLA_Trinv_ln_opz_var4(), FLA_Trinv_lu_opz_var2(), FLA_Trinv_lu_opz_var4(), FLA_Trinv_un_opz_var2(), FLA_Trinv_un_opz_var4(), FLA_Trinv_uu_opz_var2(), FLA_Trinv_uu_opz_var4(), and FLA_Trsv_external().
{
dcomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
dcomplex* x_conj;
int incx_conj;
int lda, inca;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_zcreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Initialize with values assuming column-major storage.
lda = a_cs;
inca = a_rs;
// If A is a row-major matrix, then we can use the underlying column-major
// BLAS implementation by fiddling with the parameters.
if ( bl1_is_row_storage( a_rs, a_cs ) )
{
bl1_swap_ints( lda, inca );
bl1_toggle_uplo( uplo );
bl1_toggle_trans( trans );
}
// Initialize with values assuming that trans is not conjnotrans.
x_conj = x;
incx_conj = incx;
// We want to handle the conjnotrans case, but without explicitly
// conjugating A. To do so, we leverage the fact that computing the
// product conj(A) * x is equivalent to computing conj( A * conj(x) ).
// Note: strictly speaking, we don't need to create a copy of x since
// the operation is simpler than, say, gemv. However, we create a copy
// anyway since in practice it performs better due to increased spatial
// locality.
if ( bl1_is_conjnotrans( trans ) )
{
x_conj = bl1_zallocv( m );
incx_conj = 1;
bl1_zcopyv( BLIS1_CONJUGATE,
m,
x, incx,
x_conj, incx_conj );
}
bl1_ztrsv_blas( uplo,
trans,
diag,
m,
a, lda,
x_conj, incx_conj );
// Save the contents of and then free the temporary conjugated x vector.
if ( bl1_is_conjnotrans( trans ) )
{
bl1_zcopyv( BLIS1_CONJUGATE,
m,
x_conj, incx_conj,
x, incx );
bl1_zfree( x_conj );
}
// Free the temporary contiguous matrix.
bl1_zfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
| void bl1_ztrsv_blas | ( | uplo1_t | uplo, |
| trans1_t | trans, | ||
| diag1_t | diag, | ||
| int | m, | ||
| dcomplex * | a, | ||
| int | lda, | ||
| dcomplex * | x, | ||
| int | incx | ||
| ) |
References bl1_param_map_to_netlib_diag(), bl1_param_map_to_netlib_trans(), bl1_param_map_to_netlib_uplo(), cblas_ztrsv(), CblasColMajor, and F77_ztrsv().
Referenced by bl1_ztrsv().
{
#ifdef BLIS1_ENABLE_CBLAS_INTERFACES
enum CBLAS_ORDER cblas_order = CblasColMajor;
enum CBLAS_UPLO cblas_uplo;
enum CBLAS_TRANSPOSE cblas_trans;
enum CBLAS_DIAG cblas_diag;
bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo );
bl1_param_map_to_netlib_trans( trans, &cblas_trans );
bl1_param_map_to_netlib_diag( diag, &cblas_diag );
cblas_ztrsv( cblas_order,
cblas_uplo,
cblas_trans,
cblas_diag,
m,
a, lda,
x, incx );
#else
char blas_uplo;
char blas_trans;
char blas_diag;
bl1_param_map_to_netlib_uplo( uplo, &blas_uplo );
bl1_param_map_to_netlib_trans( trans, &blas_trans );
bl1_param_map_to_netlib_diag( diag, &blas_diag );
F77_ztrsv( &blas_uplo,
&blas_trans,
&blas_diag,
&m,
a, &lda,
x, &incx );
#endif
}
| void bl1_ztrsvsx | ( | 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_ztrsv(), and BLIS1_NO_CONJUGATE.
{
dcomplex* a_save = a;
int a_rs_save = a_rs;
int a_cs_save = a_cs;
dcomplex* x_temp;
int incx_temp;
// Return early if possible.
if ( bl1_zero_dim1( m ) ) return;
// If necessary, allocate, initialize, and use a temporary contiguous
// copy of the matrix rather than the original matrix.
bl1_zcreate_contigmr( uplo,
m,
m,
a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
// Allocate a temporary vector conformal to x.
x_temp = bl1_zallocv( m );
incx_temp = 1;
// Copy x to a temporary vector.
bl1_zcopyv( BLIS1_NO_CONJUGATE,
m,
x, incx,
x_temp, incx_temp );
// Perform the operation, storing the result to x_temp.
bl1_ztrsv( uplo,
trans,
diag,
m,
a, a_rs, a_cs,
x_temp, incx_temp );
// Scale y by beta.
bl1_zscalv( BLIS1_NO_CONJUGATE,
m,
beta,
y, incy );
// Axpy the partial result in x_temp into y.
bl1_zaxpyv( BLIS1_NO_CONJUGATE,
m,
alpha,
x_temp, incx_temp,
y, incy );
// Free the temporary vector.
bl1_zfree( x_temp );
// Free the temporary contiguous matrix.
bl1_zfree_contigm( a_save, a_rs_save, a_cs_save,
&a, &a_rs, &a_cs );
}
1.7.6.1