libflame revision_anchor
Functions
FLA_lapack_prototypes.h File Reference

(r)

Go to the source code of this file.

Functions

FLA_Error FLA_Chol (FLA_Uplo uplo, FLA_Obj A)
 
FLA_Error FLA_LU_nopiv (FLA_Obj A)
 
FLA_Error FLA_LU_piv (FLA_Obj A, FLA_Obj p)
 
FLA_Error FLA_QR_UT (FLA_Obj A, FLA_Obj T)
 
FLA_Error FLA_QR_UT_piv (FLA_Obj A, FLA_Obj T, FLA_Obj w, FLA_Obj p)
 
FLA_Error FLA_LQ_UT (FLA_Obj A, FLA_Obj S)
 
FLA_Error FLA_Trinv (FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A)
 
FLA_Error FLA_Ttmm (FLA_Uplo uplo, FLA_Obj A)
 
FLA_Error FLA_Sylv (FLA_Trans transa, FLA_Trans transb, FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
 
FLA_Error FLA_SPDinv (FLA_Uplo uplo, FLA_Obj A)
 
FLA_Error FLA_Hess_UT (FLA_Obj A, FLA_Obj T)
 
FLA_Error FLA_Eig_gest (FLA_Inv inv, FLA_Uplo uplo, FLA_Obj A, FLA_Obj B)
 
FLA_Error FLA_Accum_T_UT (FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj tau, FLA_Obj T)
 
FLA_Error FLA_Apply_H2_UT (FLA_Side side, FLA_Obj tau, FLA_Obj u2, FLA_Obj a1, FLA_Obj A2)
 
FLA_Error FLA_Apply_HUD_UT (FLA_Side side, FLA_Obj tau, FLA_Obj w12t, FLA_Obj u2, FLA_Obj v2, FLA_Obj r12t, FLA_Obj C2, FLA_Obj D2)
 
FLA_Error FLA_Apply_Q_UT (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B)
 
FLA_Error FLA_Apply_pivots (FLA_Side side, FLA_Trans trans, FLA_Obj p, FLA_Obj A)
 
FLA_Error FLA_Chol_task (FLA_Uplo uplo, FLA_Obj A, fla_chol_t *cntl)
 
FLA_Error FLA_Chol_l_task (FLA_Obj A, fla_chol_t *cntl)
 
FLA_Error FLA_Chol_u_task (FLA_Obj A, fla_chol_t *cntl)
 
FLA_Error FLA_LU_piv_macro_task (FLA_Obj A, FLA_Obj p, fla_lu_t *cntl)
 
FLA_Error FLA_Apply_pivots_task (FLA_Side side, FLA_Trans trans, FLA_Obj p, FLA_Obj A, fla_appiv_t *cntl)
 
FLA_Error FLA_Apply_pivots_ln_task (FLA_Obj p, FLA_Obj A, fla_appiv_t *cntl)
 
FLA_Error FLA_Apply_pivots_macro_task (FLA_Side side, FLA_Trans trans, FLA_Obj p, FLA_Obj A, fla_appiv_t *cntl)
 
FLA_Error FLA_LU_nopiv_task (FLA_Obj A, fla_lu_t *cntl)
 
FLA_Error FLA_LU_piv_task (FLA_Obj A, FLA_Obj p, fla_lu_t *cntl)
 
FLA_Error FLA_LU_piv_copy_task (FLA_Obj A, FLA_Obj p, FLA_Obj U, fla_lu_t *cntl)
 
FLA_Error FLA_Trsm_piv_task (FLA_Obj A, FLA_Obj B, FLA_Obj p, fla_trsm_t *cntl)
 
FLA_Error FLA_SA_LU_task (FLA_Obj U, FLA_Obj D, FLA_Obj p, FLA_Obj L, dim_t nb_alg, fla_lu_t *cntl)
 
FLA_Error FLA_SA_FS_task (FLA_Obj L, FLA_Obj D, FLA_Obj p, FLA_Obj C, FLA_Obj E, dim_t nb_alg, fla_gemm_t *cntl)
 
FLA_Error FLA_Trinv_task (FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A, fla_trinv_t *cntl)
 
FLA_Error FLA_Trinv_ln_task (FLA_Obj A, fla_trinv_t *cntl)
 
FLA_Error FLA_Trinv_lu_task (FLA_Obj A, fla_trinv_t *cntl)
 
FLA_Error FLA_Trinv_un_task (FLA_Obj A, fla_trinv_t *cntl)
 
FLA_Error FLA_Trinv_uu_task (FLA_Obj A, fla_trinv_t *cntl)
 
FLA_Error FLA_Ttmm_task (FLA_Uplo uplo, FLA_Obj A, fla_ttmm_t *cntl)
 
FLA_Error FLA_Ttmm_l_task (FLA_Obj A, fla_ttmm_t *cntl)
 
FLA_Error FLA_Ttmm_u_task (FLA_Obj A, fla_ttmm_t *cntl)
 
FLA_Error FLA_Sylv_task (FLA_Trans transa, FLA_Trans transb, FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale, fla_sylv_t *cntl)
 
FLA_Error FLA_Sylv_nn_task (FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale, fla_sylv_t *cntl)
 
FLA_Error FLA_Sylv_nh_task (FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale, fla_sylv_t *cntl)
 
FLA_Error FLA_Sylv_hn_task (FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale, fla_sylv_t *cntl)
 
FLA_Error FLA_Sylv_hh_task (FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale, fla_sylv_t *cntl)
 
FLA_Error FLA_Lyap_task (FLA_Trans trans, FLA_Obj isgn, FLA_Obj A, FLA_Obj C, FLA_Obj scale, fla_lyap_t *cntl)
 
FLA_Error FLA_Lyap_n_task (FLA_Obj isgn, FLA_Obj A, FLA_Obj C, FLA_Obj scale, fla_lyap_t *cntl)
 
FLA_Error FLA_Lyap_h_task (FLA_Obj isgn, FLA_Obj A, FLA_Obj C, FLA_Obj scale, fla_lyap_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_task (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_lhbc_task (FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_lhbr_task (FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_lhfc_task (FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_lhfr_task (FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_lnbc_task (FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_lnbr_task (FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_lnfc_task (FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_lnfr_task (FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_rhbc_task (FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_rhbr_task (FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_rhfc_task (FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_rhfr_task (FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_rnbc_task (FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_rnbr_task (FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_rnfc_task (FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_rnfr_task (FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 
FLA_Error FLA_Apply_Q2_UT_task (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apq2ut_t *cntl)
 
FLA_Error FLA_Apply_Q2_UT_lhfc_task (FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apq2ut_t *cntl)
 
FLA_Error FLA_Apply_CAQ2_UT_task (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apcaq2ut_t *cntl)
 
FLA_Error FLA_Apply_CAQ2_UT_lhfc_task (FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apcaq2ut_t *cntl)
 
FLA_Error FLA_QR2_UT_task (FLA_Obj B, FLA_Obj D, FLA_Obj T, fla_qr2ut_t *cntl)
 
FLA_Error FLA_CAQR2_UT_task (FLA_Obj B, FLA_Obj D, FLA_Obj T, fla_caqr2ut_t *cntl)
 
FLA_Error FLA_QR_UT_macro_task (FLA_Obj A, FLA_Obj T, fla_qrut_t *cntl)
 
FLA_Error FLA_QR_UT_task (FLA_Obj A, FLA_Obj T, fla_qrut_t *cntl)
 
FLA_Error FLA_QR_UT_copy_task (FLA_Obj A, FLA_Obj T, FLA_Obj U, fla_qrut_t *cntl)
 
FLA_Error FLA_LQ_UT_macro_task (FLA_Obj A, FLA_Obj T, fla_lqut_t *cntl)
 
FLA_Error FLA_LQ_UT_task (FLA_Obj A, FLA_Obj T, fla_lqut_t *cntl)
 
FLA_Error FLA_UDdate_UT_task (FLA_Obj R, FLA_Obj C, FLA_Obj D, FLA_Obj T, fla_uddateut_t *cntl)
 
FLA_Error FLA_Apply_QUD_UT_task (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj T, FLA_Obj W, FLA_Obj R, FLA_Obj U, FLA_Obj C, FLA_Obj V, FLA_Obj D, fla_apqudut_t *cntl)
 
FLA_Error FLA_Apply_QUD_UT_lhfc_task (FLA_Obj T, FLA_Obj W, FLA_Obj R, FLA_Obj U, FLA_Obj C, FLA_Obj V, FLA_Obj D, fla_apqudut_t *cntl)
 
FLA_Error FLA_Eig_gest_task (FLA_Inv inv, FLA_Uplo uplo, FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_il_task (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_iu_task (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_nl_task (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_nu_task (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Apply_Q_blk_external (FLA_Side side, FLA_Trans trans, FLA_Store storev, FLA_Obj A, FLA_Obj t, FLA_Obj B)
 
FLA_Error FLA_Apply_pivots_unb_external (FLA_Side side, FLA_Trans trans, FLA_Obj p, FLA_Obj A)
 
FLA_Error FLA_Apply_pivots_ln_unb_ext (FLA_Obj p, FLA_Obj A)
 
FLA_Error FLA_Apply_pivots_macro_external (FLA_Side side, FLA_Trans trans, FLA_Obj p, FLA_Obj A)
 
FLA_Error FLA_Chol_blk_external (FLA_Uplo uplo, FLA_Obj A)
 
FLA_Error FLA_Chol_l_blk_ext (FLA_Obj A)
 
FLA_Error FLA_Chol_u_blk_ext (FLA_Obj A)
 
FLA_Error FLA_Chol_unb_external (FLA_Uplo uplo, FLA_Obj A)
 
FLA_Error FLA_Chol_l_unb_ext (FLA_Obj A)
 
FLA_Error FLA_Chol_u_unb_ext (FLA_Obj A)
 
FLA_Error FLA_LU_piv_blk_external (FLA_Obj A, FLA_Obj p)
 
FLA_Error FLA_LU_piv_blk_ext (FLA_Obj A, FLA_Obj p)
 
FLA_Error FLA_LU_piv_unb_external (FLA_Obj A, FLA_Obj p)
 
FLA_Error FLA_LU_piv_unb_ext (FLA_Obj A, FLA_Obj p)
 
FLA_Error FLA_QR_blk_external (FLA_Obj A, FLA_Obj t)
 
FLA_Error FLA_QR_unb_external (FLA_Obj A, FLA_Obj t)
 
FLA_Error FLA_LQ_blk_external (FLA_Obj A, FLA_Obj t)
 
FLA_Error FLA_LQ_unb_external (FLA_Obj A, FLA_Obj t)
 
FLA_Error FLA_Hess_blk_external (FLA_Obj A, FLA_Obj t, int ilo, int ihi)
 
FLA_Error FLA_Hess_unb_external (FLA_Obj A, FLA_Obj t, int ilo, int ihi)
 
FLA_Error FLA_Tridiag_blk_external (FLA_Uplo uplo, FLA_Obj A, FLA_Obj t)
 
FLA_Error FLA_Tridiag_unb_external (FLA_Uplo uplo, FLA_Obj A, FLA_Obj t)
 
FLA_Error FLA_Bidiag_blk_external (FLA_Obj A, FLA_Obj tu, FLA_Obj tv)
 
FLA_Error FLA_Bidiag_unb_external (FLA_Obj A, FLA_Obj tu, FLA_Obj tv)
 
FLA_Error FLA_QR_form_Q_external (FLA_Obj A, FLA_Obj t)
 
FLA_Error FLA_Tridiag_form_Q_external (FLA_Uplo uplo, FLA_Obj A, FLA_Obj t)
 
FLA_Error FLA_Tridiag_apply_Q_external (FLA_Side side, FLA_Uplo uplo, FLA_Trans trans, FLA_Obj A, FLA_Obj t, FLA_Obj B)
 
FLA_Error FLA_Bidiag_form_U_external (FLA_Obj A, FLA_Obj t)
 
FLA_Error FLA_Bidiag_form_V_external (FLA_Obj A, FLA_Obj t)
 
FLA_Error FLA_Bidiag_apply_U_external (FLA_Side side, FLA_Trans trans, FLA_Obj A, FLA_Obj t, FLA_Obj B)
 
FLA_Error FLA_Bidiag_apply_V_external (FLA_Side side, FLA_Trans trans, FLA_Obj A, FLA_Obj t, FLA_Obj B)
 
FLA_Error FLA_Trinv_blk_external (FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A)
 
FLA_Error FLA_Trinv_ln_blk_ext (FLA_Obj A)
 
FLA_Error FLA_Trinv_lu_blk_ext (FLA_Obj A)
 
FLA_Error FLA_Trinv_un_blk_ext (FLA_Obj A)
 
FLA_Error FLA_Trinv_uu_blk_ext (FLA_Obj A)
 
FLA_Error FLA_Trinv_unb_external (FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A)
 
FLA_Error FLA_Trinv_ln_unb_ext (FLA_Obj A)
 
FLA_Error FLA_Trinv_lu_unb_ext (FLA_Obj A)
 
FLA_Error FLA_Trinv_un_unb_ext (FLA_Obj A)
 
FLA_Error FLA_Trinv_uu_unb_ext (FLA_Obj A)
 
FLA_Error FLA_Ttmm_blk_external (FLA_Uplo uplo, FLA_Obj A)
 
FLA_Error FLA_Ttmm_l_blk_ext (FLA_Obj A)
 
FLA_Error FLA_Ttmm_u_blk_ext (FLA_Obj A)
 
FLA_Error FLA_Ttmm_unb_external (FLA_Uplo uplo, FLA_Obj A)
 
FLA_Error FLA_Ttmm_l_unb_ext (FLA_Obj A)
 
FLA_Error FLA_Ttmm_u_unb_ext (FLA_Obj A)
 
FLA_Error FLA_Sylv_blk_external (FLA_Trans transa, FLA_Trans transb, FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
 
FLA_Error FLA_Sylv_nn_blk_ext (FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
 
FLA_Error FLA_Sylv_nh_blk_ext (FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
 
FLA_Error FLA_Sylv_hn_blk_ext (FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
 
FLA_Error FLA_Sylv_hh_blk_ext (FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
 
FLA_Error FLA_Sylv_unb_external (FLA_Trans transa, FLA_Trans transb, FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
 
FLA_Error FLA_Sylv_nn_unb_ext (FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
 
FLA_Error FLA_Sylv_nh_unb_ext (FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
 
FLA_Error FLA_Sylv_hn_unb_ext (FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
 
FLA_Error FLA_Sylv_hh_unb_ext (FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
 
FLA_Error FLA_SPDinv_blk_external (FLA_Uplo uplo, FLA_Obj A)
 
FLA_Error FLA_Eig_gest_blk_external (FLA_Inv inv, FLA_Uplo uplo, FLA_Obj A, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_il_blk_ext (FLA_Obj A, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_iu_blk_ext (FLA_Obj A, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nl_blk_ext (FLA_Obj A, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nu_blk_ext (FLA_Obj A, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_unb_external (FLA_Inv inv, FLA_Uplo uplo, FLA_Obj A, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_il_unb_ext (FLA_Obj A, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_iu_unb_ext (FLA_Obj A, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nl_unb_ext (FLA_Obj A, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nu_unb_ext (FLA_Obj A, FLA_Obj B)
 
FLA_Error FLA_Tevd_external (FLA_Evd_type jobz, FLA_Obj d, FLA_Obj e, FLA_Obj A)
 
FLA_Error FLA_Tevdd_external (FLA_Evd_type jobz, FLA_Obj d, FLA_Obj e, FLA_Obj A)
 
FLA_Error FLA_Tevdr_external (FLA_Evd_type jobz, FLA_Obj d, FLA_Obj e, FLA_Obj l, FLA_Obj A)
 
FLA_Error FLA_Hevd_external (FLA_Evd_type jobz, FLA_Uplo uplo, FLA_Obj A, FLA_Obj l)
 
FLA_Error FLA_Hevdd_external (FLA_Evd_type jobz, FLA_Uplo uplo, FLA_Obj A, FLA_Obj l)
 
FLA_Error FLA_Hevdr_external (FLA_Evd_type jobz, FLA_Uplo uplo, FLA_Obj A, FLA_Obj l, FLA_Obj Z)
 
FLA_Error FLA_Bsvd_external (FLA_Uplo uplo, FLA_Obj d, FLA_Obj e, FLA_Obj U, FLA_Obj V)
 
FLA_Error FLA_Bsvdd_external (FLA_Uplo uplo, FLA_Obj d, FLA_Obj e, FLA_Obj U, FLA_Obj V)
 
FLA_Error FLA_Svd_external (FLA_Svd_type jobu, FLA_Svd_type jobv, FLA_Obj A, FLA_Obj s, FLA_Obj U, FLA_Obj V)
 
FLA_Error FLA_Svdd_external (FLA_Svd_type jobz, FLA_Obj A, FLA_Obj s, FLA_Obj U, FLA_Obj V)
 
FLA_Error FLA_Chol_check (FLA_Uplo uplo, FLA_Obj A)
 
FLA_Error FLA_Chol_solve_check (FLA_Uplo uplo, FLA_Obj A, FLA_Obj B, FLA_Obj X)
 
FLA_Error FLA_LU_nopiv_check (FLA_Obj A)
 
FLA_Error FLA_LU_nopiv_solve_check (FLA_Obj A, FLA_Obj B, FLA_Obj X)
 
FLA_Error FLA_LU_piv_check (FLA_Obj A, FLA_Obj p)
 
FLA_Error FLA_LU_piv_solve_check (FLA_Obj A, FLA_Obj p, FLA_Obj B, FLA_Obj X)
 
FLA_Error FLA_LU_incpiv_check (FLA_Obj A, FLA_Obj p, FLA_Obj L)
 
FLA_Error FLA_LU_incpiv_solve_check (FLA_Obj A, FLA_Obj p, FLA_Obj L, FLA_Obj B, FLA_Obj X)
 
FLA_Error FLA_FS_incpiv_check (FLA_Obj A, FLA_Obj p, FLA_Obj L, FLA_Obj b)
 
FLA_Error FLA_QR_check (FLA_Obj A, FLA_Obj t)
 
FLA_Error FLA_QR_UT_check (FLA_Obj A, FLA_Obj T)
 
FLA_Error FLA_QR_UT_solve_check (FLA_Obj A, FLA_Obj T, FLA_Obj B, FLA_Obj X)
 
FLA_Error FLA_QR_UT_recover_tau_check (FLA_Obj T, FLA_Obj tau)
 
FLA_Error FLA_QR_UT_form_Q_check (FLA_Obj A, FLA_Obj T, FLA_Obj Q)
 
FLA_Error FLA_LQ_check (FLA_Obj A, FLA_Obj t)
 
FLA_Error FLA_LQ_UT_check (FLA_Obj A, FLA_Obj T)
 
FLA_Error FLA_LQ_UT_solve_check (FLA_Obj A, FLA_Obj T, FLA_Obj B, FLA_Obj X)
 
FLA_Error FLA_LQ_UT_recover_tau_check (FLA_Obj T, FLA_Obj tau)
 
FLA_Error FLA_LQ_UT_form_Q_check (FLA_Obj A, FLA_Obj T, FLA_Obj Q)
 
FLA_Error FLA_Hess_check (FLA_Obj A, FLA_Obj t, int ilo, int ihi)
 
FLA_Error FLA_Hess_UT_check (FLA_Obj A, FLA_Obj T)
 
FLA_Error FLA_Hess_UT_recover_tau_check (FLA_Obj T, FLA_Obj tau)
 
FLA_Error FLA_Tridiag_check (FLA_Uplo uplo, FLA_Obj A, FLA_Obj t)
 
FLA_Error FLA_Tridiag_UT_check (FLA_Uplo uplo, FLA_Obj A, FLA_Obj T)
 
FLA_Error FLA_Tridiag_UT_recover_tau_check (FLA_Obj T, FLA_Obj tau)
 
FLA_Error FLA_Tridiag_UT_scale_diagonals_check (FLA_Uplo uplo, FLA_Obj alpha, FLA_Obj A)
 
FLA_Error FLA_Tridiag_UT_extract_diagonals_check (FLA_Uplo uplo, FLA_Obj A, FLA_Obj d, FLA_Obj e)
 
FLA_Error FLA_Tridiag_UT_extract_real_diagonals_check (FLA_Uplo uplo, FLA_Obj A, FLA_Obj d, FLA_Obj e)
 
FLA_Error FLA_Tridiag_UT_realify_check (FLA_Uplo uplo, FLA_Obj A, FLA_Obj d)
 
FLA_Error FLA_Tridiag_UT_realify_subdiagonal_check (FLA_Obj b, FLA_Obj d)
 
FLA_Error FLA_Tridiag_UT_shift_U_check (FLA_Uplo uplo, FLA_Obj A)
 
FLA_Error FLA_Tridiag_UT_form_Q_check (FLA_Uplo uplo, FLA_Obj A, FLA_Obj T, FLA_Obj Q)
 
FLA_Error FLA_Trinv_check (FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A)
 
FLA_Error FLA_Bidiag_check (FLA_Obj A, FLA_Obj tu, FLA_Obj tv)
 
FLA_Error FLA_Bidiag_UT_check (FLA_Obj A, FLA_Obj TU, FLA_Obj TV)
 
FLA_Error FLA_Bidiag_UT_recover_tau_check (FLA_Obj TU, FLA_Obj TV, FLA_Obj tu, FLA_Obj tv)
 
FLA_Error FLA_Bidiag_UT_extract_diagonals_check (FLA_Obj A, FLA_Obj d, FLA_Obj e)
 
FLA_Error FLA_Bidiag_UT_extract_real_diagonals_check (FLA_Obj A, FLA_Obj d, FLA_Obj e)
 
FLA_Error FLA_Bidiag_UT_scale_diagonals_check (FLA_Obj alpha, FLA_Obj A)
 
FLA_Error FLA_Bidiag_UT_realify_check (FLA_Obj A, FLA_Obj d, FLA_Obj e)
 
FLA_Error FLA_Bidiag_UT_realify_diagonals_check (FLA_Uplo uplo, FLA_Obj a, FLA_Obj b, FLA_Obj d, FLA_Obj e)
 
FLA_Error FLA_Bidiag_UT_form_U_check (FLA_Obj A, FLA_Obj T, FLA_Obj U)
 
FLA_Error FLA_Bidiag_UT_form_V_check (FLA_Obj A, FLA_Obj S, FLA_Obj V)
 
FLA_Error FLA_Ttmm_check (FLA_Uplo uplo, FLA_Obj A)
 
FLA_Error FLA_Sylv_check (FLA_Trans transa, FLA_Trans transb, FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
 
FLA_Error FLA_Lyap_check (FLA_Trans trans, FLA_Obj isgn, FLA_Obj A, FLA_Obj C, FLA_Obj scale)
 
FLA_Error FLA_SPDinv_check (FLA_Uplo uplo, FLA_Obj A)
 
FLA_Error FLA_Eig_gest_check (FLA_Inv inv, FLA_Uplo uplo, FLA_Obj A, FLA_Obj B)
 
FLA_Error FLA_Apply_Q_check (FLA_Side side, FLA_Trans trans, FLA_Store storev, FLA_Obj A, FLA_Obj t, FLA_Obj B)
 
FLA_Error FLA_QR_form_Q_check (FLA_Obj A, FLA_Obj t)
 
FLA_Error FLA_Tridiag_form_Q_check (FLA_Uplo uplo, FLA_Obj A, FLA_Obj t)
 
FLA_Error FLA_Tridiag_apply_Q_check (FLA_Side side, FLA_Uplo uplo, FLA_Trans trans, FLA_Obj A, FLA_Obj t, FLA_Obj B)
 
FLA_Error FLA_Bidiag_form_U_check (FLA_Obj A, FLA_Obj t)
 
FLA_Error FLA_Bidiag_form_V_check (FLA_Obj A, FLA_Obj t)
 
FLA_Error FLA_Bidiag_apply_U_check (FLA_Side side, FLA_Trans trans, FLA_Obj A, FLA_Obj t, FLA_Obj B)
 
FLA_Error FLA_Bidiag_apply_V_check (FLA_Side side, FLA_Trans trans, FLA_Obj A, FLA_Obj t, FLA_Obj B)
 
FLA_Error FLA_Apply_Q_UT_check (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B)
 
FLA_Error FLA_Apply_Q2_UT_check (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E)
 
FLA_Error FLA_Apply_QUD_UT_check (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj T, FLA_Obj W, FLA_Obj R, FLA_Obj U, FLA_Obj C, FLA_Obj V, FLA_Obj D)
 
FLA_Error FLA_Apply_pivots_check (FLA_Side side, FLA_Trans trans, FLA_Obj p, FLA_Obj A)
 
FLA_Error FLA_QR2_UT_check (FLA_Obj B, FLA_Obj D, FLA_Obj T)
 
FLA_Error FLA_CAQR2_UT_check (FLA_Obj B, FLA_Obj D, FLA_Obj T)
 
FLA_Error FLA_QR_UT_inc_check (FLA_Obj A, FLA_Obj TW)
 
FLA_Error FLA_Apply_Q_UT_inc_check (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj TW, FLA_Obj W1, FLA_Obj B)
 
FLA_Error FLA_Apply_CAQ_UT_inc_check (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj ATW, FLA_Obj R, FLA_Obj RTW, FLA_Obj W1, FLA_Obj B)
 
FLA_Error FLA_QR_UT_inc_solve_check (FLA_Obj A, FLA_Obj TW, FLA_Obj B, FLA_Obj X)
 
FLA_Error FLA_CAQR_UT_inc_solve_check (dim_t p, FLA_Obj A, FLA_Obj ATW, FLA_Obj R, FLA_Obj RTW, FLA_Obj B, FLA_Obj X)
 
FLA_Error FLA_UDdate_UT_check (FLA_Obj R, FLA_Obj C, FLA_Obj D, FLA_Obj T)
 
FLA_Error FLA_UDdate_UT_update_rhs_check (FLA_Obj T, FLA_Obj bR, FLA_Obj C, FLA_Obj bC, FLA_Obj D, FLA_Obj bD)
 
FLA_Error FLA_UDdate_UT_solve_check (FLA_Obj R, FLA_Obj bR, FLA_Obj x)
 
FLA_Error FLA_UDdate_UT_inc_check (FLA_Obj R, FLA_Obj C, FLA_Obj D, FLA_Obj T, FLA_Obj W)
 
FLA_Error FLA_UDdate_UT_inc_update_rhs_check (FLA_Obj T, FLA_Obj bR, FLA_Obj C, FLA_Obj bC, FLA_Obj D, FLA_Obj bD)
 
FLA_Error FLA_UDdate_UT_inc_solve_check (FLA_Obj R, FLA_Obj bR, FLA_Obj x)
 
FLA_Error FLA_CAQR_UT_inc_check (dim_t p, FLA_Obj A, FLA_Obj ATW, FLA_Obj R, FLA_Obj RTW)
 
FLA_Error FLA_Apply_QUD_UT_inc_check (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj T, FLA_Obj W, FLA_Obj R, FLA_Obj U, FLA_Obj C, FLA_Obj V, FLA_Obj D)
 
FLA_Error FLA_Apply_H2_UT_check (FLA_Side side, FLA_Obj tau, FLA_Obj u2, FLA_Obj a1t, FLA_Obj A2)
 
FLA_Error FLA_Apply_HUD_UT_check (FLA_Side side, FLA_Obj tau, FLA_Obj w12t, FLA_Obj u2, FLA_Obj v2, FLA_Obj r12t, FLA_Obj C2, FLA_Obj D2)
 
FLA_Error FLA_Accum_T_UT_check (FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj tau, FLA_Obj T)
 
FLA_Error FLA_Tevd_compute_scaling_check (FLA_Obj d, FLA_Obj e, FLA_Obj sigma)
 
FLA_Error FLA_Hevd_compute_scaling_check (FLA_Uplo uplo, FLA_Obj A, FLA_Obj sigma)
 
FLA_Error FLA_Hevd_check (FLA_Evd_type jobz, FLA_Uplo uplo, FLA_Obj A, FLA_Obj l)
 
FLA_Error FLA_Hevdd_check (FLA_Evd_type jobz, FLA_Uplo uplo, FLA_Obj A, FLA_Obj l)
 
FLA_Error FLA_Hevdr_check (FLA_Evd_type jobz, FLA_Uplo uplo, FLA_Obj A, FLA_Obj l, FLA_Obj Z)
 
FLA_Error FLA_Bsvd_check (FLA_Uplo uplo, FLA_Obj d, FLA_Obj e, FLA_Obj G, FLA_Obj H, FLA_Svd_type jobu, FLA_Obj U, FLA_Svd_type jobv, FLA_Obj V)
 
FLA_Error FLA_Bsvd_ext_check (FLA_Uplo uplo, FLA_Obj d, FLA_Obj e, FLA_Obj G, FLA_Obj H, FLA_Svd_type jobu, FLA_Obj U, FLA_Svd_type jobv, FLA_Obj V, FLA_Bool apply_Uh2C, FLA_Obj C)
 
FLA_Error FLA_Bsvd_compute_scaling_check (FLA_Obj d, FLA_Obj e, FLA_Obj sigma)
 
FLA_Error FLA_Svd_compute_scaling_check (FLA_Obj A, FLA_Obj sigma)
 
FLA_Error FLA_Svd_check (FLA_Svd_type jobu, FLA_Svd_type jobv, FLA_Obj A, FLA_Obj s, FLA_Obj U, FLA_Obj V)
 
FLA_Error FLA_Svd_ext_check (FLA_Svd_type jobu, FLA_Trans transu, FLA_Svd_type jobv, FLA_Trans transv, FLA_Obj A, FLA_Obj s, FLA_Obj U, FLA_Obj V)
 
FLA_Error FLA_Svdd_check (FLA_Svd_type jobz, FLA_Obj A, FLA_Obj s, FLA_Obj U, FLA_Obj V)
 
FLA_Error FLA_Chol_internal_check (FLA_Uplo uplo, FLA_Obj A, fla_chol_t *cntl)
 
FLA_Error FLA_LU_nopiv_internal_check (FLA_Obj A, fla_lu_t *cntl)
 
FLA_Error FLA_Trinv_internal_check (FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A, fla_trinv_t *cntl)
 
FLA_Error FLA_Ttmm_internal_check (FLA_Uplo uplo, FLA_Obj A, fla_ttmm_t *cntl)
 
FLA_Error FLA_SPDinv_internal_check (FLA_Uplo uplo, FLA_Obj A, fla_spdinv_t *cntl)
 
FLA_Error FLA_Sylv_internal_check (FLA_Trans transa, FLA_Trans transb, FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale, fla_sylv_t *cntl)
 
FLA_Error FLA_Lyap_internal_check (FLA_Trans trans, FLA_Obj isgn, FLA_Obj A, FLA_Obj C, FLA_Obj scale, fla_lyap_t *cntl)
 
FLA_Error FLA_QR_UT_internal_check (FLA_Obj A, FLA_Obj T, fla_qrut_t *cntl)
 
FLA_Error FLA_QR_UT_copy_internal_check (FLA_Obj A, FLA_Obj T, FLA_Obj U, fla_qrut_t *cntl)
 
FLA_Error FLA_QR2_UT_internal_check (FLA_Obj B, FLA_Obj D, FLA_Obj T, fla_qr2ut_t *cntl)
 
FLA_Error FLA_CAQR2_UT_internal_check (FLA_Obj B, FLA_Obj D, FLA_Obj T, fla_caqr2ut_t *cntl)
 
FLA_Error FLA_LQ_UT_internal_check (FLA_Obj A, FLA_Obj T, fla_lqut_t *cntl)
 
FLA_Error FLA_Hess_UT_internal_check (FLA_Obj A, FLA_Obj T, fla_hessut_t *cntl)
 
FLA_Error FLA_Tridiag_UT_internal_check (FLA_Uplo uplo, FLA_Obj A, FLA_Obj T, fla_tridiagut_t *cntl)
 
FLA_Error FLA_Bidiag_UT_internal_check (FLA_Obj A, FLA_Obj TU, FLA_Obj TV, fla_bidiagut_t *cntl)
 
FLA_Error FLA_UDdate_UT_internal_check (FLA_Obj R, FLA_Obj C, FLA_Obj D, FLA_Obj T, fla_uddateut_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_internal_check (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 
FLA_Error FLA_Apply_Q2_UT_internal_check (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apq2ut_t *cntl)
 
FLA_Error FLA_Apply_CAQ2_UT_internal_check (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apcaq2ut_t *cntl)
 
FLA_Error FLA_Apply_QUD_UT_internal_check (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj T, FLA_Obj W, FLA_Obj R, FLA_Obj U, FLA_Obj C, FLA_Obj V, FLA_Obj D, fla_apqudut_t *cntl)
 
FLA_Error FLA_Apply_Q_UT_inc_internal_check (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj TW, FLA_Obj W1, FLA_Obj B, fla_apqutinc_t *cntl)
 
FLA_Error FLA_Apply_CAQ_UT_inc_internal_check (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj R, FLA_Obj TW, FLA_Obj W, FLA_Obj B, fla_apcaqutinc_t *cntl)
 
FLA_Error FLA_Apply_QUD_UT_inc_internal_check (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj T, FLA_Obj W, FLA_Obj R, FLA_Obj U, FLA_Obj C, FLA_Obj V, FLA_Obj D, fla_apqudutinc_t *cntl)
 
FLA_Error FLA_Eig_gest_internal_check (FLA_Inv inv, FLA_Uplo uplo, FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 

Function Documentation

◆ FLA_Accum_T_UT()

FLA_Error FLA_Accum_T_UT ( FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  A,
FLA_Obj  tau,
FLA_Obj  T 
)
14{
16
17 // Check parameters.
20
21 // Invoke FLA_Accum_T_UT_internal().
23
24 return r_val;
25}
FLA_Error FLA_Accum_T_UT_internal(FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj tau, FLA_Obj T)
Definition FLA_Accum_T_UT_internal.c:13
FLA_Error FLA_Accum_T_UT_check(FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj tau, FLA_Obj T)
Definition FLA_Accum_T_UT_check.c:13
unsigned int FLA_Check_error_level(void)
Definition FLA_Check.c:18
int FLA_Error
Definition FLA_type_defs.h:47
int i
Definition bl1_axmyv2.c:145

References FLA_Accum_T_UT_check(), FLA_Accum_T_UT_internal(), FLA_Check_error_level(), and i.

◆ FLA_Accum_T_UT_check()

FLA_Error FLA_Accum_T_UT_check ( FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  A,
FLA_Obj  tau,
FLA_Obj  T 
)
14{
16
19
22
25
28
31
34
37
38 // This is not valid.
39 // The width of T can match to either length of width of A,
40 // which depends on how house-holder vectors are accumulated.
41 // e_val = FLA_Check_object_width_equals( T, FLA_Obj_min_dim( A ) );
42 // FLA_Check_error_code( e_val );
43
44 return FLA_SUCCESS;
45}
FLA_Error FLA_Check_consistent_object_datatype(FLA_Obj A, FLA_Obj B)
Definition FLA_Check.c:339
FLA_Error FLA_Check_vector_dim(FLA_Obj x, dim_t expected_length)
Definition FLA_Check.c:1213
FLA_Error FLA_Check_valid_direct(FLA_Conj direct)
Definition FLA_Check.c:123
FLA_Error FLA_Check_col_vector(FLA_Obj x)
Definition FLA_Check.c:1233
FLA_Error FLA_Check_valid_storev(FLA_Conj storev)
Definition FLA_Check.c:134
dim_t FLA_Obj_min_dim(FLA_Obj obj)
Definition FLA_Query.c:153
FLA_Error FLA_Check_floating_object(FLA_Obj A)
Definition FLA_Check.c:232

References FLA_Check_col_vector(), FLA_Check_consistent_object_datatype(), FLA_Check_floating_object(), FLA_Check_valid_direct(), FLA_Check_valid_storev(), FLA_Check_vector_dim(), and FLA_Obj_min_dim().

Referenced by FLA_Accum_T_UT().

◆ FLA_Apply_CAQ2_UT_internal_check()

FLA_Error FLA_Apply_CAQ2_UT_internal_check ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  D,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  C,
FLA_Obj  E,
fla_apcaq2ut_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 // Verify that the object element types are identical.
24
27
30
33
34 // Verify conformality between all the objects.
35 if ( side == FLA_LEFT )
36 {
37 if ( FLA_Obj_elemtype( D ) == FLA_MATRIX )
38 {
41
44 }
45 else // if ( FLA_Obj_elemtype( D ) == FLA_SCALAR )
46 {
47 //e_val = FLA_Check_matrix_matrix_dims( FLA_NO_TRANSPOSE, FLA_TRANSPOSE, E, C, D );
48 //FLA_Check_error_code( e_val );
49
52
55 }
56
57 //e_val = FLA_Check_matrix_matrix_dims( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE, D, C, E );
58 //FLA_Check_error_code( e_val );
59
60 }
61 else
62 {
64 }
65
66 return FLA_SUCCESS;
67}
FLA_Error FLA_Check_object_width_equals(FLA_Obj A, dim_t n)
Definition FLA_Check.c:1049
FLA_Error FLA_Check_null_pointer(void *ptr)
Definition FLA_Check.c:518
dim_t FLA_Obj_width(FLA_Obj obj)
Definition FLA_Query.c:123
FLA_Error FLA_Check_conformal_dims(FLA_Trans trans, FLA_Obj A, FLA_Obj B)
Definition FLA_Check.c:393
FLA_Error FLA_Check_object_length_equals(FLA_Obj A, dim_t m)
Definition FLA_Check.c:1039
dim_t FLA_Obj_length(FLA_Obj obj)
Definition FLA_Query.c:116
FLA_Elemtype FLA_Obj_elemtype(FLA_Obj obj)
Definition FLA_Query.c:51
FLA_Error FLA_Check_identical_object_elemtype(FLA_Obj A, FLA_Obj B)
Definition FLA_Check.c:987

References FLA_Check_conformal_dims(), FLA_Check_identical_object_elemtype(), FLA_Check_null_pointer(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Obj_elemtype(), FLA_Obj_length(), and FLA_Obj_width().

Referenced by FLA_Apply_CAQ2_UT_internal().

◆ FLA_Apply_CAQ2_UT_lhfc_task()

FLA_Error FLA_Apply_CAQ2_UT_lhfc_task ( FLA_Obj  D,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  C,
FLA_Obj  E,
fla_apcaq2ut_t cntl 
)
26{
28 D, T, W, C, E,
30}
FLA_Error FLA_Apply_CAQ2_UT_internal(FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apcaq2ut_t *cntl)
Definition FLA_Apply_CAQ2_UT_internal.c:17
fla_apcaq2ut_t * fla_apcaq2ut_cntl_leaf
Definition FLA_Apply_CAQ2_UT_cntl_init.c:19

References fla_apcaq2ut_cntl_leaf, FLA_Apply_CAQ2_UT_internal(), and i.

◆ FLA_Apply_CAQ2_UT_task()

FLA_Error FLA_Apply_CAQ2_UT_task ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  D,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  C,
FLA_Obj  E,
fla_apcaq2ut_t cntl 
)

◆ FLA_Apply_CAQ_UT_inc_check()

FLA_Error FLA_Apply_CAQ_UT_inc_check ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  A,
FLA_Obj  ATW,
FLA_Obj  R,
FLA_Obj  RTW,
FLA_Obj  W1,
FLA_Obj  B 
)
14{
16
19
22
25
28
31
34
37
40
43
46
49
52
55
58
59 if ( side == FLA_LEFT )
60 {
63 }
64 else
65 {
67 }
68
69 return FLA_SUCCESS;
70}
FLA_Error FLA_Check_valid_trans(FLA_Trans trans)
Definition FLA_Check.c:87
FLA_Error FLA_Check_valid_leftright_side(FLA_Side side)
Definition FLA_Check.c:1124
FLA_Error FLA_Check_nonconstant_object(FLA_Obj A)
Definition FLA_Check.c:954
FLA_Error FLA_Check_identical_object_datatype(FLA_Obj A, FLA_Obj B)
Definition FLA_Check.c:967

References FLA_Check_conformal_dims(), FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_nonconstant_object(), FLA_Check_object_length_equals(), FLA_Check_valid_direct(), FLA_Check_valid_leftright_side(), FLA_Check_valid_storev(), FLA_Check_valid_trans(), and FLA_Obj_length().

Referenced by FLASH_Apply_CAQ_UT_inc().

◆ FLA_Apply_CAQ_UT_inc_internal_check()

FLA_Error FLA_Apply_CAQ_UT_inc_internal_check ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  R,
FLA_Obj  TW,
FLA_Obj  W,
FLA_Obj  B,
fla_apcaqutinc_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 // Verify that the object element types are identical.
24
27
30
31 // Verify conformality between all the objects. This check works regardless
32 // of whether the element type is FLA_MATRIX or FLA_SCALAR because the
33 // element length and width are used instead of scalar length and width.
34 if ( side == FLA_LEFT )
35 {
38
41
44 }
45 else
46 {
48 }
49
50 return FLA_SUCCESS;
51}

References FLA_Check_conformal_dims(), FLA_Check_identical_object_elemtype(), FLA_Check_null_pointer(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Obj_length(), and FLA_Obj_width().

Referenced by FLA_Apply_CAQ_UT_inc_internal().

◆ FLA_Apply_H2_UT()

FLA_Error FLA_Apply_H2_UT ( FLA_Side  side,
FLA_Obj  tau,
FLA_Obj  u2,
FLA_Obj  a1,
FLA_Obj  A2 
)
14{
16
17 // Check parameters.
20
21 if ( FLA_Obj_has_zero_dim( a1 ) ) return FLA_SUCCESS;
22
23 // Invoke FLA_Apply_H2_UT_internal() to parse parameters.
25
26 return r_val;
27}
FLA_Error FLA_Apply_H2_UT_internal(FLA_Side side, FLA_Obj tau, FLA_Obj u2, FLA_Obj a1, FLA_Obj A2)
Definition FLA_Apply_H2_UT_internal.c:13
FLA_Error FLA_Apply_H2_UT_check(FLA_Side side, FLA_Obj tau, FLA_Obj u2, FLA_Obj a1, FLA_Obj A2)
Definition FLA_Apply_H2_UT_check.c:13
FLA_Bool FLA_Obj_has_zero_dim(FLA_Obj A)
Definition FLA_Query.c:400

References FLA_Apply_H2_UT_check(), FLA_Apply_H2_UT_internal(), FLA_Check_error_level(), FLA_Obj_has_zero_dim(), and i.

Referenced by FLA_Bidiag_UT_u_step_unb_var1(), FLA_CAQR2_UT_unb_var1(), FLA_Hess_UT_step_unb_var1(), FLA_LQ_UT_unb_var1(), FLA_LQ_UT_unb_var2(), FLA_QR2_UT_unb_var1(), FLA_QR_UT_piv_unb_var1(), FLA_QR_UT_unb_var1(), and FLA_QR_UT_unb_var2().

◆ FLA_Apply_H2_UT_check()

FLA_Error FLA_Apply_H2_UT_check ( FLA_Side  side,
FLA_Obj  tau,
FLA_Obj  u2,
FLA_Obj  a1t,
FLA_Obj  A2 
)
14{
16
19
22
25
28
31
34
37
40
43
44 if ( side == FLA_LEFT )
45 {
48
51 }
52 else // if ( side == FLA_RIGHT )
53 {
56
59 }
60
61 // if columnwise
62 //e_val = FLA_Check_matrix_vector_dims( FLA_TRANSPOSE, A2, u2, a1t );
63 //FLA_Check_error_code( e_val );
64
65 // if rowwise
66 //e_val = FLA_Check_matrix_vector_dims( ... );
67 //FLA_Check_error_code( e_val );
68
69 return FLA_SUCCESS;
70}
FLA_Error FLA_Check_if_scalar(FLA_Obj A)
Definition FLA_Check.c:373
FLA_Error FLA_Check_if_vector(FLA_Obj A)
Definition FLA_Check.c:383
dim_t FLA_Obj_vector_dim(FLA_Obj obj)
Definition FLA_Query.c:137

References FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_if_scalar(), FLA_Check_if_vector(), FLA_Check_nonconstant_object(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Check_valid_leftright_side(), and FLA_Obj_vector_dim().

Referenced by FLA_Apply_H2_UT().

◆ FLA_Apply_HUD_UT()

FLA_Error FLA_Apply_HUD_UT ( FLA_Side  side,
FLA_Obj  tau,
FLA_Obj  w12t,
FLA_Obj  u2,
FLA_Obj  v2,
FLA_Obj  r12t,
FLA_Obj  C2,
FLA_Obj  D2 
)
18{
20
21 // Check parameters.
24
25 // Invoke FLA_Apply_HUD_UT_internal() to parse parameters.
27
28 return r_val;
29}
FLA_Error FLA_Apply_HUD_UT_internal(FLA_Side side, FLA_Obj tau, FLA_Obj w12t, FLA_Obj r12t, FLA_Obj u1, FLA_Obj C2, FLA_Obj v1, FLA_Obj D2)
Definition FLA_Apply_HUD_UT_internal.c:13
FLA_Error FLA_Apply_HUD_UT_check(FLA_Side side, FLA_Obj tau, FLA_Obj w12t, FLA_Obj r12t, FLA_Obj u1, FLA_Obj C2, FLA_Obj v1, FLA_Obj D2)
Definition FLA_Apply_HUD_UT_check.c:13

References FLA_Apply_HUD_UT_check(), FLA_Apply_HUD_UT_internal(), FLA_Check_error_level(), and i.

Referenced by FLA_UDdate_UT_unb_var1().

◆ FLA_Apply_HUD_UT_check()

FLA_Error FLA_Apply_HUD_UT_check ( FLA_Side  side,
FLA_Obj  tau,
FLA_Obj  w12t,
FLA_Obj  u2,
FLA_Obj  v2,
FLA_Obj  r12t,
FLA_Obj  C2,
FLA_Obj  D2 
)
14{
16
19
22
25
28
31
34
37
40
43
46
49
52
55
58
61
64
67
68 return FLA_SUCCESS;
69}
FLA_Error FLA_Check_matrix_vector_dims(FLA_Trans trans, FLA_Obj A, FLA_Obj x, FLA_Obj y)
Definition FLA_Check.c:453

References FLA_Check_conformal_dims(), FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_if_scalar(), FLA_Check_if_vector(), FLA_Check_matrix_vector_dims(), FLA_Check_nonconstant_object(), and FLA_Check_valid_leftright_side().

Referenced by FLA_Apply_HUD_UT().

◆ FLA_Apply_pivots()

FLA_Error FLA_Apply_pivots ( FLA_Side  side,
FLA_Trans  trans,
FLA_Obj  p,
FLA_Obj  A 
)
16{
18
19 // Check parameters.
20
22
23 return r_val;
24}
fla_appiv_t * fla_appiv_cntl_leaf
Definition FLA_Apply_pivots_cntl_init.c:13
FLA_Error FLA_Apply_pivots_internal(FLA_Side side, FLA_Trans trans, FLA_Obj p, FLA_Obj A, fla_appiv_t *cntl)
Definition FLA_Apply_pivots_internal.c:13

References fla_appiv_cntl_leaf, FLA_Apply_pivots_internal(), and i.

Referenced by FLA_Bidiag_UT_form_U_ext(), FLA_Bidiag_UT_form_V_ext(), FLA_Form_perm_matrix(), FLA_LU_piv_solve(), FLA_LU_piv_unb_var3(), FLA_LU_piv_unb_var3b(), FLA_LU_piv_unb_var4(), FLA_LU_piv_unb_var5(), FLA_QR_UT_piv_blk_var1(), FLA_QR_UT_piv_blk_var2(), FLA_QR_UT_piv_unb_var1(), FLA_QR_UT_piv_unb_var2(), FLA_Trsm_piv_task(), and FLASH_FS_incpiv_aux1().

◆ FLA_Apply_pivots_check()

FLA_Error FLA_Apply_pivots_check ( FLA_Side  side,
FLA_Trans  trans,
FLA_Obj  p,
FLA_Obj  A 
)

◆ FLA_Apply_pivots_ln_task()

FLA_Error FLA_Apply_pivots_ln_task ( FLA_Obj  p,
FLA_Obj  A,
fla_appiv_t cntl 
)
24{
25 //return FLA_Apply_pivots_unb_external( FLA_LEFT, FLA_NO_TRANSPOSE, p, A );
27 p, A,
29}
fla_appiv_t * fla_appiv_cntl_leaf
Definition FLA_Apply_pivots_cntl_init.c:13

References fla_appiv_cntl_leaf, FLA_Apply_pivots_internal(), and i.

◆ FLA_Apply_pivots_ln_unb_ext()

FLA_Error FLA_Apply_pivots_ln_unb_ext ( FLA_Obj  p,
FLA_Obj  A 
)
122{
124}
FLA_Error FLA_Apply_pivots_unb_external(FLA_Side side, FLA_Trans trans, FLA_Obj p, FLA_Obj A)
Definition FLA_Apply_pivots_unb_external.c:13

References FLA_Apply_pivots_unb_external(), and i.

Referenced by FLA_Apply_pivots_ln().

◆ FLA_Apply_pivots_macro_external()

FLA_Error FLA_Apply_pivots_macro_external ( FLA_Side  side,
FLA_Trans  trans,
FLA_Obj  p,
FLA_Obj  A 
)
14{
15 int i, j;
16 int ipiv;
17 int* buf_p = ( int* ) FLA_Obj_buffer_at_view( p );
19 int m_blocks = FLA_Obj_length( A );
20 int m_A = FLA_Obj_length( *blocks );
21 int n_A = FLA_Obj_width( *blocks );
22 FLA_Datatype datatype = FLA_Obj_datatype( A );
23
24#ifdef FLA_ENABLE_WINDOWS_BUILD
25 int* m = ( int* ) _alloca( m_blocks * sizeof( int ) );
26 int* cs = ( int* ) _alloca( m_blocks * sizeof( int ) );
27#else
28 int* m = ( int* ) malloc( m_blocks * sizeof( int ) );
29 int* cs = ( int* ) malloc( m_blocks * sizeof( int ) );
30 //int m[m_blocks];
31 //int cs[m_blocks];
32#endif
33
34 if ( side != FLA_LEFT || trans != FLA_NO_TRANSPOSE )
36
37 switch ( datatype )
38 {
39 case FLA_FLOAT:
40 {
41#ifdef FLA_ENABLE_WINDOWS_BUILD
42 float** buffer = ( float** ) _alloca( m_blocks * sizeof( float* ) );
43#else
44 float** buffer = ( float** ) malloc( m_blocks * sizeof( float* ) );
45 //float* buffer[m_blocks];
46#endif
47 for ( i = 0; i < m_blocks; i++ )
48 {
49 buffer[i] = ( float* ) FLA_Obj_buffer_at_view( blocks[i] );
50
51 m[i] = FLA_Obj_length( blocks[i] );
52 cs[i] = FLA_Obj_col_stride( blocks[i] );
53 }
54
55 for ( j = 0; j < m_A; j++ )
56 {
57 ipiv = buf_p[j] + j;
58
59 if ( ipiv != j )
60 {
61 i = 0;
62
63 while ( ipiv >= m[i] )
64 {
65 ipiv = ipiv - m[i];
66 i++;
67 }
68
70 buffer[0] + j, cs[0],
71 buffer[i] + ipiv, cs[i] );
72 }
73 }
74#ifdef FLA_ENABLE_WINDOWS_BUILD
75#else
76 free( buffer );
77#endif
78 break;
79 }
80 case FLA_DOUBLE:
81 {
82#ifdef FLA_ENABLE_WINDOWS_BUILD
83 double** buffer = ( double** ) _alloca( m_blocks * sizeof( double* ) );
84#else
85 double** buffer = ( double** ) malloc( m_blocks * sizeof( double* ) );
86 //double* buffer[m_blocks];
87#endif
88 for ( i = 0; i < m_blocks; i++ )
89 {
90 buffer[i] = ( double* ) FLA_Obj_buffer_at_view( blocks[i] );
91
92 m[i] = FLA_Obj_length( blocks[i] );
93 cs[i] = FLA_Obj_col_stride( blocks[i] );
94 }
95
96 for ( j = 0; j < m_A; j++ )
97 {
98 ipiv = buf_p[j] + j;
99
100 if ( ipiv != j )
101 {
102 i = 0;
103
104 while ( ipiv >= m[i] )
105 {
106 ipiv = ipiv - m[i];
107 i++;
108 }
109
111 buffer[0] + j, cs[0],
112 buffer[i] + ipiv, cs[i] );
113 }
114 }
115#ifdef FLA_ENABLE_WINDOWS_BUILD
116#else
117 free( buffer );
118#endif
119 break;
120 }
121 case FLA_COMPLEX:
122 {
123#ifdef FLA_ENABLE_WINDOWS_BUILD
124 scomplex** buffer = ( scomplex** ) _alloca( m_blocks * sizeof( scomplex* ) );
125#else
126 scomplex** buffer = ( scomplex** ) malloc( m_blocks * sizeof( scomplex* ) );
127 //scomplex* buffer[m_blocks];
128#endif
129 for ( i = 0; i < m_blocks; i++ )
130 {
131 buffer[i] = ( scomplex* ) FLA_Obj_buffer_at_view( blocks[i] );
132
133 m[i] = FLA_Obj_length( blocks[i] );
134 cs[i] = FLA_Obj_col_stride( blocks[i] );
135 }
136
137 for ( j = 0; j < m_A; j++ )
138 {
139 ipiv = buf_p[j] + j;
140
141 if ( ipiv != j )
142 {
143 i = 0;
144
145 while ( ipiv >= m[i] )
146 {
147 ipiv = ipiv - m[i];
148 i++;
149 }
150
152 buffer[0] + j, cs[0],
153 buffer[i] + ipiv, cs[i] );
154 }
155 }
156#ifdef FLA_ENABLE_WINDOWS_BUILD
157#else
158 free( buffer );
159#endif
160 break;
161 }
163 {
164#ifdef FLA_ENABLE_WINDOWS_BUILD
165 dcomplex** buffer = ( dcomplex** ) _alloca( m_blocks * sizeof( dcomplex* ) );
166#else
167 dcomplex** buffer = ( dcomplex** ) malloc( m_blocks * sizeof( dcomplex* ) );
168 //dcomplex* buffer[m_blocks];
169#endif
170 for ( i = 0; i < m_blocks; i++ )
171 {
172 buffer[i] = ( dcomplex* ) FLA_Obj_buffer_at_view( blocks[i] );
173
174 m[i] = FLA_Obj_length( blocks[i] );
175 cs[i] = FLA_Obj_col_stride( blocks[i] );
176 }
177
178 for ( j = 0; j < m_A; j++ )
179 {
180 ipiv = buf_p[j] + j;
181
182 if ( ipiv != j )
183 {
184 i = 0;
185
186 while ( ipiv >= m[i] )
187 {
188 ipiv = ipiv - m[i];
189 i++;
190 }
191
193 buffer[0] + j, cs[0],
194 buffer[i] + ipiv, cs[i] );
195 }
196 }
197#ifdef FLA_ENABLE_WINDOWS_BUILD
198#else
199 free( buffer );
200#endif
201 break;
202 }
203 }
204
205#ifdef FLA_ENABLE_WINDOWS_BUILD
206#else
207 free( m );
208 free( cs );
209#endif
210
211 return FLA_SUCCESS;
212}
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition FLA_Query.c:174
void * FLA_Obj_buffer_at_view(FLA_Obj obj)
Definition FLA_Query.c:215
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition FLA_Query.c:13
int FLA_Datatype
Definition FLA_type_defs.h:49
void bl1_dswapv(int n, double *x, int incx, double *y, int incy)
Definition bl1_swapv.c:23
void bl1_zswapv(int n, dcomplex *x, int incx, dcomplex *y, int incy)
Definition bl1_swapv.c:43
void bl1_sswapv(int n, float *x, int incx, float *y, int incy)
Definition bl1_swapv.c:13
void bl1_cswapv(int n, scomplex *x, int incx, scomplex *y, int incy)
Definition bl1_swapv.c:33
Definition FLA_type_defs.h:159
Definition blis_type_defs.h:138
Definition blis_type_defs.h:133

References bl1_cswapv(), bl1_dswapv(), bl1_sswapv(), bl1_zswapv(), FLA_Obj_buffer_at_view(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_width(), and i.

Referenced by FLA_Apply_pivots_macro_task().

◆ FLA_Apply_pivots_macro_task()

FLA_Error FLA_Apply_pivots_macro_task ( FLA_Side  side,
FLA_Trans  trans,
FLA_Obj  p,
FLA_Obj  A,
fla_appiv_t cntl 
)
16{
18/*
19 FLA_Obj A_flat;
20
21 FLASH_Obj_create_flat_copy_of_hier( A, &A_flat );
22
23 r_val = FLA_Apply_pivots_unb_external( side, trans, p, A_flat );
24
25 FLASH_Copy_flat_to_hier( A_flat, 0, 0, A );
26
27 FLA_Obj_free( &A_flat );
28*/
29 if ( FLA_Obj_length( A ) > 1 )
30 {
32 }
33 else
34 {
35 //r_val = FLA_Apply_pivots_unb_external( side, trans, p,
36 // *FLASH_OBJ_PTR_AT( A ) );
40 }
41
42 return r_val;
43}
fla_appiv_t * fla_appiv_cntl_leaf
Definition FLA_Apply_pivots_cntl_init.c:13
FLA_Error FLA_Apply_pivots_macro_external(FLA_Side side, FLA_Trans trans, FLA_Obj p, FLA_Obj A)
Definition FLA_Apply_pivots_macro_external.c:13

References fla_appiv_cntl_leaf, FLA_Apply_pivots_internal(), FLA_Apply_pivots_macro_external(), FLA_Obj_length(), and i.

Referenced by FLA_Apply_pivots_internal(), and FLASH_Queue_exec_task().

◆ FLA_Apply_pivots_task()

FLA_Error FLA_Apply_pivots_task ( FLA_Side  side,
FLA_Trans  trans,
FLA_Obj  p,
FLA_Obj  A,
fla_appiv_t cntl 
)
16{
17 //return FLA_Apply_pivots_unb_external( side, trans, p, A );
19 p, A,
21}

References fla_appiv_cntl_leaf, FLA_Apply_pivots_internal(), and i.

◆ FLA_Apply_pivots_unb_external()

FLA_Error FLA_Apply_pivots_unb_external ( FLA_Side  side,
FLA_Trans  trans,
FLA_Obj  p,
FLA_Obj  A 
)
14{
15#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
16 FLA_Datatype datatype;
17 int n_A, cs_A;
18 int m_p;
19 int inc_p;
20 int* buff_p;
21 int k1_1, k2_1;
22 int* pivots_lapack;
23 int i;
24
27
28 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
29
30 datatype = FLA_Obj_datatype( A );
31
32 n_A = FLA_Obj_width( A );
34
37
38 buff_p = FLA_INT_PTR( p );
39
40 // Use one-based indices for LAPACK.
41 k1_1 = 1;
42 k2_1 = m_p;
43
44 // Translate FLAME pivot indices to LAPACK-compatible indices. It is
45 // important to note that this conversion, unlike the one done by
46 // FLA_Shift_pivots_to(), is NOT in-place, but rather done separately
47 // in a temporary buffer.
48#ifdef FLA_ENABLE_WINDOWS_BUILD
49 pivots_lapack = ( int * ) _alloca( m_p * sizeof( int ) );
50#else
51 pivots_lapack = ( int * ) alloca( m_p * sizeof( int ) );
52#endif
53
54 for ( i = 0; i < m_p; i++ )
55 {
56 pivots_lapack[ i ] = buff_p[ i ] + i + 1;
57 }
58
59 switch ( datatype ){
60
61 case FLA_FLOAT:
62 {
63 float* buff_A = ( float * ) FLA_FLOAT_PTR( A );
64
66 buff_A, &cs_A,
67 &k1_1,
68 &k2_1,
70 &inc_p );
71 break;
72 }
73
74 case FLA_DOUBLE:
75 {
76 double* buff_A = ( double * ) FLA_DOUBLE_PTR( A );
77
79 buff_A, &cs_A,
80 &k1_1,
81 &k2_1,
83 &inc_p );
84 break;
85 }
86
87 case FLA_COMPLEX:
88 {
90
92 buff_A, &cs_A,
93 &k1_1,
94 &k2_1,
96 &inc_p );
97 break;
98 }
99
101 {
103
104 F77_zlaswp( &n_A,
105 buff_A, &cs_A,
106 &k1_1,
107 &k2_1,
109 &inc_p );
110 break;
111 }
112
113 }
114#else
116#endif
117
118 return FLA_SUCCESS;
119}
FLA_Error FLA_Apply_pivots_check(FLA_Side side, FLA_Trans trans, FLA_Obj p, FLA_Obj A)
Definition FLA_Apply_pivots_check.c:13
int F77_zlaswp(int *n, dcomplex *a, int *lda, int *k1, int *k2, int *ipiv, int *incx)
int F77_claswp(int *n, scomplex *a, int *lda, int *k1, int *k2, int *ipiv, int *incx)
int F77_dlaswp(int *n, double *a, int *lda, int *k1, int *k2, int *ipiv, int *incx)
int F77_slaswp(int *n, float *a, int *lda, int *k1, int *k2, int *ipiv, int *incx)
dim_t FLA_Obj_vector_inc(FLA_Obj obj)
Definition FLA_Query.c:145

References F77_claswp(), F77_dlaswp(), F77_slaswp(), F77_zlaswp(), FLA_Apply_pivots_check(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_vector_dim(), FLA_Obj_vector_inc(), FLA_Obj_width(), and i.

Referenced by FLA_Apply_pivots_ln_unb_ext().

◆ FLA_Apply_Q2_UT_check()

FLA_Error FLA_Apply_Q2_UT_check ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  D,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  C,
FLA_Obj  E 
)
14{
16
19
22
25
28
31
34
37
40
43
46
49
50 if ( side == FLA_LEFT )
51 {
54
57
60 }
61 else
62 {
65
68
71 }
72
73 return FLA_SUCCESS;
74}
FLA_Error FLA_Check_square(FLA_Obj A)
Definition FLA_Check.c:363
FLA_Error FLA_Check_matrix_matrix_dims(FLA_Trans transa, FLA_Trans transb, FLA_Obj A, FLA_Obj B, FLA_Obj C)
Definition FLA_Check.c:417

References FLA_Check_conformal_dims(), FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_matrix_matrix_dims(), FLA_Check_nonconstant_object(), FLA_Check_square(), FLA_Check_valid_direct(), FLA_Check_valid_leftright_side(), FLA_Check_valid_storev(), and FLA_Check_valid_trans().

Referenced by FLASH_Apply_Q2_UT().

◆ FLA_Apply_Q2_UT_internal_check()

FLA_Error FLA_Apply_Q2_UT_internal_check ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  D,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  C,
FLA_Obj  E,
fla_apq2ut_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 // Verify that the object element types are identical.
24
27
30
33
34 // Verify conformality between all the objects.
35 if ( side == FLA_LEFT )
36 {
37 if ( FLA_Obj_elemtype( D ) == FLA_MATRIX )
38 {
41
44 }
45 else // if ( FLA_Obj_elemtype( D ) == FLA_SCALAR )
46 {
47 //e_val = FLA_Check_matrix_matrix_dims( FLA_NO_TRANSPOSE, FLA_TRANSPOSE, E, C, D );
48 //FLA_Check_error_code( e_val );
49
52
55 }
56
57 //e_val = FLA_Check_matrix_matrix_dims( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE, D, C, E );
58 //FLA_Check_error_code( e_val );
59
60 }
61 else
62 {
64 }
65
66 return FLA_SUCCESS;
67}

References FLA_Check_conformal_dims(), FLA_Check_identical_object_elemtype(), FLA_Check_null_pointer(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Obj_elemtype(), FLA_Obj_length(), and FLA_Obj_width().

Referenced by FLA_Apply_Q2_UT_internal().

◆ FLA_Apply_Q2_UT_lhfc_task()

FLA_Error FLA_Apply_Q2_UT_lhfc_task ( FLA_Obj  D,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  C,
FLA_Obj  E,
fla_apq2ut_t cntl 
)
26{
28 D, T, W, C, E,
30}
FLA_Error FLA_Apply_Q2_UT_internal(FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apq2ut_t *cntl)
Definition FLA_Apply_Q2_UT_internal.c:17
fla_apq2ut_t * fla_apq2ut_cntl_leaf
Definition FLA_Apply_Q2_UT_cntl_init.c:18

References FLA_Apply_Q2_UT_internal(), fla_apq2ut_cntl_leaf, and i.

◆ FLA_Apply_Q2_UT_task()

FLA_Error FLA_Apply_Q2_UT_task ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  D,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  C,
FLA_Obj  E,
fla_apq2ut_t cntl 
)

◆ FLA_Apply_Q_blk_external()

FLA_Error FLA_Apply_Q_blk_external ( FLA_Side  side,
FLA_Trans  trans,
FLA_Store  storev,
FLA_Obj  A,
FLA_Obj  t,
FLA_Obj  B 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 // int m_A, n_A;
19 int m_B, n_B;
20 int cs_A;
21 int cs_B;
22 int k_t;
23 int lwork;
24 char blas_side;
25 char blas_trans;
27
30
31 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
32
33 datatype = FLA_Obj_datatype( A );
34
35 // m_A = FLA_Obj_length( A );
36 // n_A = FLA_Obj_width( A );
38
39 m_B = FLA_Obj_length( B );
40 n_B = FLA_Obj_width( B );
42
44
47
48 if ( side == FLA_LEFT )
50 else
52
53 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work_obj );
54
55
56 switch( datatype ){
57
58 case FLA_FLOAT:
59 {
60 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
61 float *buff_t = ( float * ) FLA_FLOAT_PTR( t );
62 float *buff_B = ( float * ) FLA_FLOAT_PTR( B );
63 float *buff_work = ( float * ) FLA_FLOAT_PTR( work_obj );
64
65 if ( storev == FLA_COLUMNWISE )
68 &m_B,
69 &n_B,
70 &k_t,
71 buff_A, &cs_A,
72 buff_t,
73 buff_B, &cs_B,
75 &info );
76 else // storev == FLA_ROWWISE
79 &m_B,
80 &n_B,
81 &k_t,
82 buff_A, &cs_A,
83 buff_t,
84 buff_B, &cs_B,
86 &info );
87
88 break;
89 }
90
91 case FLA_DOUBLE:
92 {
93 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
94 double *buff_t = ( double * ) FLA_DOUBLE_PTR( t );
95 double *buff_B = ( double * ) FLA_DOUBLE_PTR( B );
96 double *buff_work = ( double * ) FLA_DOUBLE_PTR( work_obj );
97
98 if ( storev == FLA_COLUMNWISE )
100 &blas_trans,
101 &m_B,
102 &n_B,
103 &k_t,
104 buff_A, &cs_A,
105 buff_t,
106 buff_B, &cs_B,
108 &info );
109 else // storev == FLA_ROWWISE
111 &blas_trans,
112 &m_B,
113 &n_B,
114 &k_t,
115 buff_A, &cs_A,
116 buff_t,
117 buff_B, &cs_B,
119 &info );
120
121 break;
122 }
123
124 case FLA_COMPLEX:
125 {
130
131 if ( storev == FLA_COLUMNWISE )
133 &blas_trans,
134 &m_B,
135 &n_B,
136 &k_t,
137 buff_A, &cs_A,
138 buff_t,
139 buff_B, &cs_B,
141 &info );
142 else // storev == FLA_ROWWISE
144 &blas_trans,
145 &m_B,
146 &n_B,
147 &k_t,
148 buff_A, &cs_A,
149 buff_t,
150 buff_B, &cs_B,
152 &info );
153
154 break;
155 }
156
158 {
163
164 if ( storev == FLA_COLUMNWISE )
166 &blas_trans,
167 &m_B,
168 &n_B,
169 &k_t,
170 buff_A, &cs_A,
171 buff_t,
172 buff_B, &cs_B,
174 &info );
175 else // storev == FLA_ROWWISE
177 &blas_trans,
178 &m_B,
179 &n_B,
180 &k_t,
181 buff_A, &cs_A,
182 buff_t,
183 buff_B, &cs_B,
185 &info );
186
187 break;
188 }
189
190 }
191
193#else
195#endif
196
197 return info;
198}
FLA_Error FLA_Apply_Q_check(FLA_Side side, FLA_Trans trans, FLA_Store storev, FLA_Obj A, FLA_Obj t, FLA_Obj B)
Definition FLA_Apply_Q_check.c:13
int F77_dormqr(char *side, char *trans, int *m, int *n, int *k, double *a, int *lda, double *tau, double *c, int *ldc, double *work, int *lwork, int *info)
int F77_cunmlq(char *side, char *trans, int *m, int *n, int *k, scomplex *a, int *lda, scomplex *tau, scomplex *c, int *ldc, scomplex *work, int *lwork, int *info)
int F77_sormqr(char *side, char *trans, int *m, int *n, int *k, float *a, int *lda, float *tau, float *c, int *ldc, float *work, int *lwork, int *info)
int F77_zunmlq(char *side, char *trans, int *m, int *n, int *k, dcomplex *a, int *lda, dcomplex *tau, dcomplex *c, int *ldc, dcomplex *work, int *lwork, int *info)
int F77_zunmqr(char *side, char *trans, int *m, int *n, int *k, dcomplex *a, int *lda, dcomplex *tau, dcomplex *c, int *ldc, dcomplex *work, int *lwork, int *info)
int F77_sormlq(char *side, char *trans, int *m, int *n, int *k, float *a, int *lda, float *tau, float *c, int *ldc, float *work, int *lwork, int *info)
int F77_dormlq(char *side, char *trans, int *m, int *n, int *k, double *a, int *lda, double *tau, double *c, int *ldc, double *work, int *lwork, int *info)
int F77_cunmqr(char *side, char *trans, int *m, int *n, int *k, scomplex *a, int *lda, scomplex *tau, scomplex *c, int *ldc, scomplex *work, int *lwork, int *info)
FLA_Error FLA_Obj_create(FLA_Datatype datatype, dim_t m, dim_t n, dim_t rs, dim_t cs, FLA_Obj *obj)
Definition FLA_Obj.c:55
dim_t FLA_Query_blocksize(FLA_Datatype dt, FLA_Dimension dim)
Definition FLA_Blocksize.c:161
void FLA_Param_map_flame_to_netlib_trans(FLA_Trans trans, void *blas_trans)
Definition FLA_Param.c:15
FLA_Error FLA_Obj_free(FLA_Obj *obj)
Definition FLA_Obj.c:588
void FLA_Param_map_flame_to_netlib_side(FLA_Uplo side, void *blas_side)
Definition FLA_Param.c:71

References F77_cunmlq(), F77_cunmqr(), F77_dormlq(), F77_dormqr(), F77_sormlq(), F77_sormqr(), F77_zunmlq(), F77_zunmqr(), FLA_Apply_Q_check(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_vector_dim(), FLA_Obj_width(), FLA_Param_map_flame_to_netlib_side(), FLA_Param_map_flame_to_netlib_trans(), FLA_Query_blocksize(), and i.

◆ FLA_Apply_Q_check()

FLA_Error FLA_Apply_Q_check ( FLA_Side  side,
FLA_Trans  trans,
FLA_Store  storev,
FLA_Obj  A,
FLA_Obj  t,
FLA_Obj  B 
)
14{
16
19
22
23 if ( FLA_Obj_is_real( A ) )
24 {
27 }
28 else
29 {
32 }
33
36
39
42
45
48
49 if ( side == FLA_LEFT )
50 {
51 if ( storev == FLA_COLUMNWISE )
52 {
55 }
56 else // if ( storev == FLA_ROWWISE )
57 {
60 }
61 }
62 else
63 {
64 if ( storev == FLA_COLUMNWISE )
65 {
68 }
69 else // if ( storev == FLA_ROWWISE )
70 {
73 }
74 }
75
76 return FLA_SUCCESS;
77}
FLA_Bool FLA_Obj_is_real(FLA_Obj A)
Definition FLA_Query.c:307
FLA_Error FLA_Check_valid_complex_trans(FLA_Trans trans)
Definition FLA_Check.c:906
FLA_Error FLA_Check_valid_real_trans(FLA_Trans trans)
Definition FLA_Check.c:917

References FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_nonconstant_object(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Check_valid_complex_trans(), FLA_Check_valid_leftright_side(), FLA_Check_valid_real_trans(), FLA_Check_valid_storev(), FLA_Check_valid_trans(), FLA_Obj_is_real(), FLA_Obj_length(), and FLA_Obj_width().

Referenced by FLA_Apply_Q_blk_external().

◆ FLA_Apply_Q_UT()

FLA_Error FLA_Apply_Q_UT ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B 
)
17{
19
20 // Check parameters.
23
24 // Invoke FLA_Apply_Q_UT_internal() with the standard control tree.
26
27 return r_val;
28}
fla_apqut_t * fla_apqut_cntl_leaf
Definition FLA_Apply_Q_UT_cntl_init.c:19
FLA_Error FLA_Apply_Q_UT_internal(FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition FLA_Apply_Q_UT_internal.c:17
FLA_Error FLA_Apply_Q_UT_check(FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B)
Definition FLA_Apply_Q_UT_check.c:13

References FLA_Apply_Q_UT_check(), FLA_Apply_Q_UT_internal(), fla_apqut_cntl_leaf, FLA_Check_error_level(), and i.

Referenced by FLA_Hess_UT_blk_var5(), FLA_LQ_UT_solve(), FLA_QR_UT_form_Q(), FLA_QR_UT_form_Q_blk_var1(), and FLA_QR_UT_solve().

◆ FLA_Apply_Q_UT_check()

FLA_Error FLA_Apply_Q_UT_check ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B 
)
14{
16
19
22
25
28
31
34
37
40
43
44 if ( side == FLA_LEFT )
45 {
46 //e_val = FLA_Check_object_width_equals( T, FLA_Obj_width( A ) );
47 //FLA_Check_error_code( e_val );
48 //e_val = FLA_Check_object_width_equals( T, FLA_Obj_min_dim( A ) );
49 //FLA_Check_error_code( e_val );
50
51 if ( storev == FLA_COLUMNWISE )
52 {
55 }
56 else // if ( storev == FLA_ROWWISE )
57 {
60 }
61 }
62 else // if ( side == FLA_RIGHT )
63 {
64 //e_val = FLA_Check_object_width_equals( T, FLA_Obj_min_dim( A ) );
65 //FLA_Check_error_code( e_val );
66
67 if ( storev == FLA_COLUMNWISE )
68 {
71 }
72 else // if ( storev == FLA_ROWWISE )
73 {
76 }
77 }
78
79 return FLA_SUCCESS;
80}

References FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_nonconstant_object(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Check_valid_direct(), FLA_Check_valid_leftright_side(), FLA_Check_valid_storev(), FLA_Check_valid_trans(), FLA_Obj_length(), and FLA_Obj_width().

Referenced by FLA_Apply_Q_UT(), and FLASH_Apply_Q_UT().

◆ FLA_Apply_Q_UT_inc_check()

FLA_Error FLA_Apply_Q_UT_inc_check ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  A,
FLA_Obj  TW,
FLA_Obj  W1,
FLA_Obj  B 
)

References FLA_Check_conformal_dims(), FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_nonconstant_object(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Check_valid_direct(), FLA_Check_valid_leftright_side(), FLA_Check_valid_storev(), FLA_Check_valid_trans(), FLA_Obj_length(), and FLA_Obj_width().

Referenced by FLASH_Apply_Q_UT_inc().

◆ FLA_Apply_Q_UT_inc_internal_check()

FLA_Error FLA_Apply_Q_UT_inc_internal_check ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  A,
FLA_Obj  TW,
FLA_Obj  W1,
FLA_Obj  B,
fla_apqutinc_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 // Verify that the object element types are identical.
24
27
30
31 // Verify conformality between all the objects. This check works regardless
32 // of whether the element type is FLA_MATRIX or FLA_SCALAR because the
33 // element length and width are used instead of scalar length and width.
34 if ( side == FLA_LEFT )
35 {
38
41
44 }
45 else
46 {
49
52
55 }
56
57 return FLA_SUCCESS;
58}

References FLA_Check_conformal_dims(), FLA_Check_identical_object_elemtype(), FLA_Check_null_pointer(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Obj_length(), and FLA_Obj_width().

Referenced by FLA_Apply_Q_UT_inc_internal().

◆ FLA_Apply_Q_UT_internal_check()

FLA_Error FLA_Apply_Q_UT_internal_check ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 // Verify that the object element types are identical.
24
27
30
31 // Verify conformality between all the objects. This check works regardless
32 // of whether the element type is FLA_MATRIX or FLA_SCALAR because the
33 // element length and width are used instead of scalar length and width.
34 if ( side == FLA_LEFT )
35 {
36 if ( storev == FLA_COLUMNWISE )
37 {
40 }
41 else // if ( storev == FLA_ROWWISE )
42 {
45 }
46 }
47 else // if ( side == FLA_RIGHT )
48 {
49 if ( storev == FLA_COLUMNWISE )
50 {
53 }
54 else // if ( storev == FLA_ROWWISE )
55 {
58 }
59 }
60
61 return FLA_SUCCESS;
62}

References FLA_Check_identical_object_elemtype(), FLA_Check_null_pointer(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Obj_length(), and FLA_Obj_width().

Referenced by FLA_Apply_Q_UT_internal().

◆ FLA_Apply_Q_UT_lhbc_task()

FLA_Error FLA_Apply_Q_UT_lhbc_task ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)
23{
25 A, T, W, B,
27}
fla_apqut_t * fla_apqut_cntl_leaf
Definition FLA_Apply_Q_UT_cntl_init.c:19

References FLA_Apply_Q_UT_internal(), fla_apqut_cntl_leaf, and i.

◆ FLA_Apply_Q_UT_lhbr_task()

FLA_Error FLA_Apply_Q_UT_lhbr_task ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)

◆ FLA_Apply_Q_UT_lhfc_task()

FLA_Error FLA_Apply_Q_UT_lhfc_task ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)

◆ FLA_Apply_Q_UT_lhfr_task()

FLA_Error FLA_Apply_Q_UT_lhfr_task ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)

◆ FLA_Apply_Q_UT_lnbc_task()

FLA_Error FLA_Apply_Q_UT_lnbc_task ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)

◆ FLA_Apply_Q_UT_lnbr_task()

FLA_Error FLA_Apply_Q_UT_lnbr_task ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)

◆ FLA_Apply_Q_UT_lnfc_task()

FLA_Error FLA_Apply_Q_UT_lnfc_task ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)

◆ FLA_Apply_Q_UT_lnfr_task()

FLA_Error FLA_Apply_Q_UT_lnfr_task ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)

◆ FLA_Apply_Q_UT_rhbc_task()

FLA_Error FLA_Apply_Q_UT_rhbc_task ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)

◆ FLA_Apply_Q_UT_rhbr_task()

FLA_Error FLA_Apply_Q_UT_rhbr_task ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)

◆ FLA_Apply_Q_UT_rhfc_task()

FLA_Error FLA_Apply_Q_UT_rhfc_task ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)

◆ FLA_Apply_Q_UT_rhfr_task()

FLA_Error FLA_Apply_Q_UT_rhfr_task ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)

◆ FLA_Apply_Q_UT_rnbc_task()

FLA_Error FLA_Apply_Q_UT_rnbc_task ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)

◆ FLA_Apply_Q_UT_rnbr_task()

FLA_Error FLA_Apply_Q_UT_rnbr_task ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)

◆ FLA_Apply_Q_UT_rnfc_task()

FLA_Error FLA_Apply_Q_UT_rnfc_task ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)

◆ FLA_Apply_Q_UT_rnfr_task()

FLA_Error FLA_Apply_Q_UT_rnfr_task ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)

◆ FLA_Apply_Q_UT_task()

FLA_Error FLA_Apply_Q_UT_task ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)

◆ FLA_Apply_QUD_UT_check()

FLA_Error FLA_Apply_QUD_UT_check ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  R,
FLA_Obj  U,
FLA_Obj  C,
FLA_Obj  V,
FLA_Obj  D 
)
14{
16
19
22
25
28
31
34
37
40
43
46
49
52
53 if ( side == FLA_LEFT )
54 {
57
60
63
66 }
67 else
68 {
69 }
70
71 return FLA_SUCCESS;
72}

References FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_matrix_matrix_dims(), FLA_Check_nonconstant_object(), FLA_Check_object_width_equals(), FLA_Check_valid_direct(), FLA_Check_valid_leftright_side(), FLA_Check_valid_storev(), FLA_Check_valid_trans(), and FLA_Obj_width().

Referenced by FLA_Apply_QUD_UT().

◆ FLA_Apply_QUD_UT_inc_check()

FLA_Error FLA_Apply_QUD_UT_inc_check ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  R,
FLA_Obj  U,
FLA_Obj  C,
FLA_Obj  V,
FLA_Obj  D 
)
14{
16
19
22
25
28
31
34
37
40
43
46
49
52
53 if ( side == FLA_LEFT )
54 {
57
59 FLA_Obj_length( V ) ) );
61
64
67
70 }
71 else
72 {
73 }
74
75 return FLA_SUCCESS;
76}

References FLA_Check_conformal_dims(), FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_matrix_matrix_dims(), FLA_Check_nonconstant_object(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Check_valid_direct(), FLA_Check_valid_leftright_side(), FLA_Check_valid_storev(), FLA_Check_valid_trans(), FLA_Obj_length(), and FLA_Obj_width().

Referenced by FLASH_Apply_QUD_UT_inc().

◆ FLA_Apply_QUD_UT_inc_internal_check()

FLA_Error FLA_Apply_QUD_UT_inc_internal_check ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  R,
FLA_Obj  U,
FLA_Obj  C,
FLA_Obj  V,
FLA_Obj  D,
fla_apqudutinc_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 // Verify that the object element types are identical.
24
27
30
33
36
39
40 // Verify conformality between all the objects.
41 if ( side == FLA_LEFT )
42 {
45
47 FLA_Obj_length( V ) ) );
49
52
55
58 }
59 else
60 {
62 }
63
64 return FLA_SUCCESS;
65}

References FLA_Check_conformal_dims(), FLA_Check_identical_object_elemtype(), FLA_Check_matrix_matrix_dims(), FLA_Check_null_pointer(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Obj_length(), and FLA_Obj_width().

Referenced by FLA_Apply_QUD_UT_inc_internal().

◆ FLA_Apply_QUD_UT_internal_check()

FLA_Error FLA_Apply_QUD_UT_internal_check ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  R,
FLA_Obj  U,
FLA_Obj  C,
FLA_Obj  V,
FLA_Obj  D,
fla_apqudut_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 // Verify that the object element types are identical.
24
27
30
33
36
39
40 // Verify conformality between all the objects.
41 if ( side == FLA_LEFT )
42 {
43 if ( FLA_Obj_elemtype( R ) == FLA_MATRIX )
44 {
47
49 FLA_Obj_length( V ) ) );
51
54 }
55 else // FLA_Obj_elemtype( R ) == FLA_SCALAR
56 {
57 }
58
61
64
65 }
66 else
67 {
69 }
70
71 return FLA_SUCCESS;
72}

References FLA_Check_conformal_dims(), FLA_Check_identical_object_elemtype(), FLA_Check_matrix_matrix_dims(), FLA_Check_null_pointer(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Obj_elemtype(), FLA_Obj_length(), and FLA_Obj_width().

Referenced by FLA_Apply_QUD_UT_internal().

◆ FLA_Apply_QUD_UT_lhfc_task()

FLA_Error FLA_Apply_QUD_UT_lhfc_task ( FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  R,
FLA_Obj  U,
FLA_Obj  C,
FLA_Obj  V,
FLA_Obj  D,
fla_apqudut_t cntl 
)
30{
32 T, W, R, U, C, V, D,
34}
FLA_Error FLA_Apply_QUD_UT_internal(FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj T, FLA_Obj W, FLA_Obj R, FLA_Obj U, FLA_Obj C, FLA_Obj V, FLA_Obj D, fla_apqudut_t *cntl)
Definition FLA_Apply_QUD_UT_internal.c:17
fla_apqudut_t * fla_apqudut_cntl_leaf
Definition FLA_Apply_QUD_UT_cntl_init.c:18

References FLA_Apply_QUD_UT_internal(), fla_apqudut_cntl_leaf, and i.

◆ FLA_Apply_QUD_UT_task()

FLA_Error FLA_Apply_QUD_UT_task ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  R,
FLA_Obj  U,
FLA_Obj  C,
FLA_Obj  V,
FLA_Obj  D,
fla_apqudut_t cntl 
)

◆ FLA_Bidiag_apply_U_check()

FLA_Error FLA_Bidiag_apply_U_check ( FLA_Side  side,
FLA_Trans  trans,
FLA_Obj  A,
FLA_Obj  t,
FLA_Obj  B 
)

◆ FLA_Bidiag_apply_U_external()

FLA_Error FLA_Bidiag_apply_U_external ( FLA_Side  side,
FLA_Trans  trans,
FLA_Obj  A,
FLA_Obj  t,
FLA_Obj  B 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 // int m_A, n_A;
19 int m_B, n_B;
20 int cs_A;
21 int cs_B;
22 int k_t;
23 int lwork;
25 char blas_side;
26 char blas_vect = 'Q';
27 char blas_trans;
28 int i;
29
30 //if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
31 // FLA_Apply_Q_check( side, trans, storev, A, t, B );
32
33 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
34
35 datatype = FLA_Obj_datatype( A );
36
37 // m_A = FLA_Obj_length( A );
38 // n_A = FLA_Obj_width( A );
40
41 m_B = FLA_Obj_length( B );
42 n_B = FLA_Obj_width( B );
44
45 if ( blas_vect == 'Q' ) k_t = FLA_Obj_vector_dim( t );
46 else k_t = FLA_Obj_vector_dim( t ) + 1;
47
50
53
54
55 // Make a workspace query the first time through. This will provide us with
56 // and ideal workspace size based on an internal block size.
57 lwork = -1;
58 FLA_Obj_create( datatype, 1, 1, 0, 0, &work );
59
60 for ( i = 0; i < 2; ++i )
61 {
62 if ( i == 1 )
63 {
64 // Grab the queried ideal workspace size from the work array, free the
65 // work object, and then re-allocate the workspace with the ideal size.
66 if ( datatype == FLA_FLOAT || datatype == FLA_COMPLEX )
67 lwork = ( int ) *FLA_FLOAT_PTR( work );
68 else if ( datatype == FLA_DOUBLE || datatype == FLA_DOUBLE_COMPLEX )
69 lwork = ( int ) *FLA_DOUBLE_PTR( work );
70
72 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work );
73 }
74
75 switch( datatype ){
76
77 case FLA_FLOAT:
78 {
79 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
80 float *buff_t = ( float * ) FLA_FLOAT_PTR( t );
81 float *buff_B = ( float * ) FLA_FLOAT_PTR( B );
82 float *buff_work = ( float * ) FLA_FLOAT_PTR( work );
83
85 &blas_side,
87 &m_B,
88 &n_B,
89 &k_t,
90 buff_A, &cs_A,
91 buff_t,
92 buff_B, &cs_B,
94 &info );
95
96 break;
97 }
98
99 case FLA_DOUBLE:
100 {
101 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
102 double *buff_t = ( double * ) FLA_DOUBLE_PTR( t );
103 double *buff_B = ( double * ) FLA_DOUBLE_PTR( B );
104 double *buff_work = ( double * ) FLA_DOUBLE_PTR( work );
105
107 &blas_side,
108 &blas_trans,
109 &m_B,
110 &n_B,
111 &k_t,
112 buff_A, &cs_A,
113 buff_t,
114 buff_B, &cs_B,
116 &info );
117
118 break;
119 }
120
121 case FLA_COMPLEX:
122 {
127
129 &blas_side,
130 &blas_trans,
131 &m_B,
132 &n_B,
133 &k_t,
134 buff_A, &cs_A,
135 buff_t,
136 buff_B, &cs_B,
138 &info );
139
140 break;
141 }
142
144 {
149
151 &blas_side,
152 &blas_trans,
153 &m_B,
154 &n_B,
155 &k_t,
156 buff_A, &cs_A,
157 buff_t,
158 buff_B, &cs_B,
160 &info );
161
162 break;
163 }
164
165 }
166 }
167
168 FLA_Obj_free( &work );
169#else
171#endif
172
173 return info;
174}
int F77_cunmbr(char *vect, char *side, char *trans, int *m, int *n, int *k, scomplex *a, int *lda, scomplex *tau, scomplex *c, int *ldc, scomplex *work, int *lwork, int *info)
int F77_sormbr(char *vect, char *side, char *trans, int *m, int *n, int *k, float *a, int *lda, float *tau, float *c, int *ldc, float *work, int *lwork, int *info)
int F77_dormbr(char *vect, char *side, char *trans, int *m, int *n, int *k, double *a, int *lda, double *tau, double *c, int *ldc, double *work, int *lwork, int *info)
int F77_zunmbr(char *vect, char *side, char *trans, int *m, int *n, int *k, dcomplex *a, int *lda, dcomplex *tau, dcomplex *c, int *ldc, dcomplex *work, int *lwork, int *info)

References F77_cunmbr(), F77_dormbr(), F77_sormbr(), F77_zunmbr(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_is_real(), FLA_Obj_length(), FLA_Obj_vector_dim(), FLA_Obj_width(), FLA_Param_map_flame_to_netlib_side(), FLA_Param_map_flame_to_netlib_trans(), and i.

◆ FLA_Bidiag_apply_V_check()

FLA_Error FLA_Bidiag_apply_V_check ( FLA_Side  side,
FLA_Trans  trans,
FLA_Obj  A,
FLA_Obj  t,
FLA_Obj  B 
)

◆ FLA_Bidiag_apply_V_external()

FLA_Error FLA_Bidiag_apply_V_external ( FLA_Side  side,
FLA_Trans  trans,
FLA_Obj  A,
FLA_Obj  t,
FLA_Obj  B 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 // int m_A, n_A;
19 int m_B, n_B;
20 int cs_A;
21 int cs_B;
22 int k_t;
23 int lwork;
25 char blas_side;
26 char blas_vect = 'P';
27 char blas_trans;
28 int i;
29
30 //if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
31 // FLA_Apply_Q_check( side, trans, storev, A, t, B );
32
33 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
34
35 datatype = FLA_Obj_datatype( A );
36
37 // m_A = FLA_Obj_length( A );
38 // n_A = FLA_Obj_width( A );
40
41 m_B = FLA_Obj_length( B );
42 n_B = FLA_Obj_width( B );
44
45 if ( blas_vect == 'Q' ) k_t = FLA_Obj_vector_dim( t );
46 else k_t = FLA_Obj_vector_dim( t ) + 1;
47
50
53
54
55 // Make a workspace query the first time through. This will provide us with
56 // and ideal workspace size based on an internal block size.
57 lwork = -1;
58 FLA_Obj_create( datatype, 1, 1, 0, 0, &work );
59
60 for ( i = 0; i < 2; ++i )
61 {
62 if ( i == 1 )
63 {
64 // Grab the queried ideal workspace size from the work array, free the
65 // work object, and then re-allocate the workspace with the ideal size.
66 if ( datatype == FLA_FLOAT || datatype == FLA_COMPLEX )
67 lwork = ( int ) *FLA_FLOAT_PTR( work );
68 else if ( datatype == FLA_DOUBLE || datatype == FLA_DOUBLE_COMPLEX )
69 lwork = ( int ) *FLA_DOUBLE_PTR( work );
70
72 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work );
73 }
74
75 switch( datatype ){
76
77 case FLA_FLOAT:
78 {
79 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
80 float *buff_t = ( float * ) FLA_FLOAT_PTR( t );
81 float *buff_B = ( float * ) FLA_FLOAT_PTR( B );
82 float *buff_work = ( float * ) FLA_FLOAT_PTR( work );
83
85 &blas_side,
87 &m_B,
88 &n_B,
89 &k_t,
90 buff_A, &cs_A,
91 buff_t,
92 buff_B, &cs_B,
94 &info );
95
96 break;
97 }
98
99 case FLA_DOUBLE:
100 {
101 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
102 double *buff_t = ( double * ) FLA_DOUBLE_PTR( t );
103 double *buff_B = ( double * ) FLA_DOUBLE_PTR( B );
104 double *buff_work = ( double * ) FLA_DOUBLE_PTR( work );
105
107 &blas_side,
108 &blas_trans,
109 &m_B,
110 &n_B,
111 &k_t,
112 buff_A, &cs_A,
113 buff_t,
114 buff_B, &cs_B,
116 &info );
117
118 break;
119 }
120
121 case FLA_COMPLEX:
122 {
127
129 &blas_side,
130 &blas_trans,
131 &m_B,
132 &n_B,
133 &k_t,
134 buff_A, &cs_A,
135 buff_t,
136 buff_B, &cs_B,
138 &info );
139
140 break;
141 }
142
144 {
149
151 &blas_side,
152 &blas_trans,
153 &m_B,
154 &n_B,
155 &k_t,
156 buff_A, &cs_A,
157 buff_t,
158 buff_B, &cs_B,
160 &info );
161
162 break;
163 }
164
165 }
166 }
167
168 FLA_Obj_free( &work );
169#else
171#endif
172
173 return info;
174}

References F77_cunmbr(), F77_dormbr(), F77_sormbr(), F77_zunmbr(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_is_real(), FLA_Obj_length(), FLA_Obj_vector_dim(), FLA_Obj_width(), FLA_Param_map_flame_to_netlib_side(), FLA_Param_map_flame_to_netlib_trans(), and i.

◆ FLA_Bidiag_blk_external()

FLA_Error FLA_Bidiag_blk_external ( FLA_Obj  A,
FLA_Obj  tu,
FLA_Obj  tv 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 int m_A, n_A, cs_A;
19 int min_m_n, max_m_n;
20 int lwork;
21 FLA_Obj d, e, work_obj;
22
25
26 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
27
28 datatype = FLA_Obj_datatype( A );
29
30 m_A = FLA_Obj_length( A );
31 n_A = FLA_Obj_width( A );
35
38
40 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work_obj );
41
42
43 switch( datatype ){
44
45 case FLA_FLOAT:
46 {
47 float* buff_A = ( float * ) FLA_FLOAT_PTR( A );
48 float* buff_d = ( float * ) FLA_FLOAT_PTR( d );
49 float* buff_e = ( float * ) FLA_FLOAT_PTR( e );
50 float* buff_tu = ( float * ) FLA_FLOAT_PTR( tu );
51 float* buff_tv = ( float * ) FLA_FLOAT_PTR( tv );
52 float* buff_work = ( float * ) FLA_FLOAT_PTR( work_obj );
53
55 &n_A,
56 buff_A, &cs_A,
57 buff_d,
58 buff_e,
59 buff_tu,
60 buff_tv,
62 &lwork,
63 &info );
64
65 break;
66 }
67
68 case FLA_DOUBLE:
69 {
70 double* buff_A = ( double * ) FLA_DOUBLE_PTR( A );
71 double* buff_d = ( double * ) FLA_DOUBLE_PTR( d );
72 double* buff_e = ( double * ) FLA_DOUBLE_PTR( e );
73 double* buff_tu = ( double * ) FLA_DOUBLE_PTR( tu );
74 double* buff_tv = ( double * ) FLA_DOUBLE_PTR( tv );
75 double* buff_work = ( double * ) FLA_DOUBLE_PTR( work_obj );
76
78 &n_A,
79 buff_A, &cs_A,
80 buff_d,
81 buff_e,
82 buff_tu,
83 buff_tv,
85 &lwork,
86 &info );
87
88 break;
89 }
90
91 case FLA_COMPLEX:
92 {
94 float* buff_d = ( float * ) FLA_FLOAT_PTR( d );
95 float* buff_e = ( float * ) FLA_FLOAT_PTR( e );
99
100 F77_cgebrd( &m_A,
101 &n_A,
102 buff_A, &cs_A,
103 buff_d,
104 buff_e,
105 buff_tu,
106 buff_tv,
107 buff_work,
108 &lwork,
109 &info );
110
111 break;
112 }
113
115 {
117 double* buff_d = ( double * ) FLA_DOUBLE_PTR( d );
118 double* buff_e = ( double * ) FLA_DOUBLE_PTR( e );
122
123 F77_zgebrd( &m_A,
124 &n_A,
125 buff_A, &cs_A,
126 buff_d,
127 buff_e,
128 buff_tu,
129 buff_tv,
130 buff_work,
131 &lwork,
132 &info );
133
134 break;
135 }
136
137 }
138
139 FLA_Obj_free( &d );
140 FLA_Obj_free( &e );
142#else
144#endif
145
146 return info;
147}
FLA_Error FLA_Bidiag_check(FLA_Obj A, FLA_Obj tu, FLA_Obj tv)
Definition FLA_Bidiag_check.c:13
int F77_cgebrd(int *m, int *n, scomplex *a, int *lda, float *d, float *e, scomplex *tauq, scomplex *taup, scomplex *work, int *lwork, int *info)
int F77_zgebrd(int *m, int *n, dcomplex *a, int *lda, double *d, double *e, dcomplex *tauq, dcomplex *taup, dcomplex *work, int *lwork, int *info)
int F77_sgebrd(int *m, int *n, float *a, int *lda, float *d, float *e, float *tauq, float *taup, float *work, int *lwork, int *info)
int F77_dgebrd(int *m, int *n, double *a, int *lda, double *d, double *e, double *tauq, double *taup, double *work, int *lwork, int *info)
FLA_Datatype FLA_Obj_datatype_proj_to_real(FLA_Obj A)
Definition FLA_Query.c:23
dim_t FLA_Obj_max_dim(FLA_Obj obj)
Definition FLA_Query.c:160

References F77_cgebrd(), F77_dgebrd(), F77_sgebrd(), F77_zgebrd(), FLA_Bidiag_check(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_datatype_proj_to_real(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_max_dim(), FLA_Obj_min_dim(), FLA_Obj_width(), FLA_Query_blocksize(), and i.

Referenced by FLA_Bidiag_blk_ext().

◆ FLA_Bidiag_check()

FLA_Error FLA_Bidiag_check ( FLA_Obj  A,
FLA_Obj  tu,
FLA_Obj  tv 
)

◆ FLA_Bidiag_form_U_check()

FLA_Error FLA_Bidiag_form_U_check ( FLA_Obj  A,
FLA_Obj  t 
)
14{
16
19
22
25
26 //e_val = FLA_Check_square( A );
27 //FLA_Check_error_code( e_val );
28
31
34
35 return FLA_SUCCESS;
36}
FLA_Error FLA_Check_vector_dim_min(FLA_Obj x, dim_t min_dim)
Definition FLA_Check.c:740

References FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_if_vector(), FLA_Check_nonconstant_object(), FLA_Check_vector_dim_min(), and FLA_Obj_length().

Referenced by FLA_Bidiag_form_U_external().

◆ FLA_Bidiag_form_U_external()

FLA_Error FLA_Bidiag_form_U_external ( FLA_Obj  A,
FLA_Obj  t 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 int m_A, n_A, k_A;
19 int cs_A;
20 int min_m_n;
21 int lwork;
23 char blas_vect = 'Q';
24 int i;
25
28
29 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
30
31 datatype = FLA_Obj_datatype( A );
32
33 m_A = FLA_Obj_length( A );
34 n_A = FLA_Obj_width( A );
36
38
39 if ( blas_vect == 'Q' ) k_A = FLA_Obj_vector_dim( t );
40 else k_A = FLA_Obj_vector_dim( t ) + 1;
41
42 // Make a workspace query the first time through. This will provide us with
43 // and ideal workspace size based on an internal block size.
44 lwork = -1;
45 FLA_Obj_create( datatype, 1, 1, 0, 0, &work );
46
47 for ( i = 0; i < 2; ++i )
48 {
49 if ( i == 1 )
50 {
51 // Grab the queried ideal workspace size from the work array, free the
52 // work object, and then re-allocate the workspace with the ideal size.
53 if ( datatype == FLA_FLOAT || datatype == FLA_COMPLEX )
54 lwork = ( int ) *FLA_FLOAT_PTR( work );
55 else if ( datatype == FLA_DOUBLE || datatype == FLA_DOUBLE_COMPLEX )
56 lwork = ( int ) *FLA_DOUBLE_PTR( work );
57
59 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work );
60 }
61
62 switch( datatype ){
63
64 case FLA_FLOAT:
65 {
66 float* buff_A = ( float * ) FLA_FLOAT_PTR( A );
67 float* buff_t = ( float * ) FLA_FLOAT_PTR( t );
68 float* buff_work = ( float * ) FLA_FLOAT_PTR( work );
69
71 &m_A,
72 &n_A,
73 &k_A,
74 buff_A, &cs_A,
75 buff_t,
77 &info );
78
79 break;
80 }
81
82 case FLA_DOUBLE:
83 {
84 double* buff_A = ( double * ) FLA_DOUBLE_PTR( A );
85 double* buff_t = ( double * ) FLA_DOUBLE_PTR( t );
86 double* buff_work = ( double * ) FLA_DOUBLE_PTR( work );
87
89 &m_A,
90 &n_A,
91 &k_A,
92 buff_A, &cs_A,
93 buff_t,
95 &info );
96
97 break;
98 }
99
100 case FLA_COMPLEX:
101 {
105
107 &m_A,
108 &n_A,
109 &k_A,
110 buff_A, &cs_A,
111 buff_t,
113 &info );
114
115 break;
116 }
117
119 {
123
125 &m_A,
126 &n_A,
127 &k_A,
128 buff_A, &cs_A,
129 buff_t,
131 &info );
132
133 break;
134 }
135
136 }
137
138 }
139
140 FLA_Obj_free( &work );
141#else
143#endif
144
145 return info;
146}
FLA_Error FLA_Bidiag_form_U_check(FLA_Obj A, FLA_Obj t)
Definition FLA_Bidiag_form_U_check.c:13
int F77_cungbr(char *vect, int *m, int *n, int *k, scomplex *a, int *lda, scomplex *tau, scomplex *work, int *lwork, int *info)
int F77_dorgbr(char *vect, int *m, int *n, int *k, double *a, int *lda, double *tau, double *work, int *lwork, int *info)
int F77_zungbr(char *vect, int *m, int *n, int *k, dcomplex *a, int *lda, dcomplex *tau, dcomplex *work, int *lwork, int *info)
int F77_sorgbr(char *vect, int *m, int *n, int *k, float *a, int *lda, float *tau, float *work, int *lwork, int *info)

References F77_cungbr(), F77_dorgbr(), F77_sorgbr(), F77_zungbr(), FLA_Bidiag_form_U_check(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_min_dim(), FLA_Obj_vector_dim(), FLA_Obj_width(), and i.

◆ FLA_Bidiag_form_V_check()

FLA_Error FLA_Bidiag_form_V_check ( FLA_Obj  A,
FLA_Obj  t 
)

◆ FLA_Bidiag_form_V_external()

FLA_Error FLA_Bidiag_form_V_external ( FLA_Obj  A,
FLA_Obj  t 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 int m_A, n_A, k_A;
19 int cs_A;
20 int min_m_n;
21 int lwork;
23 char blas_vect = 'P';
24 int i;
25
28
29 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
30
31 datatype = FLA_Obj_datatype( A );
32
33 m_A = FLA_Obj_length( A );
34 n_A = FLA_Obj_width( A );
36
38
39 if ( blas_vect == 'Q' ) k_A = FLA_Obj_vector_dim( t );
40 else k_A = FLA_Obj_vector_dim( t ) + 1;
41
42 // Make a workspace query the first time through. This will provide us with
43 // and ideal workspace size based on an internal block size.
44 lwork = -1;
45 FLA_Obj_create( datatype, 1, 1, 0, 0, &work );
46
47 for ( i = 0; i < 2; ++i )
48 {
49 if ( i == 1 )
50 {
51 // Grab the queried ideal workspace size from the work array, free the
52 // work object, and then re-allocate the workspace with the ideal size.
53 if ( datatype == FLA_FLOAT || datatype == FLA_COMPLEX )
54 lwork = ( int ) *FLA_FLOAT_PTR( work );
55 else if ( datatype == FLA_DOUBLE || datatype == FLA_DOUBLE_COMPLEX )
56 lwork = ( int ) *FLA_DOUBLE_PTR( work );
57
59 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work );
60 }
61
62 switch( datatype ){
63
64 case FLA_FLOAT:
65 {
66 float* buff_A = ( float * ) FLA_FLOAT_PTR( A );
67 float* buff_t = ( float * ) FLA_FLOAT_PTR( t );
68 float* buff_work = ( float * ) FLA_FLOAT_PTR( work );
69
71 &m_A,
72 &n_A,
73 &k_A,
74 buff_A, &cs_A,
75 buff_t,
77 &info );
78
79 break;
80 }
81
82 case FLA_DOUBLE:
83 {
84 double* buff_A = ( double * ) FLA_DOUBLE_PTR( A );
85 double* buff_t = ( double * ) FLA_DOUBLE_PTR( t );
86 double* buff_work = ( double * ) FLA_DOUBLE_PTR( work );
87
89 &m_A,
90 &n_A,
91 &k_A,
92 buff_A, &cs_A,
93 buff_t,
95 &info );
96
97 break;
98 }
99
100 case FLA_COMPLEX:
101 {
105
107 &m_A,
108 &n_A,
109 &k_A,
110 buff_A, &cs_A,
111 buff_t,
113 &info );
114
115 break;
116 }
117
119 {
123
125 &m_A,
126 &n_A,
127 &k_A,
128 buff_A, &cs_A,
129 buff_t,
131 &info );
132
133 break;
134 }
135
136 }
137
138 }
139
140 FLA_Obj_free( &work );
141#else
143#endif
144
145 return info;
146}
FLA_Error FLA_Bidiag_form_V_check(FLA_Obj A, FLA_Obj t)
Definition FLA_Bidiag_form_V_check.c:13

References F77_cungbr(), F77_dorgbr(), F77_sorgbr(), F77_zungbr(), FLA_Bidiag_form_V_check(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_min_dim(), FLA_Obj_vector_dim(), FLA_Obj_width(), and i.

◆ FLA_Bidiag_unb_external()

FLA_Error FLA_Bidiag_unb_external ( FLA_Obj  A,
FLA_Obj  tu,
FLA_Obj  tv 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 int m_A, n_A, cs_A;
19 int min_m_n, max_m_n;
20 int lwork;
21 FLA_Obj d, e, work_obj;
22
25
26 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
27
28 datatype = FLA_Obj_datatype( A );
29
30 m_A = FLA_Obj_length( A );
31 n_A = FLA_Obj_width( A );
35
38
39 lwork = max_m_n;
40 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work_obj );
41
42
43 switch( datatype ){
44
45 case FLA_FLOAT:
46 {
47 float* buff_A = ( float * ) FLA_FLOAT_PTR( A );
48 float* buff_d = ( float * ) FLA_FLOAT_PTR( d );
49 float* buff_e = ( float * ) FLA_FLOAT_PTR( e );
50 float* buff_tu = ( float * ) FLA_FLOAT_PTR( tu );
51 float* buff_tv = ( float * ) FLA_FLOAT_PTR( tv );
52 float* buff_work = ( float * ) FLA_FLOAT_PTR( work_obj );
53
55 &n_A,
56 buff_A, &cs_A,
57 buff_d,
58 buff_e,
59 buff_tu,
60 buff_tv,
62 &info );
63
64 break;
65 }
66
67 case FLA_DOUBLE:
68 {
69 double* buff_A = ( double * ) FLA_DOUBLE_PTR( A );
70 double* buff_d = ( double * ) FLA_DOUBLE_PTR( d );
71 double* buff_e = ( double * ) FLA_DOUBLE_PTR( e );
72 double* buff_tu = ( double * ) FLA_DOUBLE_PTR( tu );
73 double* buff_tv = ( double * ) FLA_DOUBLE_PTR( tv );
74 double* buff_work = ( double * ) FLA_DOUBLE_PTR( work_obj );
75
77 &n_A,
78 buff_A, &cs_A,
79 buff_d,
80 buff_e,
81 buff_tu,
82 buff_tv,
84 &info );
85
86 break;
87 }
88
89 case FLA_COMPLEX:
90 {
92 float* buff_d = ( float * ) FLA_FLOAT_PTR( d );
93 float* buff_e = ( float * ) FLA_FLOAT_PTR( e );
97
99 &n_A,
100 buff_A, &cs_A,
101 buff_d,
102 buff_e,
103 buff_tu,
104 buff_tv,
105 buff_work,
106 &info );
107
108 break;
109 }
110
112 {
114 double* buff_d = ( double * ) FLA_DOUBLE_PTR( d );
115 double* buff_e = ( double * ) FLA_DOUBLE_PTR( e );
119
120 F77_zgebd2( &m_A,
121 &n_A,
122 buff_A, &cs_A,
123 buff_d,
124 buff_e,
125 buff_tu,
126 buff_tv,
127 buff_work,
128 &info );
129
130 break;
131 }
132
133 }
134
135 FLA_Obj_free( &d );
136 FLA_Obj_free( &e );
138#else
140#endif
141
142 return info;
143}
int F77_dgebd2(int *m, int *n, double *a, int *lda, double *d, double *e, double *tauq, double *taup, double *work, int *info)
int F77_cgebd2(int *m, int *n, scomplex *a, int *lda, float *d, float *e, scomplex *tauq, scomplex *taup, scomplex *work, int *info)
int F77_sgebd2(int *m, int *n, float *a, int *lda, float *d, float *e, float *tauq, float *taup, float *work, int *info)
int F77_zgebd2(int *m, int *n, dcomplex *a, int *lda, double *d, double *e, dcomplex *tauq, dcomplex *taup, dcomplex *work, int *info)

References F77_cgebd2(), F77_dgebd2(), F77_sgebd2(), F77_zgebd2(), FLA_Bidiag_check(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_datatype_proj_to_real(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_max_dim(), FLA_Obj_min_dim(), FLA_Obj_width(), and i.

Referenced by FLA_Bidiag_unb_ext().

◆ FLA_Bidiag_UT_check()

FLA_Error FLA_Bidiag_UT_check ( FLA_Obj  A,
FLA_Obj  TU,
FLA_Obj  TV 
)

◆ FLA_Bidiag_UT_extract_diagonals_check()

FLA_Error FLA_Bidiag_UT_extract_diagonals_check ( FLA_Obj  A,
FLA_Obj  d,
FLA_Obj  e 
)

◆ FLA_Bidiag_UT_extract_real_diagonals_check()

FLA_Error FLA_Bidiag_UT_extract_real_diagonals_check ( FLA_Obj  A,
FLA_Obj  d,
FLA_Obj  e 
)
14{
17
20
23
25
28
31
34
37
40
41 if ( min_m_n != 1 )
42 {
45
48
51
54
57 }
58
59 return FLA_SUCCESS;
60}
FLA_Error FLA_Check_real_object(FLA_Obj A)
Definition FLA_Check.c:258
FLA_Error FLA_Check_identical_object_precision(FLA_Obj A, FLA_Obj B)
Definition FLA_Check.c:298

References FLA_Check_floating_object(), FLA_Check_identical_object_precision(), FLA_Check_if_vector(), FLA_Check_nonconstant_object(), FLA_Check_real_object(), FLA_Check_vector_dim(), and FLA_Obj_min_dim().

Referenced by FLA_Bidiag_UT_extract_real_diagonals().

◆ FLA_Bidiag_UT_form_U_check()

FLA_Error FLA_Bidiag_UT_form_U_check ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  U 
)
14{
16 dim_t m_A, n_A;
17
20
23
26
29
30 // U is not necessary to be square.
31 // e_val = FLA_Check_square( U );
32 // FLA_Check_error_code( e_val );
33
34 m_A = FLA_Obj_length( A );
35 n_A = FLA_Obj_width( A );
36
37 // Form U has no problem in overwriting on A which contains house holder vectors
38 // on the lower triangular of the diagonal or subdiagonal.
39 if ( m_A >= n_A )
40 {
43
46 }
47 else
48 {
51
54 }
55
56 return FLA_SUCCESS;
57}

References FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_nonconstant_object(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Obj_length(), and FLA_Obj_width().

Referenced by FLA_Bidiag_UT_form_U().

◆ FLA_Bidiag_UT_form_V_check()

FLA_Error FLA_Bidiag_UT_form_V_check ( FLA_Obj  A,
FLA_Obj  S,
FLA_Obj  V 
)
14{
16 dim_t m_A, n_A;
17
20
23
26
29
30 // U is not necessary to be square.
31 // e_val = FLA_Check_square( V );
32 // FLA_Check_error_code( e_val );
33
34
35 m_A = FLA_Obj_length( A );
36 n_A = FLA_Obj_width( A );
37
38 // Form V (not V^H) has a problem that dimensions are mismatched
39 // when it overwrites on A that contains house holder vectors on
40 // the uppper triangular of the diagonal or subdiagonal.
41 if ( m_A >= n_A )
42 {
45
48 }
49 else
50 {
53
56 }
57
58 return FLA_SUCCESS;
59}

References FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_nonconstant_object(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Obj_length(), and FLA_Obj_width().

Referenced by FLA_Bidiag_UT_form_V().

◆ FLA_Bidiag_UT_internal_check()

FLA_Error FLA_Bidiag_UT_internal_check ( FLA_Obj  A,
FLA_Obj  TU,
FLA_Obj  TV,
fla_bidiagut_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 // Verify that the object element types are identical.
24
27
28 return FLA_SUCCESS;
29}

References FLA_Check_identical_object_elemtype(), and FLA_Check_null_pointer().

Referenced by FLA_Bidiag_UT_internal().

◆ FLA_Bidiag_UT_realify_check()

FLA_Error FLA_Bidiag_UT_realify_check ( FLA_Obj  A,
FLA_Obj  d,
FLA_Obj  e 
)

◆ FLA_Bidiag_UT_realify_diagonals_check()

FLA_Error FLA_Bidiag_UT_realify_diagonals_check ( FLA_Uplo  uplo,
FLA_Obj  a,
FLA_Obj  b,
FLA_Obj  d,
FLA_Obj  e 
)

◆ FLA_Bidiag_UT_recover_tau_check()

FLA_Error FLA_Bidiag_UT_recover_tau_check ( FLA_Obj  TU,
FLA_Obj  TV,
FLA_Obj  tu,
FLA_Obj  tv 
)

◆ FLA_Bidiag_UT_scale_diagonals_check()

FLA_Error FLA_Bidiag_UT_scale_diagonals_check ( FLA_Obj  alpha,
FLA_Obj  A 
)

◆ FLA_Bsvd_check()

FLA_Error FLA_Bsvd_check ( FLA_Uplo  uplo,
FLA_Obj  d,
FLA_Obj  e,
FLA_Obj  G,
FLA_Obj  H,
FLA_Svd_type  jobu,
FLA_Obj  U,
FLA_Svd_type  jobv,
FLA_Obj  V 
)
17{
19 dim_t m_d, m_e;
20
23
26
29
31 m_e = ( m_d - 1 );
32
33 if ( m_e > 0 )
34 {
37
40
43
46 }
47
48 if ( m_e > 0 )
49 {
52
55
58 }
59
60 if ( m_e > 0 )
61 {
64
67
70 }
71
74
77
79 {
82 }
83
85 {
88 }
89
90 return FLA_SUCCESS;
91}
FLA_Error FLA_Check_valid_svd_type(FLA_Svd_type svd_type)
Definition FLA_Check.c:1254
FLA_Error FLA_Check_complex_object(FLA_Obj A)
Definition FLA_Check.c:285

References FLA_Check_complex_object(), FLA_Check_identical_object_datatype(), FLA_Check_identical_object_precision(), FLA_Check_nonconstant_object(), FLA_Check_object_length_equals(), FLA_Check_real_object(), FLA_Check_valid_svd_type(), FLA_Check_valid_uplo(), FLA_Check_vector_dim(), FLA_Obj_has_zero_dim(), and FLA_Obj_vector_dim().

Referenced by FLA_Bsvd(), and FLA_Bsvd_ext_check().

◆ FLA_Bsvd_compute_scaling_check()

FLA_Error FLA_Bsvd_compute_scaling_check ( FLA_Obj  d,
FLA_Obj  e,
FLA_Obj  sigma 
)

◆ FLA_Bsvd_ext_check()

FLA_Error FLA_Bsvd_ext_check ( FLA_Uplo  uplo,
FLA_Obj  d,
FLA_Obj  e,
FLA_Obj  G,
FLA_Obj  H,
FLA_Svd_type  jobu,
FLA_Obj  U,
FLA_Svd_type  jobv,
FLA_Obj  V,
FLA_Bool  apply_Uh2C,
FLA_Obj  C 
)
18{
20
21 FLA_Bsvd_check( uplo, d, e, G, H, jobu, U, jobv, V );
22
23 if ( apply_Uh2C != FALSE )
24 {
27
30 }
31
32 return FLA_SUCCESS;
33}
FLA_Error FLA_Bsvd_check(FLA_Uplo uplo, FLA_Obj d, FLA_Obj e, FLA_Obj G, FLA_Obj H, FLA_Svd_type jobu, FLA_Obj U, FLA_Svd_type jobv, FLA_Obj V)
Definition FLA_Bsvd_check.c:13

References FLA_Bsvd_check(), FLA_Check_identical_object_datatype(), FLA_Check_object_length_equals(), and FLA_Obj_length().

Referenced by FLA_Bsvd_ext().

◆ FLA_Bsvd_external()

FLA_Error FLA_Bsvd_external ( FLA_Uplo  uplo,
FLA_Obj  d,
FLA_Obj  e,
FLA_Obj  U,
FLA_Obj  V 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
19 int m_U, cs_U;
20 int n_V, cs_V;
21 int n_C, cs_C;
22 int min_m_n;
23 int inc_d, inc_e;
24 int lrwork;
26 char blas_uplo;
27
28 //if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
29 // FLA_Hevd_check( jobz, uplo, A, e );
30
31 if ( FLA_Obj_has_zero_dim( d ) ) return FLA_SUCCESS;
32
33 datatype = FLA_Obj_datatype( U );
35
36 m_U = FLA_Obj_length( U );
38
39 n_V = FLA_Obj_length( V );
41
42 n_C = 0;
43 cs_C = 1;
44
46
49
50 lrwork = max( 1, 4 * min_m_n - 4 );
51 FLA_Obj_create( dt_real, lrwork, 1, 0, 0, &rwork );
52
54
55 switch( datatype ) {
56
57 case FLA_FLOAT:
58 {
59 float* buff_d = ( float * ) FLA_FLOAT_PTR( d );
60 float* buff_e = ( float * ) FLA_FLOAT_PTR( e );
61 float* buff_U = ( float * ) FLA_FLOAT_PTR( U );
62 float* buff_V = ( float * ) FLA_FLOAT_PTR( V );
63 float* buff_C = ( float * ) NULL;
64 float* buff_rwork = ( float * ) FLA_FLOAT_PTR( rwork );
65
67 &min_m_n,
68 &n_V,
69 &m_U,
70 &n_C,
71 buff_d,
72 buff_e,
73 buff_V, &cs_V,
74 buff_U, &cs_U,
75 buff_C, &cs_C,
77 &info );
78
79 break;
80 }
81
82 case FLA_DOUBLE:
83 {
84 double* buff_d = ( double * ) FLA_DOUBLE_PTR( d );
85 double* buff_e = ( double * ) FLA_DOUBLE_PTR( e );
86 double* buff_U = ( double * ) FLA_DOUBLE_PTR( U );
87 double* buff_V = ( double * ) FLA_DOUBLE_PTR( V );
88 double* buff_C = ( double * ) NULL;
89 double* buff_rwork = ( double * ) FLA_DOUBLE_PTR( rwork );
90
92 &min_m_n,
93 &n_V,
94 &m_U,
95 &n_C,
96 buff_d,
97 buff_e,
98 buff_V, &cs_V,
99 buff_U, &cs_U,
100 buff_C, &cs_C,
102 &info );
103
104 break;
105 }
106
107 case FLA_COMPLEX:
108 {
109 float* buff_d = ( float * ) FLA_FLOAT_PTR( d );
110 float* buff_e = ( float * ) FLA_FLOAT_PTR( e );
113 scomplex* buff_C = ( scomplex * ) NULL;
114 float* buff_rwork = ( float * ) FLA_FLOAT_PTR( rwork );
115
117 &min_m_n,
118 &n_V,
119 &m_U,
120 &n_C,
121 buff_d,
122 buff_e,
123 buff_V, &cs_V,
124 buff_U, &cs_U,
125 buff_C, &cs_C,
127 &info );
128
129 break;
130 }
131
133 {
134 double* buff_d = ( double * ) FLA_DOUBLE_PTR( d );
135 double* buff_e = ( double * ) FLA_DOUBLE_PTR( e );
138 dcomplex* buff_C = ( dcomplex * ) NULL;
139 double* buff_rwork = ( double * ) FLA_DOUBLE_PTR( rwork );
140
142 &min_m_n,
143 &n_V,
144 &m_U,
145 &n_C,
146 buff_d,
147 buff_e,
148 buff_V, &cs_V,
149 buff_U, &cs_U,
150 buff_C, &cs_C,
152 &info );
153
154 break;
155 }
156
157 }
158
160
161#else
163#endif
164
165 return info;
166}
int F77_cbdsqr(char *uplo, int *n, int *ncvt, int *nru, int *ncc, float *d, float *e, scomplex *vt, int *ldvt, scomplex *u, int *ldu, scomplex *c, int *ldc, float *rwork, int *info)
int F77_zbdsqr(char *uplo, int *n, int *ncvt, int *nru, int *ncc, double *d, double *e, dcomplex *vt, int *ldvt, dcomplex *u, int *ldu, dcomplex *c, int *ldc, double *rwork, int *info)
int F77_sbdsqr(char *uplo, int *n, int *ncvt, int *nru, int *ncc, float *d, float *e, float *vt, int *ldvt, float *u, int *ldu, float *c, int *ldc, float *rwork, int *info)
int F77_dbdsqr(char *uplo, int *n, int *ncvt, int *nru, int *ncc, double *d, double *e, double *vt, int *ldvt, double *u, int *ldu, double *c, int *ldc, double *rwork, int *info)
void FLA_Param_map_flame_to_netlib_uplo(FLA_Uplo uplo, void *blas_uplo)
Definition FLA_Param.c:47

References F77_cbdsqr(), F77_dbdsqr(), F77_sbdsqr(), F77_zbdsqr(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_datatype_proj_to_real(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_vector_dim(), FLA_Obj_vector_inc(), FLA_Param_map_flame_to_netlib_uplo(), and i.

◆ FLA_Bsvdd_external()

FLA_Error FLA_Bsvdd_external ( FLA_Uplo  uplo,
FLA_Obj  d,
FLA_Obj  e,
FLA_Obj  U,
FLA_Obj  V 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
19 int m_U, cs_U;
20 int n_V, cs_V;
21 int n_C, cs_C;
22 int min_m_n;
23 int inc_d, inc_e;
24 int lwork, liwork;
26 char blas_uplo;
27 char blas_compq = 'I';
28
29 //if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
30 // FLA_Bsvd_check( uplo, d, e, U, V );
31
32 if ( FLA_Obj_has_zero_dim( d ) ) return FLA_SUCCESS;
33
34 datatype = FLA_Obj_datatype( U );
36
37 m_U = FLA_Obj_length( U );
39
40 n_V = FLA_Obj_length( V );
42
43 n_C = 0;
44 cs_C = 1;
45
47
50
51 lwork = max( 1, 3*min_m_n*min_m_n + 4*min_m_n );
52 liwork = 8*min_m_n;
53
54 FLA_Obj_create( dt_real, lwork, 1, 0, 0, &work );
55 FLA_Obj_create( FLA_INT, liwork, 1, 0, 0, &iwork );
56
58
59 switch( datatype ) {
60
61 case FLA_FLOAT:
62 {
63 float* buff_d = ( float * ) FLA_FLOAT_PTR( d );
64 float* buff_e = ( float * ) FLA_FLOAT_PTR( e );
65 float* buff_U = ( float * ) FLA_FLOAT_PTR( U );
66 float* buff_V = ( float * ) FLA_FLOAT_PTR( V );
67 float* buff_Q = ( float * ) NULL;
68 float* buff_IQ = ( float * ) NULL;
69 float* buff_work = ( float * ) FLA_FLOAT_PTR( work );
70 int* buff_iwork = ( int * ) FLA_INT_PTR( iwork );
71
74 &min_m_n,
75 buff_d,
76 buff_e,
77 buff_U, &cs_U,
78 buff_V, &cs_V,
79 buff_Q,
80 buff_IQ,
83 &info );
84
85 break;
86 }
87
88 case FLA_DOUBLE:
89 {
90 double* buff_d = ( double * ) FLA_DOUBLE_PTR( d );
91 double* buff_e = ( double * ) FLA_DOUBLE_PTR( e );
92 double* buff_U = ( double * ) FLA_DOUBLE_PTR( U );
93 double* buff_V = ( double * ) FLA_DOUBLE_PTR( V );
94 double* buff_Q = ( double * ) NULL;
95 double* buff_IQ = ( double * ) NULL;
96 double* buff_work = ( double * ) FLA_DOUBLE_PTR( work );
97 int* buff_iwork = ( int * ) FLA_INT_PTR( iwork );
98
100 &blas_compq,
101 &min_m_n,
102 buff_d,
103 buff_e,
104 buff_U, &cs_U,
105 buff_V, &cs_V,
106 buff_Q,
107 buff_IQ,
108 buff_work,
110 &info );
111
112 break;
113 }
114
115 }
116
117 FLA_Obj_free( &work );
119
120#else
122#endif
123
124 return info;
125}
int F77_sbdsdc(char *uplo, char *compq, int *n, float *d, float *e, float *u, int *ldu, float *vt, int *ldvt, float *q, float *iq, float *work, int *iwork, int *info)
int F77_dbdsdc(char *uplo, char *compq, int *n, double *d, double *e, double *u, int *ldu, double *vt, int *ldvt, double *q, double *iq, double *work, int *iwork, int *info)

References F77_dbdsdc(), F77_sbdsdc(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_datatype_proj_to_real(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_vector_dim(), FLA_Obj_vector_inc(), FLA_Param_map_flame_to_netlib_uplo(), and i.

◆ FLA_CAQR2_UT_check()

FLA_Error FLA_CAQR2_UT_check ( FLA_Obj  B,
FLA_Obj  D,
FLA_Obj  T 
)

◆ FLA_CAQR2_UT_internal_check()

FLA_Error FLA_CAQR2_UT_internal_check ( FLA_Obj  B,
FLA_Obj  D,
FLA_Obj  T,
fla_caqr2ut_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 // Verify that the object element types are identical.
24
27
28 // Verify conformality between all the objects. This check works regardless
29 // of whether the element type is FLA_MATRIX or FLA_SCALAR because the
30 // element length and width are used instead of scalar length and width.
33
36
37 return FLA_SUCCESS;
38}

References FLA_Check_identical_object_elemtype(), FLA_Check_null_pointer(), FLA_Check_object_width_equals(), and FLA_Obj_width().

Referenced by FLA_CAQR2_UT_internal().

◆ FLA_CAQR2_UT_task()

FLA_Error FLA_CAQR2_UT_task ( FLA_Obj  B,
FLA_Obj  D,
FLA_Obj  T,
fla_caqr2ut_t cntl 
)
16{
17 return FLA_CAQR2_UT_internal( B, D, T,
19}
FLA_Error FLA_CAQR2_UT_internal(FLA_Obj U, FLA_Obj D, FLA_Obj T, fla_caqr2ut_t *cntl)
Definition FLA_CAQR2_UT_internal.c:16
fla_caqr2ut_t * fla_caqr2ut_cntl_leaf
Definition FLA_CAQR2_UT_cntl_init.c:20

References FLA_CAQR2_UT_internal(), fla_caqr2ut_cntl_leaf, and i.

Referenced by FLASH_Queue_exec_task().

◆ FLA_CAQR_UT_inc_check()

FLA_Error FLA_CAQR_UT_inc_check ( dim_t  p,
FLA_Obj  A,
FLA_Obj  ATW,
FLA_Obj  R,
FLA_Obj  RTW 
)

◆ FLA_CAQR_UT_inc_solve_check()

FLA_Error FLA_CAQR_UT_inc_solve_check ( dim_t  p,
FLA_Obj  A,
FLA_Obj  ATW,
FLA_Obj  R,
FLA_Obj  RTW,
FLA_Obj  B,
FLA_Obj  X 
)

◆ FLA_Chol()

FLA_Error FLA_Chol ( FLA_Uplo  uplo,
FLA_Obj  A 
)
17{
19
20 // Check parameters.
22 FLA_Chol_check( uplo, A );
23
24 // Invoke FLA_Chol_internal() with the appropriate control tree.
26 //r_val = FLA_Chol_internal( uplo, A, fla_chol_cntl );
27
28 return r_val;
29}
fla_chol_t * fla_chol_cntl2
Definition FLA_Chol_cntl_init.c:17
FLA_Error FLA_Chol_internal(FLA_Uplo uplo, FLA_Obj A, fla_chol_t *cntl)
Definition FLA_Chol_internal.c:16
FLA_Error FLA_Chol_check(FLA_Uplo uplo, FLA_Obj A)
Definition FLA_Chol_check.c:13

References FLA_Check_error_level(), FLA_Chol_check(), fla_chol_cntl2, FLA_Chol_internal(), and i.

◆ FLA_Chol_blk_external()

FLA_Error FLA_Chol_blk_external ( FLA_Uplo  uplo,
FLA_Obj  A 
)
14{
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 int info;
18 FLA_Datatype datatype;
19 int m_A, cs_A;
20 char blas_uplo;
21
23 FLA_Chol_check( uplo, A );
24
25 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
26
27 datatype = FLA_Obj_datatype( A );
28
29 m_A = FLA_Obj_length( A );
31
33
34
35 switch( datatype ){
36
37 case FLA_FLOAT:
38 {
39 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
40
42 &m_A,
43 buff_A, &cs_A,
44 &info );
45
46 break;
47 }
48
49 case FLA_DOUBLE:
50 {
51 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
52
54 &m_A,
55 buff_A, &cs_A,
56 &info );
57
58 break;
59 }
60
61 case FLA_COMPLEX:
62 {
64
66 &m_A,
67 buff_A, &cs_A,
68 &info );
69
70 break;
71 }
72
74 {
76
78 &m_A,
79 buff_A, &cs_A,
80 &info );
81
82 break;
83 }
84
85 }
86
87 // Convert to zero-based indexing, if an index was reported.
88 if ( info > 0 ) r_val = info - 1;
89 else r_val = FLA_SUCCESS;
90
91#else
93#endif
94
95 return r_val;
96}
int F77_dpotrf(char *uplo, int *n, double *a, int *lda, int *info)
int F77_cpotrf(char *uplo, int *n, scomplex *a, int *lda, int *info)
int F77_spotrf(char *uplo, int *n, float *a, int *lda, int *info)
int F77_zpotrf(char *uplo, int *n, dcomplex *a, int *lda, int *info)

References F77_cpotrf(), F77_dpotrf(), F77_spotrf(), F77_zpotrf(), FLA_Check_error_level(), FLA_Chol_check(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Param_map_flame_to_netlib_uplo(), and i.

Referenced by FLA_Chol_l_blk_ext(), FLA_Chol_u_blk_ext(), and FLA_SPDinv_blk_external().

◆ FLA_Chol_check()

FLA_Error FLA_Chol_check ( FLA_Uplo  uplo,
FLA_Obj  A 
)

◆ FLA_Chol_internal_check()

FLA_Error FLA_Chol_internal_check ( FLA_Uplo  uplo,
FLA_Obj  A,
fla_chol_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 return FLA_SUCCESS;
22}

References FLA_Check_null_pointer().

Referenced by FLA_Chol_internal().

◆ FLA_Chol_l_blk_ext()

FLA_Error FLA_Chol_l_blk_ext ( FLA_Obj  A)
99{
101}
FLA_Error FLA_Chol_blk_external(FLA_Uplo uplo, FLA_Obj A)
Definition FLA_Chol_blk_external.c:13

References FLA_Chol_blk_external(), and i.

Referenced by FLA_Chol_l().

◆ FLA_Chol_l_task()

FLA_Error FLA_Chol_l_task ( FLA_Obj  A,
fla_chol_t cntl 
)
22{
23 //return FLA_Chol_unb_external( FLA_LOWER_TRIANGULAR, A );
26}
fla_chol_t * fla_chol_cntl_leaf
Definition FLA_Chol_cntl_init.c:20

References fla_chol_cntl_leaf, FLA_Chol_internal(), and i.

◆ FLA_Chol_l_unb_ext()

FLA_Error FLA_Chol_l_unb_ext ( FLA_Obj  A)
99{
101}
FLA_Error FLA_Chol_unb_external(FLA_Uplo uplo, FLA_Obj A)
Definition FLA_Chol_unb_external.c:13

References FLA_Chol_unb_external(), and i.

Referenced by FLA_Chol_l().

◆ FLA_Chol_solve_check()

FLA_Error FLA_Chol_solve_check ( FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  X 
)

◆ FLA_Chol_task()

FLA_Error FLA_Chol_task ( FLA_Uplo  uplo,
FLA_Obj  A,
fla_chol_t cntl 
)
16{
17 return FLA_Chol_internal( uplo, A,
19}

References fla_chol_cntl_leaf, FLA_Chol_internal(), and i.

Referenced by FLASH_Queue_exec_task().

◆ FLA_Chol_u_blk_ext()

FLA_Error FLA_Chol_u_blk_ext ( FLA_Obj  A)
104{
106}

References FLA_Chol_blk_external(), and i.

Referenced by FLA_Chol_u().

◆ FLA_Chol_u_task()

FLA_Error FLA_Chol_u_task ( FLA_Obj  A,
fla_chol_t cntl 
)
29{
30 //return FLA_Chol_unb_external( FLA_UPPER_TRIANGULAR, A );
33}

References fla_chol_cntl_leaf, FLA_Chol_internal(), and i.

◆ FLA_Chol_u_unb_ext()

FLA_Error FLA_Chol_u_unb_ext ( FLA_Obj  A)
104{
106}

References FLA_Chol_unb_external(), and i.

Referenced by FLA_Chol_u().

◆ FLA_Chol_unb_external()

FLA_Error FLA_Chol_unb_external ( FLA_Uplo  uplo,
FLA_Obj  A 
)
14{
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 int info;
18 FLA_Datatype datatype;
19 int m_A, cs_A;
20 char blas_uplo;
21
23 FLA_Chol_check( uplo, A );
24
25 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
26
27 datatype = FLA_Obj_datatype( A );
28
29 m_A = FLA_Obj_length( A );
31
33
34
35 switch( datatype ){
36
37 case FLA_FLOAT:
38 {
39 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
40
42 &m_A,
43 buff_A, &cs_A,
44 &info );
45
46 break;
47 }
48
49 case FLA_DOUBLE:
50 {
51 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
52
54 &m_A,
55 buff_A, &cs_A,
56 &info );
57
58 break;
59 }
60
61 case FLA_COMPLEX:
62 {
64
66 &m_A,
67 buff_A, &cs_A,
68 &info );
69
70 break;
71 }
72
74 {
76
78 &m_A,
79 buff_A, &cs_A,
80 &info );
81
82 break;
83 }
84
85 }
86
87 // Convert to zero-based indexing, if an index was reported.
88 if ( info > 0 ) r_val = info - 1;
89 else r_val = FLA_SUCCESS;
90
91#else
93#endif
94
95 return r_val;
96}
int F77_dpotf2(char *uplo, int *n, double *a, int *lda, int *info)
int F77_zpotf2(char *uplo, int *n, dcomplex *a, int *lda, int *info)
int F77_cpotf2(char *uplo, int *n, scomplex *a, int *lda, int *info)
int F77_spotf2(char *uplo, int *n, float *a, int *lda, int *info)

References F77_cpotf2(), F77_dpotf2(), F77_spotf2(), F77_zpotf2(), FLA_Check_error_level(), FLA_Chol_check(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Param_map_flame_to_netlib_uplo(), and i.

Referenced by FLA_Chol_l_unb_ext(), and FLA_Chol_u_unb_ext().

◆ FLA_Eig_gest()

FLA_Error FLA_Eig_gest ( FLA_Inv  inv,
FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  B 
)
17{
18 FLA_Obj Y;
20
21 // Check parameters.
23 FLA_Eig_gest_check( inv, uplo, A, B );
24
26
27 // Invoke FLA_Eig_gest_internal() with the appropriate control tree.
28 if ( inv == FLA_INVERSE )
30 else
32
33 FLA_Obj_free( &Y );
34
35 return r_val;
36}
fla_eig_gest_t * fla_eig_gest_nx_cntl
Definition FLA_Eig_gest_cntl_init.c:21
fla_eig_gest_t * fla_eig_gest_ix_cntl
Definition FLA_Eig_gest_cntl_init.c:20
FLA_Error FLA_Eig_gest_internal(FLA_Inv inv, FLA_Uplo uplo, FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
Definition FLA_Eig_gest_internal.c:17
FLA_Error FLA_Eig_gest_check(FLA_Inv inv, FLA_Uplo uplo, FLA_Obj A, FLA_Obj B)
Definition FLA_Eig_gest_check.c:13
FLA_Error FLA_Obj_create_conf_to(FLA_Trans trans, FLA_Obj old, FLA_Obj *obj)
Definition FLA_Obj.c:286

References FLA_Check_error_level(), FLA_Eig_gest_check(), FLA_Eig_gest_internal(), fla_eig_gest_ix_cntl, fla_eig_gest_nx_cntl, FLA_Obj_create_conf_to(), FLA_Obj_free(), and i.

◆ FLA_Eig_gest_blk_external()

FLA_Error FLA_Eig_gest_blk_external ( FLA_Inv  inv,
FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  B 
)
14{
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 int itype;
18 int info;
19 FLA_Datatype datatype;
20 int m_A, cs_A;
21 int cs_B;
22 char blas_uplo;
23
25 FLA_Eig_gest_check( inv, uplo, A, B );
26
27// if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
28
29 if ( inv == FLA_INVERSE )
30 itype = 1;
31 else
32 itype = 2;
33
34 datatype = FLA_Obj_datatype( A );
35
36 m_A = FLA_Obj_length( A );
39
41
42
43 switch( datatype ){
44
45 case FLA_FLOAT:
46 {
47 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
48 float *buff_B = ( float * ) FLA_FLOAT_PTR( B );
49
51 &blas_uplo,
52 &m_A,
53 buff_A, &cs_A,
54 buff_B, &cs_B,
55 &info );
56
57 break;
58 }
59
60 case FLA_DOUBLE:
61 {
62 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
63 double *buff_B = ( double * ) FLA_DOUBLE_PTR( B );
64
66 &blas_uplo,
67 &m_A,
68 buff_A, &cs_A,
69 buff_B, &cs_B,
70 &info );
71
72 break;
73 }
74
75 case FLA_COMPLEX:
76 {
79
81 &blas_uplo,
82 &m_A,
83 buff_A, &cs_A,
84 buff_B, &cs_B,
85 &info );
86
87 break;
88 }
89
91 {
94
96 &blas_uplo,
97 &m_A,
98 buff_A, &cs_A,
99 buff_B, &cs_B,
100 &info );
101
102 break;
103 }
104
105 }
106
107#else
109#endif
110
111 return r_val;
112}
int F77_ssygst(int *itype, char *uplo, int *n, float *a, int *lda, float *b, int *ldb, int *info)
int F77_zhegst(int *itype, char *uplo, int *n, dcomplex *a, int *lda, dcomplex *b, int *ldb, int *info)
int F77_chegst(int *itype, char *uplo, int *n, scomplex *a, int *lda, scomplex *b, int *ldb, int *info)
int F77_dsygst(int *itype, char *uplo, int *n, double *a, int *lda, double *b, int *ldb, int *info)

References F77_chegst(), F77_dsygst(), F77_ssygst(), F77_zhegst(), FLA_Check_error_level(), FLA_Eig_gest_check(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Param_map_flame_to_netlib_uplo(), and i.

Referenced by FLA_Eig_gest_il_blk_ext(), FLA_Eig_gest_iu_blk_ext(), FLA_Eig_gest_nl_blk_ext(), and FLA_Eig_gest_nu_blk_ext().

◆ FLA_Eig_gest_check()

FLA_Error FLA_Eig_gest_check ( FLA_Inv  inv,
FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  B 
)

◆ FLA_Eig_gest_il_blk_ext()

FLA_Error FLA_Eig_gest_il_blk_ext ( FLA_Obj  A,
FLA_Obj  B 
)
115{
117}
FLA_Error FLA_Eig_gest_blk_external(FLA_Inv inv, FLA_Uplo uplo, FLA_Obj A, FLA_Obj B)
Definition FLA_Eig_gest_blk_external.c:13

References FLA_Eig_gest_blk_external(), and i.

Referenced by FLA_Eig_gest_il().

◆ FLA_Eig_gest_il_task()

FLA_Error FLA_Eig_gest_il_task ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)
30{
31 //return FLA_Eig_gest_unb_external( FLA_INVERSE, FLA_LOWER_TRIANGULAR, A, B );
34}
fla_eig_gest_t * fla_eig_gest_ix_cntl_leaf
Definition FLA_Eig_gest_cntl_init.c:22

References FLA_Eig_gest_internal(), fla_eig_gest_ix_cntl_leaf, and i.

◆ FLA_Eig_gest_il_unb_ext()

FLA_Error FLA_Eig_gest_il_unb_ext ( FLA_Obj  A,
FLA_Obj  B 
)
115{
117}
FLA_Error FLA_Eig_gest_unb_external(FLA_Inv inv, FLA_Uplo uplo, FLA_Obj A, FLA_Obj B)
Definition FLA_Eig_gest_unb_external.c:13

References FLA_Eig_gest_unb_external(), and i.

Referenced by FLA_Eig_gest_il().

◆ FLA_Eig_gest_internal_check()

FLA_Error FLA_Eig_gest_internal_check ( FLA_Inv  inv,
FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 // Verify that the object element types are identical.
24
27
28 // Verify conformality between all the objects. This check works regardless
29 // of whether the element type is FLA_MATRIX or FLA_SCALAR because the
30 // element length and width are used instead of scalar length and width.
33
34 if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT1 ||
36 {
39 }
40 else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT4 ||
42 {
45 }
46 else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT3 )
47 {
50 }
51
52 return FLA_SUCCESS;
53}

References FLA_Check_conformal_dims(), FLA_Check_identical_object_elemtype(), FLA_Check_null_pointer(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Obj_length(), and FLA_Obj_width().

Referenced by FLA_Eig_gest_internal().

◆ FLA_Eig_gest_iu_blk_ext()

FLA_Error FLA_Eig_gest_iu_blk_ext ( FLA_Obj  A,
FLA_Obj  B 
)

References FLA_Eig_gest_blk_external(), and i.

Referenced by FLA_Eig_gest_iu().

◆ FLA_Eig_gest_iu_task()

FLA_Error FLA_Eig_gest_iu_task ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)
37{
38 //return FLA_Eig_gest_unb_external( FLA_INVERSE, FLA_UPPER_TRIANGULAR, A, B );
41}

References FLA_Eig_gest_internal(), fla_eig_gest_ix_cntl_leaf, and i.

◆ FLA_Eig_gest_iu_unb_ext()

FLA_Error FLA_Eig_gest_iu_unb_ext ( FLA_Obj  A,
FLA_Obj  B 
)

References FLA_Eig_gest_unb_external(), and i.

Referenced by FLA_Eig_gest_iu().

◆ FLA_Eig_gest_nl_blk_ext()

FLA_Error FLA_Eig_gest_nl_blk_ext ( FLA_Obj  A,
FLA_Obj  B 
)

◆ FLA_Eig_gest_nl_task()

FLA_Error FLA_Eig_gest_nl_task ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)
44{
45 //return FLA_Eig_gest_unb_external( FLA_NO_INVERSE, FLA_LOWER_TRIANGULAR, A, B );
48}
fla_eig_gest_t * fla_eig_gest_nx_cntl_leaf
Definition FLA_Eig_gest_cntl_init.c:23

References FLA_Eig_gest_internal(), fla_eig_gest_nx_cntl_leaf, and i.

◆ FLA_Eig_gest_nl_unb_ext()

FLA_Error FLA_Eig_gest_nl_unb_ext ( FLA_Obj  A,
FLA_Obj  B 
)

◆ FLA_Eig_gest_nu_blk_ext()

FLA_Error FLA_Eig_gest_nu_blk_ext ( FLA_Obj  A,
FLA_Obj  B 
)

◆ FLA_Eig_gest_nu_task()

FLA_Error FLA_Eig_gest_nu_task ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)
51{
52 //return FLA_Eig_gest_unb_external( FLA_NO_INVERSE, FLA_UPPER_TRIANGULAR, A, B );
55}

References FLA_Eig_gest_internal(), fla_eig_gest_nx_cntl_leaf, and i.

◆ FLA_Eig_gest_nu_unb_ext()

FLA_Error FLA_Eig_gest_nu_unb_ext ( FLA_Obj  A,
FLA_Obj  B 
)

◆ FLA_Eig_gest_task()

FLA_Error FLA_Eig_gest_task ( FLA_Inv  inv,
FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)

◆ FLA_Eig_gest_unb_external()

FLA_Error FLA_Eig_gest_unb_external ( FLA_Inv  inv,
FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  B 
)
14{
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 int itype;
18 int info;
19 FLA_Datatype datatype;
20 int m_A, cs_A;
21 int cs_B;
22 char blas_uplo;
23
25 FLA_Eig_gest_check( inv, uplo, A, B );
26
27// if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
28
29 if ( inv == FLA_INVERSE )
30 itype = 1;
31 else
32 itype = 2;
33
34 datatype = FLA_Obj_datatype( A );
35
36 m_A = FLA_Obj_length( A );
39
41
42
43 switch( datatype ){
44
45 case FLA_FLOAT:
46 {
47 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
48 float *buff_B = ( float * ) FLA_FLOAT_PTR( B );
49
51 &blas_uplo,
52 &m_A,
53 buff_A, &cs_A,
54 buff_B, &cs_B,
55 &info );
56
57 break;
58 }
59
60 case FLA_DOUBLE:
61 {
62 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
63 double *buff_B = ( double * ) FLA_DOUBLE_PTR( B );
64
66 &blas_uplo,
67 &m_A,
68 buff_A, &cs_A,
69 buff_B, &cs_B,
70 &info );
71
72 break;
73 }
74
75 case FLA_COMPLEX:
76 {
79
81 &blas_uplo,
82 &m_A,
83 buff_A, &cs_A,
84 buff_B, &cs_B,
85 &info );
86
87 break;
88 }
89
91 {
94
96 &blas_uplo,
97 &m_A,
98 buff_A, &cs_A,
99 buff_B, &cs_B,
100 &info );
101
102 break;
103 }
104
105 }
106
107#else
109#endif
110
111 return r_val;
112}
int F77_dsygs2(int *itype, char *uplo, int *n, double *a, int *lda, double *b, int *ldb, int *info)
int F77_chegs2(int *itype, char *uplo, int *n, scomplex *a, int *lda, scomplex *b, int *ldb, int *info)
int F77_ssygs2(int *itype, char *uplo, int *n, float *a, int *lda, float *b, int *ldb, int *info)
int F77_zhegs2(int *itype, char *uplo, int *n, dcomplex *a, int *lda, dcomplex *b, int *ldb, int *info)

References F77_chegs2(), F77_dsygs2(), F77_ssygs2(), F77_zhegs2(), FLA_Check_error_level(), FLA_Eig_gest_check(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Param_map_flame_to_netlib_uplo(), and i.

Referenced by FLA_Eig_gest_il_unb_ext(), FLA_Eig_gest_iu_unb_ext(), FLA_Eig_gest_nl_unb_ext(), and FLA_Eig_gest_nu_unb_ext().

◆ FLA_FS_incpiv_check()

FLA_Error FLA_FS_incpiv_check ( FLA_Obj  A,
FLA_Obj  p,
FLA_Obj  L,
FLA_Obj  b 
)
14{
16
19
22
25
28
31
34
37
40
43
44 //e_val = FLA_Check_matrix_matrix_dims( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE, A, B, B );
45 //FLA_Check_error_code( e_val );
46
47 // Until we update FS_incpiv to support multiple right-hand sides, we force B
48 // to have only one column (ie: we force B to be a vector).
51
54
55
56 return FLA_SUCCESS;
57}

References FLA_Check_conformal_dims(), FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_int_object(), FLA_Check_nonconstant_object(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Check_square(), and FLA_Obj_length().

Referenced by FLASH_FS_incpiv().

◆ FLA_Hess_blk_external()

FLA_Error FLA_Hess_blk_external ( FLA_Obj  A,
FLA_Obj  t,
int  ilo,
int  ihi 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 int n_A, cs_A;
19 int lwork;
21
23 FLA_Hess_check( A, t, ilo, ihi );
24
25 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
26
27 datatype = FLA_Obj_datatype( A );
28
29 n_A = FLA_Obj_width( A );
31
33
34 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work_obj );
35
36 // Shift ilo and ihi from zero-based indexing to one-based indexing.
37 ilo += 1;
38 ihi += 1;
39
40 switch( datatype ){
41
42 case FLA_FLOAT:
43 {
44 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
45 float *buff_t = ( float * ) FLA_FLOAT_PTR( t );
46 float *buff_work = ( float * ) FLA_FLOAT_PTR( work_obj );
47
49 &ilo,
50 &ihi,
51 buff_A, &cs_A,
52 buff_t,
54 &lwork,
55 &info );
56
57 break;
58 }
59
60 case FLA_DOUBLE:
61 {
62 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
63 double *buff_t = ( double * ) FLA_DOUBLE_PTR( t );
64 double *buff_work = ( double * ) FLA_DOUBLE_PTR( work_obj );
65
67 &ilo,
68 &ihi,
69 buff_A, &cs_A,
70 buff_t,
72 &lwork,
73 &info );
74
75 break;
76 }
77
78 case FLA_COMPLEX:
79 {
83
85 &ilo,
86 &ihi,
87 buff_A, &cs_A,
88 buff_t,
90 &lwork,
91 &info );
92
93 break;
94 }
95
97 {
101
102 F77_zgehrd( &n_A,
103 &ilo,
104 &ihi,
105 buff_A, &cs_A,
106 buff_t,
107 buff_work,
108 &lwork,
109 &info );
110
111 break;
112 }
113
114 }
115
117#else
119#endif
120
121 return info;
122}
FLA_Error FLA_Hess_check(FLA_Obj A, FLA_Obj t, int ilo, int ihi)
Definition FLA_Hess_check.c:13
int F77_zgehrd(int *n, int *ilo, int *ihi, dcomplex *a, int *lda, dcomplex *tau, dcomplex *work, int *lwork, int *info)
int F77_dgehrd(int *n, int *ilo, int *ihi, double *a, int *lda, double *tau, double *work, int *lwork, int *info)
int F77_cgehrd(int *n, int *ilo, int *ihi, scomplex *a, int *lda, scomplex *tau, scomplex *work, int *lwork, int *info)
int F77_sgehrd(int *n, int *ilo, int *ihi, float *a, int *lda, float *tau, float *work, int *lwork, int *info)

References F77_cgehrd(), F77_dgehrd(), F77_sgehrd(), F77_zgehrd(), FLA_Check_error_level(), FLA_Hess_check(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_width(), FLA_Query_blocksize(), and i.

Referenced by FLA_Hess_blk_ext().

◆ FLA_Hess_check()

FLA_Error FLA_Hess_check ( FLA_Obj  A,
FLA_Obj  t,
int  ilo,
int  ihi 
)

◆ FLA_Hess_unb_external()

FLA_Error FLA_Hess_unb_external ( FLA_Obj  A,
FLA_Obj  t,
int  ilo,
int  ihi 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 int n_A, cs_A;
20
22 FLA_Hess_check( A, t, ilo, ihi );
23
24 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
25
26 datatype = FLA_Obj_datatype( A );
27
28 n_A = FLA_Obj_width( A );
30
31 FLA_Obj_create( datatype, n_A, 1, 0, 0, &work_obj );
32
33 // Shift ilo and ihi from zero-based indexing to one-based indexing.
34 ilo += 1;
35 ihi += 1;
36
37 switch( datatype ){
38
39 case FLA_FLOAT:
40 {
41 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
42 float *buff_t = ( float * ) FLA_FLOAT_PTR( t );
43 float *buff_work = ( float * ) FLA_FLOAT_PTR( work_obj );
44
46 &ilo,
47 &ihi,
48 buff_A, &cs_A,
49 buff_t,
51 &info );
52
53 break;
54 }
55
56 case FLA_DOUBLE:
57 {
58 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
59 double *buff_t = ( double * ) FLA_DOUBLE_PTR( t );
60 double *buff_work = ( double * ) FLA_DOUBLE_PTR( work_obj );
61
63 &ilo,
64 &ihi,
65 buff_A, &cs_A,
66 buff_t,
68 &info );
69
70 break;
71 }
72
73 case FLA_COMPLEX:
74 {
78
80 &ilo,
81 &ihi,
82 buff_A, &cs_A,
83 buff_t,
85 &info );
86
87 break;
88 }
89
91 {
95
97 &ilo,
98 &ihi,
99 buff_A, &cs_A,
100 buff_t,
101 buff_work,
102 &info );
103
104 break;
105 }
106
107 }
108
110#else
112#endif
113
114 return info;
115}
int F77_zgehd2(int *n, int *ilo, int *ihi, dcomplex *a, int *lda, dcomplex *tau, dcomplex *work, int *info)
int F77_sgehd2(int *n, int *ilo, int *ihi, float *a, int *lda, float *tau, float *work, int *info)
int F77_cgehd2(int *n, int *ilo, int *ihi, scomplex *a, int *lda, scomplex *tau, scomplex *work, int *info)
int F77_dgehd2(int *n, int *ilo, int *ihi, double *a, int *lda, double *tau, double *work, int *info)

References F77_cgehd2(), F77_dgehd2(), F77_sgehd2(), F77_zgehd2(), FLA_Check_error_level(), FLA_Hess_check(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_width(), and i.

Referenced by FLA_Hess_unb_ext().

◆ FLA_Hess_UT()

FLA_Error FLA_Hess_UT ( FLA_Obj  A,
FLA_Obj  T 
)
16{
18
19 // Check parameters.
22
23 // Invoke FLA_Hess_UT_internal() with the standard control tree.
25
26 return r_val;
27}
fla_hessut_t * fla_hessut_cntl_leaf
Definition FLA_Hess_UT_cntl_init.c:13
FLA_Error FLA_Hess_UT_internal(FLA_Obj A, FLA_Obj T, fla_hessut_t *cntl)
Definition FLA_Hess_UT_internal.c:13
FLA_Error FLA_Hess_UT_check(FLA_Obj A, FLA_Obj T)
Definition FLA_Hess_UT_check.c:13

References FLA_Check_error_level(), FLA_Hess_UT_check(), FLA_Hess_UT_internal(), fla_hessut_cntl_leaf, and i.

◆ FLA_Hess_UT_check()

FLA_Error FLA_Hess_UT_check ( FLA_Obj  A,
FLA_Obj  T 
)

◆ FLA_Hess_UT_internal_check()

FLA_Error FLA_Hess_UT_internal_check ( FLA_Obj  A,
FLA_Obj  T,
fla_hessut_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 // Verify that the object element types are identical.
24
25 return FLA_SUCCESS;
26}

References FLA_Check_identical_object_elemtype(), and FLA_Check_null_pointer().

Referenced by FLA_Hess_UT_internal().

◆ FLA_Hess_UT_recover_tau_check()

FLA_Error FLA_Hess_UT_recover_tau_check ( FLA_Obj  T,
FLA_Obj  tau 
)

◆ FLA_Hevd_check()

FLA_Error FLA_Hevd_check ( FLA_Evd_type  jobz,
FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  l 
)

◆ FLA_Hevd_compute_scaling_check()

FLA_Error FLA_Hevd_compute_scaling_check ( FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  sigma 
)

◆ FLA_Hevd_external()

FLA_Error FLA_Hevd_external ( FLA_Evd_type  jobz,
FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  l 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
19 int n_A, cs_A;
20 int lwork, lrwork;
22 char blas_jobz;
23 char blas_uplo;
24 int i;
25
27 FLA_Hevd_check( jobz, uplo, A, e );
28
29 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
30
31 datatype = FLA_Obj_datatype( A );
33
34 n_A = FLA_Obj_width( A );
36
37 // Allocate the rwork array up front since its size is not dependent on
38 // internal block sizes.
39 lrwork = max( 1, 3 * n_A - 2 );
40 FLA_Obj_create( dt_real, lrwork, 1, 0, 0, &rwork );
41
44
45 // Make a workspace query the first time through. This will provide us with
46 // and ideal workspace size based on an internal block size.
47 lwork = -1;
48 FLA_Obj_create( datatype, 1, 1, 0, 0, &work );
49
50 for ( i = 0; i < 2; ++i )
51 {
52 if ( i == 1 )
53 {
54 // Grab the queried ideal workspace size from the work array, free the
55 // work object, and then re-allocate the workspace with the ideal size.
56 if ( datatype == FLA_FLOAT || datatype == FLA_COMPLEX )
57 lwork = ( int ) *FLA_FLOAT_PTR( work );
58 else if ( datatype == FLA_DOUBLE || datatype == FLA_DOUBLE_COMPLEX )
59 lwork = ( int ) *FLA_DOUBLE_PTR( work );
60
62 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work );
63 }
64
65 switch( datatype ) {
66
67 case FLA_FLOAT:
68 {
69 float* buff_A = ( float * ) FLA_FLOAT_PTR( A );
70 float* buff_e = ( float * ) FLA_FLOAT_PTR( e );
71 float* buff_work = ( float * ) FLA_FLOAT_PTR( work );
72 float* buff_rwork = ( float * ) FLA_FLOAT_PTR( rwork );
73
75 &blas_uplo,
76 &n_A,
77 buff_A, &cs_A,
78 buff_e,
81 &info );
82
83 break;
84 }
85
86 case FLA_DOUBLE:
87 {
88 double* buff_A = ( double * ) FLA_DOUBLE_PTR( A );
89 double* buff_e = ( double * ) FLA_DOUBLE_PTR( e );
90 double* buff_work = ( double * ) FLA_DOUBLE_PTR( work );
91 double* buff_rwork = ( double * ) FLA_DOUBLE_PTR( rwork );
92
94 &blas_uplo,
95 &n_A,
96 buff_A, &cs_A,
97 buff_e,
100 &info );
101
102 break;
103 }
104
105 case FLA_COMPLEX:
106 {
108 float* buff_e = ( float * ) FLA_FLOAT_PTR( e );
110 float* buff_rwork = ( float * ) FLA_FLOAT_PTR( rwork );
111
113 &blas_uplo,
114 &n_A,
115 buff_A, &cs_A,
116 buff_e,
119 &info );
120
121 break;
122 }
123
125 {
127 double* buff_e = ( double* ) FLA_DOUBLE_PTR( e );
129 double* buff_rwork = ( double* ) FLA_DOUBLE_PTR( rwork );
130
132 &blas_uplo,
133 &n_A,
134 buff_A, &cs_A,
135 buff_e,
138 &info );
139
140 break;
141 }
142
143 }
144 }
145
146 FLA_Obj_free( &work );
148#else
150#endif
151
152 return info;
153}
FLA_Error FLA_Hevd_check(FLA_Evd_type jobz, FLA_Uplo uplo, FLA_Obj A, FLA_Obj e)
Definition FLA_Hevd_check.c:13
int F77_zheev(char *jobz, char *uplo, int *n, dcomplex *a, int *lda, double *w, dcomplex *work, int *lwork, double *rwork, int *info)
int F77_cheev(char *jobz, char *uplo, int *n, scomplex *a, int *lda, float *w, scomplex *work, int *lwork, float *rwork, int *info)
int F77_dsyev(char *jobz, char *uplo, int *n, double *a, int *lda, double *w, double *work, int *lwork, double *rwork, int *info)
int F77_ssyev(char *jobz, char *uplo, int *n, float *a, int *lda, float *w, float *work, int *lwork, float *rwork, int *info)
void FLA_Param_map_flame_to_netlib_evd_type(FLA_Evd_type evd_type, void *lapack_evd_type)
Definition FLA_Param.c:151

References F77_cheev(), F77_dsyev(), F77_ssyev(), F77_zheev(), FLA_Check_error_level(), FLA_Hevd_check(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_datatype_proj_to_real(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_width(), FLA_Param_map_flame_to_netlib_evd_type(), FLA_Param_map_flame_to_netlib_uplo(), and i.

◆ FLA_Hevdd_check()

FLA_Error FLA_Hevdd_check ( FLA_Evd_type  jobz,
FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  l 
)

◆ FLA_Hevdd_external()

FLA_Error FLA_Hevdd_external ( FLA_Evd_type  jobz,
FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  l 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
19 int n_A, cs_A;
20 int lwork, lrwork, liwork;
22 char blas_jobz;
23 char blas_uplo;
24 int i;
25
27 FLA_Hevdd_check( jobz, uplo, A, e );
28
29 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
30
31 datatype = FLA_Obj_datatype( A );
33
34 n_A = FLA_Obj_width( A );
36
39
40 // Make a workspace query the first time through. This will provide us with
41 // and ideal workspace size.
42 lwork = -1;
43 lrwork = -1;
44 liwork = -1;
45 FLA_Obj_create( datatype, 1, 1, 0, 0, &work );
46 FLA_Obj_create( datatype, 1, 1, 0, 0, &rwork );
47 FLA_Obj_create( FLA_INT, 1, 1, 0, 0, &iwork );
48
49 for ( i = 0; i < 2; ++i )
50 {
51 if ( i == 1 )
52 {
53 // Grab the queried ideal workspace size from the work arrays, free the
54 // work object, and then re-allocate the workspace with the ideal size.
55 if ( datatype == FLA_FLOAT || datatype == FLA_COMPLEX )
56 {
57 lwork = ( int ) *FLA_FLOAT_PTR( work );
58 lrwork = ( int ) *FLA_FLOAT_PTR( rwork );
59 liwork = ( int ) *FLA_INT_PTR( iwork );
60 }
61 else if ( datatype == FLA_DOUBLE || datatype == FLA_DOUBLE_COMPLEX )
62 {
63 lwork = ( int ) *FLA_DOUBLE_PTR( work );
65 liwork = ( int ) *FLA_INT_PTR( iwork );
66 }
67//printf( "ideal workspace for n = %d\n", n_A );
68//printf( " lwork = %d\n", lwork );
69//printf( " lrwork = %d\n", lrwork );
70//printf( " liwork = %d\n", liwork );
71 lwork = 2*lwork;
75 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work );
76 FLA_Obj_create( datatype, liwork, 1, 0, 0, &iwork );
77 if ( FLA_Obj_is_complex( A ) )
78 FLA_Obj_create( datatype, lrwork, 1, 0, 0, &rwork );
79 }
80
81 switch( datatype ) {
82
83 case FLA_FLOAT:
84 {
85 float* buff_A = ( float* ) FLA_FLOAT_PTR( A );
86 float* buff_e = ( float* ) FLA_FLOAT_PTR( e );
87 float* buff_work = ( float* ) FLA_FLOAT_PTR( work );
88 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
89
91 &blas_uplo,
92 &n_A,
93 buff_A, &cs_A,
94 buff_e,
97 &info );
98
99 break;
100 }
101
102 case FLA_DOUBLE:
103 {
104 double* buff_A = ( double* ) FLA_DOUBLE_PTR( A );
105 double* buff_e = ( double* ) FLA_DOUBLE_PTR( e );
106 double* buff_work = ( double* ) FLA_DOUBLE_PTR( work );
107 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
108
110 &blas_uplo,
111 &n_A,
112 buff_A, &cs_A,
113 buff_e,
116 &info );
117
118 break;
119 }
120
121 case FLA_COMPLEX:
122 {
124 float* buff_e = ( float* ) FLA_FLOAT_PTR( e );
126 float* buff_rwork = ( float* ) FLA_FLOAT_PTR( rwork );
127 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
128
130 &blas_uplo,
131 &n_A,
132 buff_A, &cs_A,
133 buff_e,
137 &info );
138
139 break;
140 }
141
143 {
145 double* buff_e = ( double* ) FLA_DOUBLE_PTR( e );
147 double* buff_rwork = ( double* ) FLA_DOUBLE_PTR( rwork );
148 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
149
151 &blas_uplo,
152 &n_A,
153 buff_A, &cs_A,
154 buff_e,
158 &info );
159
160 break;
161 }
162
163 }
164 }
165
166 FLA_Obj_free( &work );
168 if ( FLA_Obj_is_complex( A ) )
170#else
172#endif
173
174 return info;
175}
FLA_Error FLA_Hevdd_check(FLA_Evd_type jobz, FLA_Uplo uplo, FLA_Obj A, FLA_Obj e)
Definition FLA_Hevdd_check.c:13
int F77_cheevd(char *jobz, char *uplo, int *n, scomplex *a, int *lda, float *w, scomplex *work, int *lwork, float *rwork, int *lrwork, int *iwork, int *liwork, int *info)
int F77_zheevd(char *jobz, char *uplo, int *n, dcomplex *a, int *lda, double *w, dcomplex *work, int *lwork, double *rwork, int *lrwork, int *iwork, int *liwork, int *info)
int F77_ssyevd(char *jobz, char *uplo, int *n, float *a, int *lda, float *w, float *work, int *lwork, int *iwork, int *liwork, int *info)
int F77_dsyevd(char *jobz, char *uplo, int *n, double *a, int *lda, double *w, double *work, int *lwork, int *iwork, int *liwork, int *info)
FLA_Bool FLA_Obj_is_complex(FLA_Obj A)
Definition FLA_Query.c:324

References F77_cheevd(), F77_dsyevd(), F77_ssyevd(), F77_zheevd(), FLA_Check_error_level(), FLA_Hevdd_check(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_datatype_proj_to_real(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_is_complex(), FLA_Obj_width(), FLA_Param_map_flame_to_netlib_evd_type(), FLA_Param_map_flame_to_netlib_uplo(), and i.

◆ FLA_Hevdr_check()

FLA_Error FLA_Hevdr_check ( FLA_Evd_type  jobz,
FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  l,
FLA_Obj  Z 
)

◆ FLA_Hevdr_external()

FLA_Error FLA_Hevdr_external ( FLA_Evd_type  jobz,
FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  l,
FLA_Obj  Z 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
19 int n_A, cs_A;
20 int cs_Z;
23 char blas_jobz;
24 char blas_uplo;
25 int i;
26
27 char blas_range = 'A';
28 int il, iu;
29 int eigs_found;
30
32 FLA_Hevdr_check( jobz, uplo, A, l, Z );
33
34 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
35
36 datatype = FLA_Obj_datatype( A );
38
39 n_A = FLA_Obj_width( A );
42
45
46 lisuppz = 2 * n_A;
47 FLA_Obj_create( FLA_INT, lisuppz, 1, 0, 0, &isuppz );
48 FLA_Obj_create( dt_real, 1, 1, 0, 0, &abstol );
49
50 // Query the safe minimum to use as the abstol parameter.
52
53 // Make a workspace query the first time through. This will provide us with
54 // and ideal workspace size.
55 lwork = -1;
56 lrwork = -1;
57 liwork = -1;
58 FLA_Obj_create( datatype, 1, 1, 0, 0, &work );
59 FLA_Obj_create( dt_real, 1, 1, 0, 0, &rwork );
60 FLA_Obj_create( FLA_INT, 1, 1, 0, 0, &iwork );
61
62 for ( i = 0; i < 2; ++i )
63 {
64 if ( i == 1 )
65 {
66 // Grab the queried ideal workspace size from the work arrays, free the
67 // work object, and then re-allocate the workspace with the ideal size.
68 if ( datatype == FLA_FLOAT || datatype == FLA_COMPLEX )
69 {
70 lwork = ( int ) *FLA_FLOAT_PTR( work );
71 lrwork = ( int ) *FLA_FLOAT_PTR( rwork );
72 liwork = ( int ) *FLA_INT_PTR( iwork );
73 }
74 else if ( datatype == FLA_DOUBLE || datatype == FLA_DOUBLE_COMPLEX )
75 {
76 lwork = ( int ) *FLA_DOUBLE_PTR( work );
78 liwork = ( int ) *FLA_INT_PTR( iwork );
79 }
80
84 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work );
85 FLA_Obj_create( FLA_INT, liwork, 1, 0, 0, &iwork );
86 if ( FLA_Obj_is_complex( A ) )
87 FLA_Obj_create( dt_real, lrwork, 1, 0, 0, &rwork );
88 }
89
90 switch( datatype ) {
91
92 case FLA_FLOAT:
93 {
94 float* buff_A = ( float* ) FLA_FLOAT_PTR( A );
95 float* buff_l = ( float* ) FLA_FLOAT_PTR( l );
96 float* buff_Z = ( float* ) FLA_FLOAT_PTR( Z );
97 float* buff_work = ( float* ) FLA_FLOAT_PTR( work );
98 float* buff_abstol = ( float* ) FLA_FLOAT_PTR( abstol );
99 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
100 int* buff_isuppz = ( int* ) FLA_INT_PTR( isuppz );
101 float vl, vu;
102
104 &blas_range,
105 &blas_uplo,
106 &n_A,
107 buff_A, &cs_A,
108 &vl, &vu,
109 &il, &iu,
111 &eigs_found,
112 buff_l,
113 buff_Z, &cs_Z,
117 &info );
118 break;
119 }
120
121 case FLA_DOUBLE:
122 {
123 double* buff_A = ( double* ) FLA_DOUBLE_PTR( A );
124 double* buff_l = ( double* ) FLA_DOUBLE_PTR( l );
125 double* buff_Z = ( double* ) FLA_DOUBLE_PTR( Z );
126 double* buff_work = ( double* ) FLA_DOUBLE_PTR( work );
127 double* buff_abstol = ( double* ) FLA_DOUBLE_PTR( abstol );
128 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
129 int* buff_isuppz = ( int* ) FLA_INT_PTR( isuppz );
130 double vl, vu;
131
133 &blas_range,
134 &blas_uplo,
135 &n_A,
136 buff_A, &cs_A,
137 &vl, &vu,
138 &il, &iu,
140 &eigs_found,
141 buff_l,
142 buff_Z, &cs_Z,
146 &info );
147 break;
148 }
149
150 case FLA_COMPLEX:
151 {
153 float* buff_l = ( float* ) FLA_FLOAT_PTR( l );
156 float* buff_rwork = ( float* ) FLA_FLOAT_PTR( rwork );
157 float* buff_abstol = ( float* ) FLA_FLOAT_PTR( abstol );
158 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
159 int* buff_isuppz = ( int* ) FLA_INT_PTR( isuppz );
160 float vl, vu;
161
163 &blas_range,
164 &blas_uplo,
165 &n_A,
166 buff_A, &cs_A,
167 &vl, &vu,
168 &il, &iu,
170 &eigs_found,
171 buff_l,
172 buff_Z, &cs_Z,
177 &info );
178 break;
179 }
180
182 {
184 double* buff_l = ( double* ) FLA_DOUBLE_PTR( l );
187 double* buff_rwork = ( double* ) FLA_DOUBLE_PTR( rwork );
188 double* buff_abstol = ( double* ) FLA_DOUBLE_PTR( abstol );
189 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
190 int* buff_isuppz = ( int* ) FLA_INT_PTR( isuppz );
191 double vl, vu;
192
194 &blas_range,
195 &blas_uplo,
196 &n_A,
197 buff_A, &cs_A,
198 &vl, &vu,
199 &il, &iu,
201 &eigs_found,
202 buff_l,
203 buff_Z, &cs_Z,
208 &info );
209 break;
210 }
211
212 }
213 }
214
215 FLA_Obj_free( &work );
219 if ( FLA_Obj_is_complex( A ) )
221#else
223#endif
224
225 return info;
226}
FLA_Error FLA_Hevdr_check(FLA_Evd_type jobz, FLA_Uplo uplo, FLA_Obj A, FLA_Obj l, FLA_Obj Z)
Definition FLA_Hevdr_check.c:13
int F77_zheevr(char *jobz, char *range, char *uplo, int *n, dcomplex *a, int *lda, double *vl, double *vu, int *il, int *iu, double *abstol, int *m, double *w, dcomplex *z, int *ldz, int *isuppz, dcomplex *work, int *lwork, double *rwork, int *lrwork, int *iwork, int *liwork, int *info)
int F77_dsyevr(char *jobz, char *range, char *uplo, int *n, double *a, int *lda, double *vl, double *vu, int *il, int *iu, double *abstol, int *m, double *w, double *z, int *ldz, int *isuppz, double *work, int *lwork, int *iwork, int *liwork, int *info)
int F77_ssyevr(char *jobz, char *range, char *uplo, int *n, float *a, int *lda, float *vl, float *vu, int *il, int *iu, float *abstol, int *m, float *w, float *z, int *ldz, int *isuppz, float *work, int *lwork, int *iwork, int *liwork, int *info)
int F77_cheevr(char *jobz, char *range, char *uplo, int *n, scomplex *a, int *lda, float *vl, float *vu, int *il, int *iu, float *abstol, int *m, float *w, scomplex *z, int *ldz, int *isuppz, scomplex *work, int *lwork, float *rwork, int *lrwork, int *iwork, int *liwork, int *info)
FLA_Error FLA_Mach_params(FLA_Machval machval, FLA_Obj val)
Definition FLA_Mach_params.c:13

References F77_cheevr(), F77_dsyevr(), F77_ssyevr(), F77_zheevr(), FLA_Check_error_level(), FLA_Hevdr_check(), FLA_Mach_params(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_datatype_proj_to_real(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_is_complex(), FLA_Obj_width(), FLA_Param_map_flame_to_netlib_evd_type(), FLA_Param_map_flame_to_netlib_uplo(), and i.

◆ FLA_LQ_blk_external()

FLA_Error FLA_LQ_blk_external ( FLA_Obj  A,
FLA_Obj  t 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 int m_A, n_A, cs_A;
19 int lwork;
21
23 FLA_LQ_check( A, t );
24
25 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
26
27 datatype = FLA_Obj_datatype( A );
28
29 m_A = FLA_Obj_length( A );
30 n_A = FLA_Obj_width( A );
33
34 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work_obj );
35
36 switch( datatype ){
37
38 case FLA_FLOAT:
39 {
40 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
41 float *buff_t = ( float * ) FLA_FLOAT_PTR( t );
42 float *buff_work = ( float * ) FLA_FLOAT_PTR( work_obj );
43
45 &n_A,
46 buff_A, &cs_A,
47 buff_t,
49 &info );
50
51 break;
52 }
53
54 case FLA_DOUBLE:
55 {
56 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
57 double *buff_t = ( double * ) FLA_DOUBLE_PTR( t );
58 double *buff_work = ( double * ) FLA_DOUBLE_PTR( work_obj );
59
61 &n_A,
62 buff_A, &cs_A,
63 buff_t,
65 &info );
66
67 break;
68 }
69
70 case FLA_COMPLEX:
71 {
75
77 &n_A,
78 buff_A, &cs_A,
79 buff_t,
81 &info );
82
83 break;
84 }
85
87 {
91
93 &n_A,
94 buff_A, &cs_A,
95 buff_t,
97 &info );
98
99 break;
100 }
101
102 }
103
105#else
107#endif
108
109 return info;
110}
FLA_Error FLA_LQ_check(FLA_Obj A, FLA_Obj t)
Definition FLA_LQ_check.c:13
int F77_cgelqf(int *m, int *n, scomplex *a, int *lda, scomplex *tau, scomplex *work, int *lwork, int *info)
int F77_zgelqf(int *m, int *n, dcomplex *a, int *lda, dcomplex *tau, dcomplex *work, int *lwork, int *info)
int F77_dgelqf(int *m, int *n, double *a, int *lda, double *tau, double *work, int *lwork, int *info)
int F77_sgelqf(int *m, int *n, float *a, int *lda, float *tau, float *work, int *lwork, int *info)

References F77_cgelqf(), F77_dgelqf(), F77_sgelqf(), F77_zgelqf(), FLA_Check_error_level(), FLA_LQ_check(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_width(), FLA_Query_blocksize(), and i.

Referenced by FLA_LQ_blk_ext().

◆ FLA_LQ_check()

FLA_Error FLA_LQ_check ( FLA_Obj  A,
FLA_Obj  t 
)

◆ FLA_LQ_unb_external()

FLA_Error FLA_LQ_unb_external ( FLA_Obj  A,
FLA_Obj  t 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 int m_A, n_A, cs_A;
20
22 FLA_LQ_check( A, t );
23
24 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
25
26 datatype = FLA_Obj_datatype( A );
27
28 m_A = FLA_Obj_length( A );
29 n_A = FLA_Obj_width( A );
31
32 FLA_Obj_create( datatype, m_A, 1, 0, 0, &work_obj );
33
34 switch( datatype ){
35
36 case FLA_FLOAT:
37 {
38 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
39 float *buff_t = ( float * ) FLA_FLOAT_PTR( t );
40 float *buff_work = ( float * ) FLA_FLOAT_PTR( work_obj );
41
43 &n_A,
44 buff_A, &cs_A,
45 buff_t,
47 &info );
48
49 break;
50 }
51
52 case FLA_DOUBLE:
53 {
54 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
55 double *buff_t = ( double * ) FLA_DOUBLE_PTR( t );
56 double *buff_work = ( double * ) FLA_DOUBLE_PTR( work_obj );
57
59 &n_A,
60 buff_A, &cs_A,
61 buff_t,
63 &info );
64
65 break;
66 }
67
68 case FLA_COMPLEX:
69 {
73
75 &n_A,
76 buff_A, &cs_A,
77 buff_t,
79 &info );
80
81 break;
82 }
83
85 {
89
91 &n_A,
92 buff_A, &cs_A,
93 buff_t,
95 &info );
96
97 break;
98 }
99
100 }
101
103#else
105#endif
106
107 return info;
108}
int F77_sgelq2(int *m, int *n, float *a, int *lda, float *tau, float *work, int *info)
int F77_zgelq2(int *m, int *n, dcomplex *a, int *lda, dcomplex *tau, dcomplex *work, int *info)
int F77_dgelq2(int *m, int *n, double *a, int *lda, double *tau, double *work, int *info)
int F77_cgelq2(int *m, int *n, scomplex *a, int *lda, scomplex *tau, scomplex *work, int *info)

References F77_cgelq2(), F77_dgelq2(), F77_sgelq2(), F77_zgelq2(), FLA_Check_error_level(), FLA_LQ_check(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_width(), and i.

Referenced by FLA_LQ_unb_ext().

◆ FLA_LQ_UT()

FLA_Error FLA_LQ_UT ( FLA_Obj  A,
FLA_Obj  S 
)
16{
18
19 // Check parameters.
22
23 // Invoke FLA_LQ_UT_internal() with the standard control tree.
24 //r_val = FLA_LQ_UT_blk_var1( A, T, fla_lqut_cntl_leaf );
26
27 return r_val;
28}
fla_lqut_t * fla_lqut_cntl_leaf
Definition FLA_LQ_UT_cntl_init.c:16
FLA_Error FLA_LQ_UT_internal(FLA_Obj A, FLA_Obj T, fla_lqut_t *cntl)
Definition FLA_LQ_UT_internal.c:17
FLA_Error FLA_LQ_UT_check(FLA_Obj A, FLA_Obj T)
Definition FLA_LQ_UT_check.c:13

References FLA_Check_error_level(), FLA_LQ_UT_check(), FLA_LQ_UT_internal(), fla_lqut_cntl_leaf, and i.

◆ FLA_LQ_UT_check()

FLA_Error FLA_LQ_UT_check ( FLA_Obj  A,
FLA_Obj  T 
)

◆ FLA_LQ_UT_form_Q_check()

FLA_Error FLA_LQ_UT_form_Q_check ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  Q 
)
14{
16
19
22
25
28
29 // - the width of T represents the number of applied house-holder vectors.
30 // - the length of A may represent the same number of those vectors.
31 // - however, if A and Q share the same buffer (in-place operation),
32 // then the length of A should match to the length of the maximum length
33 // of the applied house-holder vectors.
34 //if ( FLA_Obj_is_overlapped( A, Q ) == FALSE )
35 //{
36 // e_val = FLA_Check_object_width_equals( T, FLA_Obj_length( A ) );
37 // FLA_Check_error_code( e_val );
38 //}
39
42
43 // Q matrix should not be restricted to be a square matrix
44 // e_val = FLA_Check_square( Q );
45 // FLA_Check_error_code( e_val );
46
47 return FLA_SUCCESS;
48}

References FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_nonconstant_object(), FLA_Check_object_width_equals(), and FLA_Obj_width().

◆ FLA_LQ_UT_internal_check()

FLA_Error FLA_LQ_UT_internal_check ( FLA_Obj  A,
FLA_Obj  T,
fla_lqut_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 // Verify that the object element types are identical.
24
25 // Verify conformality between all the objects. This check works regardless
26 // of whether the element type is FLA_MATRIX or FLA_SCALAR because the
27 // element length and width are used instead of scalar length and width.
30
31 return FLA_SUCCESS;
32}
FLA_Error FLA_Check_object_width_min(FLA_Obj A, dim_t n)
Definition FLA_Check.c:1069

References FLA_Check_identical_object_elemtype(), FLA_Check_null_pointer(), FLA_Check_object_width_min(), and FLA_Obj_min_dim().

Referenced by FLA_LQ_UT_internal().

◆ FLA_LQ_UT_macro_task()

FLA_Error FLA_LQ_UT_macro_task ( FLA_Obj  A,
FLA_Obj  T,
fla_lqut_t cntl 
)
16{
20
21 if ( FLA_Obj_width( A ) > 1 )
22 {
25
28
31
34 }
35 else
36 {
39 cntl );
40 }
41
42 return r_val;
43}
FLA_Error FLASH_Copy_flat_to_hier(FLA_Obj F, dim_t i, dim_t j, FLA_Obj H)
Definition FLASH_Copy_other.c:81
FLA_Error FLASH_Obj_create_flat_copy_of_hier(FLA_Obj H, FLA_Obj *F)
Definition FLASH_Obj.c:623
fla_lqut_t * fla_lqut_cntl_leaf
Definition FLA_LQ_UT_cntl_init.c:16
FLA_Error FLA_LQ_UT_task(FLA_Obj A, FLA_Obj T, fla_lqut_t *cntl)
Definition FLA_LQ_UT_task.c:15

References FLA_LQ_UT_internal(), FLA_LQ_UT_task(), fla_lqut_cntl_leaf, FLA_Obj_free(), FLA_Obj_width(), FLASH_Copy_flat_to_hier(), FLASH_Obj_create_flat_copy_of_hier(), and i.

Referenced by FLA_LQ_UT_internal(), and FLASH_Queue_exec_task().

◆ FLA_LQ_UT_recover_tau_check()

FLA_Error FLA_LQ_UT_recover_tau_check ( FLA_Obj  T,
FLA_Obj  tau 
)
14{
16
19
22
25
26 // This is not valid anymore as T is created with a conforming width to A.
27 //e_val = FLA_Check_object_width_equals( T, FLA_Obj_vector_dim( tau ) );
28 //FLA_Check_error_code( e_val );
29
30 return FLA_SUCCESS;
31}

References FLA_Check_consistent_object_datatype(), FLA_Check_floating_object(), and FLA_Check_if_vector().

◆ FLA_LQ_UT_solve_check()

FLA_Error FLA_LQ_UT_solve_check ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  B,
FLA_Obj  X 
)

◆ FLA_LQ_UT_task()

FLA_Error FLA_LQ_UT_task ( FLA_Obj  A,
FLA_Obj  T,
fla_lqut_t cntl 
)
16{
17 return FLA_LQ_UT_internal( A, T,
19}
fla_lqut_t * fla_lqut_cntl_leaf
Definition FLA_LQ_UT_cntl_init.c:16

References FLA_LQ_UT_internal(), fla_lqut_cntl_leaf, and i.

Referenced by FLA_LQ_UT_macro_task().

◆ FLA_LU_incpiv_check()

FLA_Error FLA_LU_incpiv_check ( FLA_Obj  A,
FLA_Obj  p,
FLA_Obj  L 
)

◆ FLA_LU_incpiv_solve_check()

FLA_Error FLA_LU_incpiv_solve_check ( FLA_Obj  A,
FLA_Obj  p,
FLA_Obj  L,
FLA_Obj  B,
FLA_Obj  X 
)

◆ FLA_LU_nopiv()

FLA_Error FLA_LU_nopiv ( FLA_Obj  A)
17{
19
20 // Check parameters.
23
24 // Invoke FLA_LU_nopiv_internal() with large control tree.
26
27 // Check for singularity.
30
31 return r_val;
32}
fla_lu_t * fla_lu_nopiv_cntl2
Definition FLA_LU_nopiv_cntl_init.c:17
FLA_Error FLA_LU_nopiv_internal(FLA_Obj A, fla_lu_t *cntl)
Definition FLA_LU_nopiv_internal.c:16
FLA_Error FLA_LU_nopiv_check(FLA_Obj A)
Definition FLA_LU_nopiv_check.c:13
FLA_Error FLA_LU_find_zero_on_diagonal(FLA_Obj A)
Definition FLA_LU_find_zero_on_diagonal.c:13

References FLA_Check_error_level(), FLA_LU_find_zero_on_diagonal(), FLA_LU_nopiv_check(), fla_lu_nopiv_cntl2, FLA_LU_nopiv_internal(), and i.

◆ FLA_LU_nopiv_check()

FLA_Error FLA_LU_nopiv_check ( FLA_Obj  A)

◆ FLA_LU_nopiv_internal_check()

FLA_Error FLA_LU_nopiv_internal_check ( FLA_Obj  A,
fla_lu_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 return FLA_SUCCESS;
22}

References FLA_Check_null_pointer().

Referenced by FLA_LU_nopiv_internal().

◆ FLA_LU_nopiv_solve_check()

FLA_Error FLA_LU_nopiv_solve_check ( FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  X 
)

◆ FLA_LU_nopiv_task()

FLA_Error FLA_LU_nopiv_task ( FLA_Obj  A,
fla_lu_t cntl 
)
16{
19}
fla_lu_t * fla_lu_nopiv_cntl_leaf
Definition FLA_LU_nopiv_cntl_init.c:20

References fla_lu_nopiv_cntl_leaf, FLA_LU_nopiv_internal(), and i.

Referenced by FLASH_Queue_exec_task().

◆ FLA_LU_piv()

FLA_Error FLA_LU_piv ( FLA_Obj  A,
FLA_Obj  p 
)
17{
19
20 // Check parameters.
23
24 // Invoke FLA_LU_piv_internal() with large control tree.
26
27 // This is invalid as FLA_LU_piv_internal returns a null pivot index.
28 // Check for singularity.
29 //if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
30 // r_val = FLA_LU_find_zero_on_diagonal( A );
31
32 return r_val;
33}
fla_lu_t * fla_lu_piv_cntl2
Definition FLA_LU_piv_cntl_init.c:18
FLA_Error FLA_LU_piv_internal(FLA_Obj A, FLA_Obj p, fla_lu_t *cntl)
Definition FLA_LU_piv_internal.c:15
FLA_Error FLA_LU_piv_check(FLA_Obj A, FLA_Obj p)
Definition FLA_LU_piv_check.c:13

References FLA_Check_error_level(), FLA_LU_piv_check(), fla_lu_piv_cntl2, FLA_LU_piv_internal(), and i.

◆ FLA_LU_piv_blk_ext()

FLA_Error FLA_LU_piv_blk_ext ( FLA_Obj  A,
FLA_Obj  p 
)
107{
108 return FLA_LU_piv_blk_external( A, p );
109}
FLA_Error FLA_LU_piv_blk_external(FLA_Obj A, FLA_Obj p)
Definition FLA_LU_piv_blk_external.c:13

References FLA_LU_piv_blk_external(), and i.

Referenced by FLA_LU_piv_internal().

◆ FLA_LU_piv_blk_external()

FLA_Error FLA_LU_piv_blk_external ( FLA_Obj  A,
FLA_Obj  p 
)
14{
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 int info;
18 FLA_Datatype datatype;
19 int m_A, n_A, cs_A;
20
23
24 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
25
26 datatype = FLA_Obj_datatype( A );
27
28 m_A = FLA_Obj_length( A );
29 n_A = FLA_Obj_width( A );
31
32
33 switch( datatype ){
34
35 case FLA_FLOAT:
36 {
37 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
38 int *buff_p = ( int * ) FLA_INT_PTR( p );
39
41 &n_A,
42 buff_A, &cs_A,
43 buff_p,
44 &info );
45
46 break;
47 }
48
49 case FLA_DOUBLE:
50 {
51 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
52 int *buff_p = ( int * ) FLA_INT_PTR( p );
53
55 &n_A,
56 buff_A, &cs_A,
57 buff_p,
58 &info );
59
60 break;
61 }
62
63 case FLA_COMPLEX:
64 {
66 int *buff_p = ( int * ) FLA_INT_PTR( p );
67
69 &n_A,
70 buff_A, &cs_A,
71 buff_p,
72 &info );
73
74 break;
75 }
76
78 {
80 int *buff_p = ( int * ) FLA_INT_PTR( p );
81
83 &n_A,
84 buff_A, &cs_A,
85 buff_p,
86 &info );
87
88 break;
89 }
90
91 }
92
94
95 // Convert to zero-based indexing, if an index was reported.
96 if ( info > 0 ) r_val = info - 1;
97 else r_val = FLA_SUCCESS;
98
99#else
101#endif
102
103 return r_val;
104}
int F77_zgetrf(int *m, int *n, dcomplex *a, int *lda, int *ipiv, int *info)
int F77_cgetrf(int *m, int *n, scomplex *a, int *lda, int *ipiv, int *info)
int F77_dgetrf(int *m, int *n, double *a, int *lda, int *ipiv, int *info)
int F77_sgetrf(int *m, int *n, float *a, int *lda, int *ipiv, int *info)
FLA_Error FLA_Shift_pivots_to(FLA_Pivot_type ptype, FLA_Obj p)
Definition FLA_Shift_pivots_to.c:13

References F77_cgetrf(), F77_dgetrf(), F77_sgetrf(), F77_zgetrf(), FLA_Check_error_level(), FLA_LU_piv_check(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_width(), FLA_Shift_pivots_to(), and i.

Referenced by FLA_LU_piv_blk_ext().

◆ FLA_LU_piv_check()

FLA_Error FLA_LU_piv_check ( FLA_Obj  A,
FLA_Obj  p 
)

◆ FLA_LU_piv_copy_task()

FLA_Error FLA_LU_piv_copy_task ( FLA_Obj  A,
FLA_Obj  p,
FLA_Obj  U,
fla_lu_t cntl 
)
14{
16
17 r_val = FLA_LU_piv_task( A, p, cntl );
18
20
21 return r_val;
22}
FLA_Error FLA_Copy_external(FLA_Obj A, FLA_Obj B)
Definition FLA_Copy_external.c:13
FLA_Error FLA_LU_piv_task(FLA_Obj A, FLA_Obj p, fla_lu_t *cntl)
Definition FLA_LU_piv_task.c:15

References FLA_Copy_external(), FLA_LU_piv_task(), and i.

Referenced by FLASH_LU_incpiv_var2(), and FLASH_Queue_exec_task().

◆ FLA_LU_piv_macro_task()

FLA_Error FLA_LU_piv_macro_task ( FLA_Obj  A,
FLA_Obj  p,
fla_lu_t cntl 
)

◆ FLA_LU_piv_solve_check()

FLA_Error FLA_LU_piv_solve_check ( FLA_Obj  A,
FLA_Obj  p,
FLA_Obj  B,
FLA_Obj  X 
)

◆ FLA_LU_piv_task()

FLA_Error FLA_LU_piv_task ( FLA_Obj  A,
FLA_Obj  p,
fla_lu_t cntl 
)
16{
17 return FLA_LU_piv_internal( A, p,
19}
fla_lu_t * fla_lu_piv_cntl_leaf
Definition FLA_LU_piv_cntl_init.c:21

References fla_lu_piv_cntl_leaf, FLA_LU_piv_internal(), and i.

Referenced by FLA_LU_piv_copy_task(), FLA_LU_piv_macro_task(), FLASH_LU_incpiv_var1(), and FLASH_Queue_exec_task().

◆ FLA_LU_piv_unb_ext()

FLA_Error FLA_LU_piv_unb_ext ( FLA_Obj  A,
FLA_Obj  p 
)
107{
108 return FLA_LU_piv_unb_external( A, p );
109}
FLA_Error FLA_LU_piv_unb_external(FLA_Obj A, FLA_Obj p)
Definition FLA_LU_piv_unb_external.c:13

References FLA_LU_piv_unb_external(), and i.

Referenced by FLA_LU_piv_internal().

◆ FLA_LU_piv_unb_external()

FLA_Error FLA_LU_piv_unb_external ( FLA_Obj  A,
FLA_Obj  p 
)
14{
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 int info;
18 FLA_Datatype datatype;
19 int m_A, n_A, cs_A;
20
23
24 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
25
26 datatype = FLA_Obj_datatype( A );
27
28 m_A = FLA_Obj_length( A );
29 n_A = FLA_Obj_width( A );
31
32
33 switch( datatype ){
34
35 case FLA_FLOAT:
36 {
37 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
38 int *buff_p = ( int * ) FLA_INT_PTR( p );
39
41 &n_A,
42 buff_A, &cs_A,
43 buff_p,
44 &info );
45
46 break;
47 }
48
49 case FLA_DOUBLE:
50 {
51 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
52 int *buff_p = ( int * ) FLA_INT_PTR( p );
53
55 &n_A,
56 buff_A, &cs_A,
57 buff_p,
58 &info );
59
60 break;
61 }
62
63 case FLA_COMPLEX:
64 {
66 int *buff_p = ( int * ) FLA_INT_PTR( p );
67
69 &n_A,
70 buff_A, &cs_A,
71 buff_p,
72 &info );
73
74 break;
75 }
76
78 {
80 int *buff_p = ( int * ) FLA_INT_PTR( p );
81
83 &n_A,
84 buff_A, &cs_A,
85 buff_p,
86 &info );
87
88 break;
89 }
90
91 }
92
94
95 // Convert to zero-based indexing, if an index was reported.
96 if ( info > 0 ) r_val = info - 1;
97 else r_val = FLA_SUCCESS;
98
99#else
101#endif
102
103 return r_val;
104}
int F77_cgetf2(int *m, int *n, scomplex *a, int *lda, int *ipiv, int *info)
int F77_sgetf2(int *m, int *n, float *a, int *lda, int *ipiv, int *info)
int F77_zgetf2(int *m, int *n, dcomplex *a, int *lda, int *ipiv, int *info)
int F77_dgetf2(int *m, int *n, double *a, int *lda, int *ipiv, int *info)

References F77_cgetf2(), F77_dgetf2(), F77_sgetf2(), F77_zgetf2(), FLA_Check_error_level(), FLA_LU_piv_check(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_width(), FLA_Shift_pivots_to(), and i.

Referenced by FLA_LU_piv_unb_ext().

◆ FLA_Lyap_check()

FLA_Error FLA_Lyap_check ( FLA_Trans  trans,
FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C,
FLA_Obj  scale 
)

◆ FLA_Lyap_h_task()

FLA_Error FLA_Lyap_h_task ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C,
FLA_Obj  scale,
fla_lyap_t cntl 
)
28{
31}
FLA_Error FLA_Lyap_internal(FLA_Trans trans, FLA_Obj isgn, FLA_Obj A, FLA_Obj C, FLA_Obj scale, fla_lyap_t *cntl)
Definition FLA_Lyap_internal.c:16
fla_lyap_t * fla_lyap_cntl_leaf
Definition FLA_Lyap_cntl_init.c:19

References fla_lyap_cntl_leaf, FLA_Lyap_internal(), and i.

◆ FLA_Lyap_internal_check()

FLA_Error FLA_Lyap_internal_check ( FLA_Trans  trans,
FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C,
FLA_Obj  scale,
fla_lyap_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 // Verify that the object element types are identical.
24
25 // Verify conformality between all the objects. This check works regardless
26 // of whether the element type is FLA_MATRIX or FLA_SCALAR because the
27 // element length and width are used instead of scalar length and width.
30
33
36
37 return FLA_SUCCESS;
38}

References FLA_Check_conformal_dims(), FLA_Check_identical_object_elemtype(), FLA_Check_null_pointer(), and FLA_Check_square().

Referenced by FLA_Lyap_internal().

◆ FLA_Lyap_n_task()

FLA_Error FLA_Lyap_n_task ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C,
FLA_Obj  scale,
fla_lyap_t cntl 
)

◆ FLA_Lyap_task()

FLA_Error FLA_Lyap_task ( FLA_Trans  trans,
FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C,
FLA_Obj  scale,
fla_lyap_t cntl 
)
16{
17 return FLA_Lyap_internal( trans, isgn, A, C, scale,
19}

References fla_lyap_cntl_leaf, FLA_Lyap_internal(), and i.

Referenced by FLASH_Queue_exec_task().

◆ FLA_QR2_UT_check()

FLA_Error FLA_QR2_UT_check ( FLA_Obj  B,
FLA_Obj  D,
FLA_Obj  T 
)

◆ FLA_QR2_UT_internal_check()

FLA_Error FLA_QR2_UT_internal_check ( FLA_Obj  B,
FLA_Obj  D,
FLA_Obj  T,
fla_qr2ut_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 // Verify that the object element types are identical.
24
27
28 // Verify conformality between all the objects. This check works regardless
29 // of whether the element type is FLA_MATRIX or FLA_SCALAR because the
30 // element length and width are used instead of scalar length and width.
31 //e_val = FLA_Check_matrix_matrix_dims( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE, D, B, D );
32 //FLA_Check_error_code( e_val );
35
36 //e_val = FLA_Check_matrix_matrix_dims( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE, T, B, T );
37 //FLA_Check_error_code( e_val );
40
41 return FLA_SUCCESS;
42}

References FLA_Check_identical_object_elemtype(), FLA_Check_null_pointer(), FLA_Check_object_width_equals(), and FLA_Obj_width().

Referenced by FLA_QR2_UT_internal().

◆ FLA_QR2_UT_task()

FLA_Error FLA_QR2_UT_task ( FLA_Obj  B,
FLA_Obj  D,
FLA_Obj  T,
fla_qr2ut_t cntl 
)
16{
17 return FLA_QR2_UT_internal( B, D, T,
19}
FLA_Error FLA_QR2_UT_internal(FLA_Obj U, FLA_Obj D, FLA_Obj T, fla_qr2ut_t *cntl)
Definition FLA_QR2_UT_internal.c:16
fla_qr2ut_t * fla_qr2ut_cntl_leaf
Definition FLA_QR2_UT_cntl_init.c:19

References FLA_QR2_UT_internal(), fla_qr2ut_cntl_leaf, and i.

Referenced by FLA_CAQR2_UT_internal(), and FLASH_Queue_exec_task().

◆ FLA_QR_blk_external()

FLA_Error FLA_QR_blk_external ( FLA_Obj  A,
FLA_Obj  t 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 int m_A, n_A, cs_A;
19 int lwork;
21
23 FLA_QR_check( A, t );
24
25 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
26
27 datatype = FLA_Obj_datatype( A );
28
29 m_A = FLA_Obj_length( A );
30 n_A = FLA_Obj_width( A );
32
34 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work_obj );
35
36 switch( datatype ){
37
38 case FLA_FLOAT:
39 {
40 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
41 float *buff_t = ( float * ) FLA_FLOAT_PTR( t );
42 float *buff_work = ( float * ) FLA_FLOAT_PTR( work_obj );
43
45 &n_A,
46 buff_A, &cs_A,
47 buff_t,
49 &info );
50
51 break;
52 }
53
54 case FLA_DOUBLE:
55 {
56 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
57 double *buff_t = ( double * ) FLA_DOUBLE_PTR( t );
58 double *buff_work = ( double * ) FLA_DOUBLE_PTR( work_obj );
59
61 &n_A,
62 buff_A, &cs_A,
63 buff_t,
65 &info );
66
67 break;
68 }
69
70 case FLA_COMPLEX:
71 {
75
77 &n_A,
78 buff_A, &cs_A,
79 buff_t,
81 &info );
82
83 break;
84 }
85
87 {
91
93 &n_A,
94 buff_A, &cs_A,
95 buff_t,
97 &info );
98
99 break;
100 }
101
102 }
103
105#else
107#endif
108
109 return info;
110}
FLA_Error FLA_QR_check(FLA_Obj A, FLA_Obj t)
Definition FLA_QR_check.c:13
int F77_cgeqrf(int *m, int *n, scomplex *a, int *lda, scomplex *tau, scomplex *work, int *lwork, int *info)
int F77_sgeqrf(int *m, int *n, float *a, int *lda, float *tau, float *work, int *lwork, int *info)
int F77_zgeqrf(int *m, int *n, dcomplex *a, int *lda, dcomplex *tau, dcomplex *work, int *lwork, int *info)
int F77_dgeqrf(int *m, int *n, double *a, int *lda, double *tau, double *work, int *lwork, int *info)

References F77_cgeqrf(), F77_dgeqrf(), F77_sgeqrf(), F77_zgeqrf(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_width(), FLA_QR_check(), FLA_Query_blocksize(), and i.

Referenced by FLA_QR_blk_ext().

◆ FLA_QR_check()

FLA_Error FLA_QR_check ( FLA_Obj  A,
FLA_Obj  t 
)

◆ FLA_QR_form_Q_check()

FLA_Error FLA_QR_form_Q_check ( FLA_Obj  A,
FLA_Obj  t 
)

◆ FLA_QR_form_Q_external()

FLA_Error FLA_QR_form_Q_external ( FLA_Obj  A,
FLA_Obj  t 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 int m_A, n_A, k_A;
19 int cs_A;
20 int lwork;
22 int i;
23
26
27 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
28
29 datatype = FLA_Obj_datatype( A );
30
31 m_A = FLA_Obj_length( A );
32 n_A = FLA_Obj_width( A );
34
36
37 // Make a workspace query the first time through. This will provide us with
38 // and ideal workspace size based on an internal block size.
39 lwork = -1;
40 FLA_Obj_create( datatype, 1, 1, 0, 0, &work );
41
42 for ( i = 0; i < 2; ++i )
43 {
44 if ( i == 1 )
45 {
46 // Grab the queried ideal workspace size from the work array, free the
47 // work object, and then re-allocate the workspace with the ideal size.
48 if ( datatype == FLA_FLOAT || datatype == FLA_COMPLEX )
49 lwork = ( int ) *FLA_FLOAT_PTR( work );
50 else if ( datatype == FLA_DOUBLE || datatype == FLA_DOUBLE_COMPLEX )
51 lwork = ( int ) *FLA_DOUBLE_PTR( work );
52
54 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work );
55 }
56
57 switch( datatype ){
58
59 case FLA_FLOAT:
60 {
61 float* buff_A = ( float * ) FLA_FLOAT_PTR( A );
62 float* buff_t = ( float * ) FLA_FLOAT_PTR( t );
63 float* buff_work = ( float * ) FLA_FLOAT_PTR( work );
64
66 &n_A,
67 &k_A,
68 buff_A, &cs_A,
69 buff_t,
71 &info );
72
73 break;
74 }
75
76 case FLA_DOUBLE:
77 {
78 double* buff_A = ( double * ) FLA_DOUBLE_PTR( A );
79 double* buff_t = ( double * ) FLA_DOUBLE_PTR( t );
80 double* buff_work = ( double * ) FLA_DOUBLE_PTR( work );
81
83 &n_A,
84 &k_A,
85 buff_A, &cs_A,
86 buff_t,
88 &info );
89
90 break;
91 }
92
93 case FLA_COMPLEX:
94 {
98
100 &n_A,
101 &k_A,
102 buff_A, &cs_A,
103 buff_t,
105 &info );
106
107 break;
108 }
109
111 {
115
116 F77_zungqr( &m_A,
117 &n_A,
118 &k_A,
119 buff_A, &cs_A,
120 buff_t,
122 &info );
123
124 break;
125 }
126
127 }
128
129 }
130
131 FLA_Obj_free( &work );
132#else
134#endif
135
136 return info;
137}
FLA_Error FLA_QR_form_Q_check(FLA_Obj A, FLA_Obj t)
Definition FLA_QR_form_Q_check.c:13
int F77_dorgqr(int *m, int *n, int *k, double *a, int *lda, double *tau, double *work, int *lwork, int *info)
int F77_cungqr(int *m, int *n, int *k, scomplex *a, int *lda, scomplex *tau, scomplex *work, int *lwork, int *info)
int F77_zungqr(int *m, int *n, int *k, dcomplex *a, int *lda, dcomplex *tau, dcomplex *work, int *lwork, int *info)
int F77_sorgqr(int *m, int *n, int *k, float *a, int *lda, float *tau, float *work, int *lwork, int *info)

References F77_cungqr(), F77_dorgqr(), F77_sorgqr(), F77_zungqr(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_vector_dim(), FLA_Obj_width(), FLA_QR_form_Q_check(), and i.

◆ FLA_QR_unb_external()

FLA_Error FLA_QR_unb_external ( FLA_Obj  A,
FLA_Obj  t 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 int m_A, n_A, cs_A;
20
22 FLA_QR_check( A, t );
23
24 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
25
26 datatype = FLA_Obj_datatype( A );
27
28 m_A = FLA_Obj_length( A );
29 n_A = FLA_Obj_width( A );
31
32 FLA_Obj_create( datatype, n_A, 1, 0, 0, &work_obj );
33
34 switch( datatype ){
35
36 case FLA_FLOAT:
37 {
38 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
39 float *buff_t = ( float * ) FLA_FLOAT_PTR( t );
40 float *buff_work = ( float * ) FLA_FLOAT_PTR( work_obj );
41
43 &n_A,
44 buff_A, &cs_A,
45 buff_t,
47 &info );
48
49 break;
50 }
51
52 case FLA_DOUBLE:
53 {
54 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
55 double *buff_t = ( double * ) FLA_DOUBLE_PTR( t );
56 double *buff_work = ( double * ) FLA_DOUBLE_PTR( work_obj );
57
59 &n_A,
60 buff_A, &cs_A,
61 buff_t,
63 &info );
64
65 break;
66 }
67
68 case FLA_COMPLEX:
69 {
73
75 &n_A,
76 buff_A, &cs_A,
77 buff_t,
79 &info );
80
81 break;
82 }
83
85 {
89
91 &n_A,
92 buff_A, &cs_A,
93 buff_t,
95 &info );
96
97 break;
98 }
99
100 }
101
103#else
105#endif
106
107 return info;
108}
int F77_cgeqr2(int *m, int *n, scomplex *a, int *lda, scomplex *tau, scomplex *work, int *info)
int F77_dgeqr2(int *m, int *n, double *a, int *lda, double *tau, double *work, int *info)
int F77_sgeqr2(int *m, int *n, float *a, int *lda, float *tau, float *work, int *info)
int F77_zgeqr2(int *m, int *n, dcomplex *a, int *lda, dcomplex *tau, dcomplex *work, int *info)

References F77_cgeqr2(), F77_dgeqr2(), F77_sgeqr2(), F77_zgeqr2(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_width(), FLA_QR_check(), and i.

Referenced by FLA_QR_unb_ext().

◆ FLA_QR_UT()

FLA_Error FLA_QR_UT ( FLA_Obj  A,
FLA_Obj  T 
)
16{
18
19 // Check parameters.
22
23 // Invoke FLA_QR_UT_internal() with the standard control tree.
24 //r_val = FLA_QR_UT_internal( A, T, fla_qrut_cntl2 );
26
27 return r_val;
28}
fla_qrut_t * fla_qrut_cntl_leaf
Definition FLA_QR_UT_cntl_init.c:16
FLA_Error FLA_QR_UT_internal(FLA_Obj A, FLA_Obj T, fla_qrut_t *cntl)
Definition FLA_QR_UT_internal.c:17
FLA_Error FLA_QR_UT_check(FLA_Obj A, FLA_Obj T)
Definition FLA_QR_UT_check.c:13

References FLA_Check_error_level(), FLA_QR_UT_check(), FLA_QR_UT_internal(), fla_qrut_cntl_leaf, and i.

Referenced by FLA_Random_unitary_matrix(), FLA_Svd_ext_u_unb_var1(), FLA_Svd_uv_unb_var1(), and FLA_Svd_uv_unb_var2().

◆ FLA_QR_UT_check()

FLA_Error FLA_QR_UT_check ( FLA_Obj  A,
FLA_Obj  T 
)

◆ FLA_QR_UT_copy_internal_check()

FLA_Error FLA_QR_UT_copy_internal_check ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  U,
fla_qrut_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 // Verify that the object element types are identical.
24
27
28 // Verify conformality between all the objects. This check works regardless
29 // of whether the element type is FLA_MATRIX or FLA_SCALAR because the
30 // element length and width are used instead of scalar length and width.
33
36
37 return FLA_SUCCESS;
38}

References FLA_Check_conformal_dims(), FLA_Check_identical_object_elemtype(), FLA_Check_null_pointer(), FLA_Check_object_width_equals(), and FLA_Obj_width().

Referenced by FLA_QR_UT_copy_internal().

◆ FLA_QR_UT_copy_task()

FLA_Error FLA_QR_UT_copy_task ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  U,
fla_qrut_t cntl 
)
16{
18 FLA_Obj AT,
19 AB;
20
21 // Perform a QR factorization as we normally would.
24
25 // Partition away the bottom part of the matrix, if there is any, so that
26 // the dimensions match that of U. This step is only necessary so that
27 // the copyr operation below works normally for the last iteration of
28 // incremental QR. The whole point of making a copy of the lower triangle
29 // of A is to allow stage 2 to proceed without a dependency leading into
30 // stage 3. But the last iteration does not perform stage 2, and thus U
31 // is never read and so the copyr does not need to happen.
32 FLA_Part_2x1( A, &AT,
34
35 // Copy the Householder vectors into U.
37
38 return r_val;
39}
fla_qrut_t * fla_qrut_cntl_leaf
Definition FLA_QR_UT_cntl_init.c:16
FLA_Error FLA_Copyr_external(FLA_Uplo uplo, FLA_Obj A, FLA_Obj B)
Definition FLA_Copyr_external.c:13
FLA_Error FLA_Part_2x1(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t mb, FLA_Side side)
Definition FLA_View.c:76

References FLA_Copyr_external(), FLA_Obj_min_dim(), FLA_Part_2x1(), FLA_QR_UT_internal(), fla_qrut_cntl_leaf, and i.

Referenced by FLA_QR_UT_copy_internal(), and FLASH_Queue_exec_task().

◆ FLA_QR_UT_form_Q_check()

FLA_Error FLA_QR_UT_form_Q_check ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  Q 
)
14{
16
19
22
25
28
29 // The width of T is the loop guard, not A. This should not be checked.
30 //e_val = FLA_Check_object_width_equals( T, FLA_Obj_width( A ) );
31 //FLA_Check_error_code( e_val );
32
35
36 // Q matrix should not be restricted to be a square matrix
37 // e_val = FLA_Check_square( Q );
38 // FLA_Check_error_code( e_val );
39
40 return FLA_SUCCESS;
41}

References FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_nonconstant_object(), FLA_Check_object_length_equals(), and FLA_Obj_length().

Referenced by FLA_QR_UT_form_Q().

◆ FLA_QR_UT_inc_check()

FLA_Error FLA_QR_UT_inc_check ( FLA_Obj  A,
FLA_Obj  TW 
)

◆ FLA_QR_UT_inc_solve_check()

FLA_Error FLA_QR_UT_inc_solve_check ( FLA_Obj  A,
FLA_Obj  TW,
FLA_Obj  B,
FLA_Obj  X 
)

◆ FLA_QR_UT_internal_check()

FLA_Error FLA_QR_UT_internal_check ( FLA_Obj  A,
FLA_Obj  T,
fla_qrut_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 // Verify that the object element types are identical.
24
25 // Verify conformality between all the objects. This check works regardless
26 // of whether the element type is FLA_MATRIX or FLA_SCALAR because the
27 // element length and width are used instead of scalar length and width.
30
31 return FLA_SUCCESS;
32}

References FLA_Check_identical_object_elemtype(), FLA_Check_null_pointer(), FLA_Check_object_width_min(), and FLA_Obj_min_dim().

Referenced by FLA_QR_UT_internal().

◆ FLA_QR_UT_macro_task()

FLA_Error FLA_QR_UT_macro_task ( FLA_Obj  A,
FLA_Obj  T,
fla_qrut_t cntl 
)
16{
19
20 if ( FLA_Obj_length( A ) > 1 )
21 {
23
25
27
29 }
30 else
31 {
32 r_val = FLA_QR_UT_task( *FLASH_OBJ_PTR_AT( A ), T, cntl );
33 }
34
35 return r_val;
36}
fla_qrut_t * fla_qrut_cntl_leaf
Definition FLA_QR_UT_cntl_init.c:16
FLA_Error FLA_QR_UT_task(FLA_Obj A, FLA_Obj T, fla_qrut_t *cntl)
Definition FLA_QR_UT_task.c:15

References FLA_Obj_free(), FLA_Obj_length(), FLA_QR_UT_internal(), FLA_QR_UT_task(), fla_qrut_cntl_leaf, FLASH_Copy_flat_to_hier(), FLASH_Obj_create_flat_copy_of_hier(), and i.

Referenced by FLA_QR_UT_internal(), and FLASH_Queue_exec_task().

◆ FLA_QR_UT_piv()

FLA_Error FLA_QR_UT_piv ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  w,
FLA_Obj  p 
)
16{
18
19 // Check parameters.
22
23 FLA_Set( FLA_ZERO, w );
25
27
28 return r_val;
29}
fla_qrut_t * fla_qrut_piv_cntl_leaf
Definition FLA_QR_UT_cntl_init.c:19
FLA_Error FLA_QR_UT_piv_internal(FLA_Obj A, FLA_Obj T, FLA_Obj w, FLA_Obj p, fla_qrut_t *cntl)
Definition FLA_QR_UT_piv_internal.c:13
FLA_Error FLA_QR_UT_piv_colnorm(FLA_Obj alpha, FLA_Obj A, FLA_Obj b)
Definition FLA_QR_UT_piv_colnorm.c:13
FLA_Error FLA_QR_UT_piv_check(FLA_Obj A, FLA_Obj T, FLA_Obj w, FLA_Obj p)
Definition FLA_QR_UT_piv_check.c:13
FLA_Obj FLA_ZERO
Definition FLA_Init.c:20
FLA_Obj FLA_ONE
Definition FLA_Init.c:18
FLA_Error FLA_Set(FLA_Obj alpha, FLA_Obj A)
Definition FLA_Set.c:13

References FLA_Check_error_level(), FLA_ONE, FLA_QR_UT_piv_check(), FLA_QR_UT_piv_colnorm(), FLA_QR_UT_piv_internal(), fla_qrut_piv_cntl_leaf, FLA_Set(), FLA_ZERO, and i.

◆ FLA_QR_UT_recover_tau_check()

FLA_Error FLA_QR_UT_recover_tau_check ( FLA_Obj  T,
FLA_Obj  tau 
)
14{
16
19
22
25
26 // This is not valid anymore as T is created with a conforming width to A.
27 //e_val = FLA_Check_object_width_equals( T, FLA_Obj_vector_dim( tau ) );
28 //FLA_Check_error_code( e_val );
29
30 return FLA_SUCCESS;
31}

References FLA_Check_consistent_object_datatype(), FLA_Check_floating_object(), and FLA_Check_if_vector().

Referenced by FLA_QR_UT_recover_tau().

◆ FLA_QR_UT_solve_check()

FLA_Error FLA_QR_UT_solve_check ( FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  B,
FLA_Obj  X 
)

◆ FLA_QR_UT_task()

FLA_Error FLA_QR_UT_task ( FLA_Obj  A,
FLA_Obj  T,
fla_qrut_t cntl 
)
16{
17 return FLA_QR_UT_internal( A, T,
19}
fla_qrut_t * fla_qrut_cntl_leaf
Definition FLA_QR_UT_cntl_init.c:16

References FLA_QR_UT_internal(), fla_qrut_cntl_leaf, and i.

Referenced by FLA_QR_UT_macro_task(), and FLASH_Queue_exec_task().

◆ FLA_SA_FS_task()

FLA_Error FLA_SA_FS_task ( FLA_Obj  L,
FLA_Obj  D,
FLA_Obj  p,
FLA_Obj  C,
FLA_Obj  E,
dim_t  nb_alg,
fla_gemm_t cntl 
)
17{
19
21 D, p, C,
22 E, nb_alg );
23
24 return info;
25}
FLA_Error FLA_SA_FS_blk(FLA_Obj L, FLA_Obj D, FLA_Obj p, FLA_Obj C, FLA_Obj E, dim_t nb_alg)
Definition FLA_SA_FS_blk.c:13

References FLA_SA_FS_blk(), and i.

Referenced by FLASH_Queue_exec_task(), and FLASH_SA_FS().

◆ FLA_SA_LU_task()

FLA_Error FLA_SA_LU_task ( FLA_Obj  U,
FLA_Obj  D,
FLA_Obj  p,
FLA_Obj  L,
dim_t  nb_alg,
fla_lu_t cntl 
)
16{
18
20 D, p, L, nb_alg );
21
22 return info;
23}
FLA_Error FLA_SA_LU_blk(FLA_Obj U, FLA_Obj D, FLA_Obj p, FLA_Obj L, dim_t nb_alg)
Definition FLA_SA_LU_blk.c:13

References FLA_SA_LU_blk(), and i.

Referenced by FLASH_Queue_exec_task(), and FLASH_SA_LU().

◆ FLA_SPDinv()

FLA_Error FLA_SPDinv ( FLA_Uplo  uplo,
FLA_Obj  A 
)
16{
18
19 // Check parameters.
21 FLA_SPDinv_check( uplo, A );
22
23 // Invoke FLA_SPDinv_internal() with an appropriate control tree.
25
26 return r_val;
27}
fla_spdinv_t * fla_spdinv_cntl
Definition FLA_SPDinv_cntl_init.c:17
FLA_Error FLA_SPDinv_internal(FLA_Uplo uplo, FLA_Obj A, fla_spdinv_t *cntl)
Definition FLA_SPDinv_internal.c:13
FLA_Error FLA_SPDinv_check(FLA_Uplo uplo, FLA_Obj A)
Definition FLA_SPDinv_check.c:13

References FLA_Check_error_level(), FLA_SPDinv_check(), fla_spdinv_cntl, FLA_SPDinv_internal(), and i.

◆ FLA_SPDinv_blk_external()

FLA_Error FLA_SPDinv_blk_external ( FLA_Uplo  uplo,
FLA_Obj  A 
)
14{
15#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17
19 FLA_SPDinv_check( uplo, A );
20
21 e_val = FLA_Chol_blk_external( uplo, A );
22
23 if ( e_val != FLA_SUCCESS )
24 return e_val;
25
27
28 if ( e_val != FLA_SUCCESS )
29 return e_val;
30
31 FLA_Ttmm_blk_external( uplo, A );
32#else
34#endif
35
36 return FLA_SUCCESS;
37}
FLA_Error FLA_Trinv_blk_external(FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A)
Definition FLA_Trinv_blk_external.c:13
FLA_Error FLA_Chol_blk_external(FLA_Uplo uplo, FLA_Obj A)
Definition FLA_Chol_blk_external.c:13
FLA_Error FLA_Ttmm_blk_external(FLA_Uplo uplo, FLA_Obj A)
Definition FLA_Ttmm_blk_external.c:13

References FLA_Check_error_level(), FLA_Chol_blk_external(), FLA_SPDinv_check(), FLA_Trinv_blk_external(), FLA_Ttmm_blk_external(), and i.

Referenced by FLA_SPDinv_blk_ext().

◆ FLA_SPDinv_check()

FLA_Error FLA_SPDinv_check ( FLA_Uplo  uplo,
FLA_Obj  A 
)

◆ FLA_SPDinv_internal_check()

FLA_Error FLA_SPDinv_internal_check ( FLA_Uplo  uplo,
FLA_Obj  A,
fla_spdinv_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 return FLA_SUCCESS;
22}

References FLA_Check_null_pointer().

Referenced by FLA_SPDinv_internal().

◆ FLA_Svd_check()

FLA_Error FLA_Svd_check ( FLA_Svd_type  jobu,
FLA_Svd_type  jobv,
FLA_Obj  A,
FLA_Obj  s,
FLA_Obj  U,
FLA_Obj  V 
)
14{
16
19
22
23 // FLA_Svd does not allow FLA_SVD_VECTORS_MIN_OVERWRITE
24 // for both jobu and jobv as V cannot be overwritten on A.
25 // Use FLA_Svd_ext to allow OVERWRITE options.
29
30 // Do not check the jobu and jobv OVERWRITE combination.
31 //e_val = FLA_Check_valid_svd_type_combination( jobu, jobv );
32 //FLA_Check_error_code( e_val );
33
36
39
42
45
48
51
52 // When jobu is FLA_SVD_VECTORS_NONE, U may be given without a base object allocated.
54 {
57
60
61 // No need to be square.
62 //e_val = FLA_Check_square( U );
63 //FLA_Check_error_code( e_val );
64 }
65
66 // When jobv is FLA_SVD_VECTORS_NONE, V may be given without a base object allocated.
68 {
71
74
75 // No need to be square.
76 //e_val = FLA_Check_square( V );
77 //FLA_Check_error_code( e_val );
78 }
79
80 return FLA_SUCCESS;
81}

References FLA_Check_col_storage(), FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_identical_object_precision(), FLA_Check_nonconstant_object(), FLA_Check_object_length_equals(), FLA_Check_real_object(), FLA_Check_valid_svd_type(), FLA_Check_vector_dim(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_min_dim(), and FLA_Obj_width().

Referenced by FLA_Svd(), and FLA_Svd_external().

◆ FLA_Svd_compute_scaling_check()

FLA_Error FLA_Svd_compute_scaling_check ( FLA_Obj  A,
FLA_Obj  sigma 
)

◆ FLA_Svd_ext_check()

FLA_Error FLA_Svd_ext_check ( FLA_Svd_type  jobu,
FLA_Trans  transu,
FLA_Svd_type  jobv,
FLA_Trans  transv,
FLA_Obj  A,
FLA_Obj  s,
FLA_Obj  U,
FLA_Obj  V 
)
16{
18
21
24
27
30
33
36
39
42
45
48
51
54
56 {
59
61 {
64 }
65 else
66 {
69 }
70 }
71
73 {
76
78 {
81 }
82 else
83 {
86 }
87 }
88
89 return FLA_SUCCESS;
90}
FLA_Error FLA_Check_valid_svd_type_combination(FLA_Svd_type svd_type_u, FLA_Svd_type svd_type_v)
Definition FLA_Check.c:1267
FLA_Error FLA_Check_valid_svd_type_and_trans_combination(FLA_Svd_type svd_type_u, FLA_Trans transu, FLA_Svd_type svd_type_v, FLA_Trans transv)
Definition FLA_Check.c:1278

References FLA_Check_col_storage(), FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_identical_object_precision(), FLA_Check_nonconstant_object(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Check_real_object(), FLA_Check_valid_svd_type(), FLA_Check_valid_svd_type_and_trans_combination(), FLA_Check_valid_svd_type_combination(), FLA_Check_valid_trans(), FLA_Check_vector_dim(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_min_dim(), and FLA_Obj_width().

Referenced by FLA_Svd_ext().

◆ FLA_Svd_external()

FLA_Error FLA_Svd_external ( FLA_Svd_type  jobu,
FLA_Svd_type  jobv,
FLA_Obj  A,
FLA_Obj  s,
FLA_Obj  U,
FLA_Obj  V 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
19 int m_A, n_A, cs_A;
20 int cs_U;
21 int cs_V;
22 int min_m_n;
23 int lwork, lrwork;
25 char blas_jobu;
26 char blas_jobv;
27 int i;
28
30 FLA_Svd_check( jobu, jobv, A, s, U, V );
31
32 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
33
34 datatype = FLA_Obj_datatype( A );
36
37 m_A = FLA_Obj_length( A );
38 n_A = FLA_Obj_width( A );
40
42
44
45 min_m_n = min( m_A, n_A );
46
47 // Allocate the rwork array up front since its size is not dependent on
48 // internal block sizes.
49 lrwork = 5 * min_m_n;
50 if ( FLA_Obj_is_complex( A ) )
51 FLA_Obj_create( dt_real, lrwork, 1, 0, 0, &rwork );
52
55
56 // Make a workspace query the first time through. This will provide us with
57 // and ideal workspace size based on an internal block size.
58 lwork = -1;
59 FLA_Obj_create( datatype, 1, 1, 0, 0, &work );
60
61 for ( i = 0; i < 2; ++i )
62 {
63 if ( i == 1 )
64 {
65 // Grab the queried ideal workspace size from the work array, free the
66 // work object, and then re-allocate the workspace with the ideal size.
67 if ( datatype == FLA_FLOAT || datatype == FLA_COMPLEX )
68 lwork = ( int ) *FLA_FLOAT_PTR( work );
69 else if ( datatype == FLA_DOUBLE || datatype == FLA_DOUBLE_COMPLEX )
70 lwork = ( int ) *FLA_DOUBLE_PTR( work );
71
73 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work );
74 }
75
76 switch( datatype ) {
77
78 case FLA_FLOAT:
79 {
80 float* buff_A = ( float* ) FLA_FLOAT_PTR( A );
81 float* buff_s = ( float* ) FLA_FLOAT_PTR( s );
82 float* buff_U = ( float* ) FLA_FLOAT_PTR( U );
83 float* buff_V = ( float* ) FLA_FLOAT_PTR( V );
84 float* buff_work = ( float* ) FLA_FLOAT_PTR( work );
85
87 &blas_jobv,
88 &m_A,
89 &n_A,
90 buff_A, &cs_A,
91 buff_s,
92 buff_U, &cs_U,
93 buff_V, &cs_V,
95 &info );
96
97 break;
98 }
99
100 case FLA_DOUBLE:
101 {
102 double* buff_A = ( double* ) FLA_DOUBLE_PTR( A );
103 double* buff_s = ( double* ) FLA_DOUBLE_PTR( s );
104 double* buff_U = ( double* ) FLA_DOUBLE_PTR( U );
105 double* buff_V = ( double* ) FLA_DOUBLE_PTR( V );
106 double* buff_work = ( double* ) FLA_DOUBLE_PTR( work );
107
109 &blas_jobv,
110 &m_A,
111 &n_A,
112 buff_A, &cs_A,
113 buff_s,
114 buff_U, &cs_U,
115 buff_V, &cs_V,
117 &info );
118
119 break;
120 }
121
122 case FLA_COMPLEX:
123 {
125 float* buff_s = ( float* ) FLA_FLOAT_PTR( s );
129 float* buff_rwork = ( float* ) FLA_FLOAT_PTR( rwork );
130
132 &blas_jobv,
133 &m_A,
134 &n_A,
135 buff_A, &cs_A,
136 buff_s,
137 buff_U, &cs_U,
138 buff_V, &cs_V,
141 &info );
142
143 break;
144 }
145
147 {
149 double* buff_s = ( double* ) FLA_DOUBLE_PTR( s );
153 double* buff_rwork = ( double* ) FLA_DOUBLE_PTR( rwork );
154
156 &blas_jobv,
157 &m_A,
158 &n_A,
159 buff_A, &cs_A,
160 buff_s,
161 buff_U, &cs_U,
162 buff_V, &cs_V,
165 &info );
166
167 break;
168 }
169
170 }
171 }
172
173 FLA_Obj_free( &work );
174 if ( FLA_Obj_is_complex( A ) )
176#else
178#endif
179
180 return info;
181}
FLA_Error FLA_Svd_check(FLA_Svd_type jobu, FLA_Svd_type jobv, FLA_Obj A, FLA_Obj s, FLA_Obj U, FLA_Obj V)
Definition FLA_Svd_check.c:13
int F77_cgesvd(char *jobu, char *jobv, int *m, int *n, scomplex *a, int *lda, float *s, scomplex *u, int *ldu, scomplex *vt, int *ldvt, scomplex *work, int *lwork, float *rwork, int *info)
int F77_zgesvd(char *jobu, char *jobv, int *m, int *n, dcomplex *a, int *lda, double *s, dcomplex *u, int *ldu, dcomplex *vt, int *ldvt, dcomplex *work, int *lwork, double *rwork, int *info)
int F77_sgesvd(char *jobu, char *jobv, int *m, int *n, float *a, int *lda, float *s, float *u, int *ldu, float *vt, int *ldvt, float *work, int *lwork, int *info)
int F77_dgesvd(char *jobu, char *jobv, int *m, int *n, double *a, int *lda, double *s, double *u, int *ldu, double *vt, int *ldvt, double *work, int *lwork, int *info)
void FLA_Param_map_flame_to_netlib_svd_type(FLA_Svd_type svd_type, void *lapack_svd_type)
Definition FLA_Param.c:171

References F77_cgesvd(), F77_dgesvd(), F77_sgesvd(), F77_zgesvd(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_datatype_proj_to_real(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_is_complex(), FLA_Obj_length(), FLA_Obj_width(), FLA_Param_map_flame_to_netlib_svd_type(), FLA_Svd_check(), and i.

◆ FLA_Svdd_check()

FLA_Error FLA_Svdd_check ( FLA_Svd_type  jobz,
FLA_Obj  A,
FLA_Obj  s,
FLA_Obj  U,
FLA_Obj  V 
)

◆ FLA_Svdd_external()

FLA_Error FLA_Svdd_external ( FLA_Svd_type  jobz,
FLA_Obj  A,
FLA_Obj  s,
FLA_Obj  U,
FLA_Obj  V 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
20 int m_A, n_A, cs_A;
21 int cs_U;
22 int cs_V;
23 int min_m_n;
24 int lwork, lrwork, liwork;
26 char blas_jobz;
27 int i;
28
30 FLA_Svdd_check( jobz, A, s, U, V );
31
32 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
33
34 datatype = FLA_Obj_datatype( A );
37
38 m_A = FLA_Obj_length( A );
39 n_A = FLA_Obj_width( A );
41
43
45
46 min_m_n = min( m_A, n_A );
47
48 // Allocate the rwork and iwork arrays up front.
50 else lrwork = 5 * min_m_n * min_m_n +
51 7 * min_m_n;
52 liwork = 8 * min_m_n;
53
54 FLA_Obj_create( dt_int, liwork, 1, 0, 0, &iwork );
55 if ( FLA_Obj_is_complex( A ) )
56 FLA_Obj_create( dt_real, lrwork, 1, 0, 0, &rwork );
57
59
60 // Make a workspace query the first time through. This will provide us with
61 // and ideal workspace size based on an internal block size.
62 lwork = -1;
63 FLA_Obj_create( datatype, 1, 1, 0, 0, &work );
64
65 for ( i = 0; i < 2; ++i )
66 {
67 if ( i == 1 )
68 {
69 // Grab the queried ideal workspace size from the work array, free the
70 // work object, and then re-allocate the workspace with the ideal size.
71 if ( datatype == FLA_FLOAT || datatype == FLA_COMPLEX )
72 lwork = ( int ) *FLA_FLOAT_PTR( work );
73 else if ( datatype == FLA_DOUBLE || datatype == FLA_DOUBLE_COMPLEX )
74 lwork = ( int ) *FLA_DOUBLE_PTR( work );
75
77 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work );
78 }
79
80 switch( datatype ) {
81
82 case FLA_FLOAT:
83 {
84 float* buff_A = ( float* ) FLA_FLOAT_PTR( A );
85 float* buff_s = ( float* ) FLA_FLOAT_PTR( s );
86 float* buff_U = ( float* ) FLA_FLOAT_PTR( U );
87 float* buff_V = ( float* ) FLA_FLOAT_PTR( V );
88 float* buff_work = ( float* ) FLA_FLOAT_PTR( work );
89 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
90
92 &m_A,
93 &n_A,
94 buff_A, &cs_A,
95 buff_s,
96 buff_U, &cs_U,
97 buff_V, &cs_V,
100 &info );
101
102 break;
103 }
104
105 case FLA_DOUBLE:
106 {
107 double* buff_A = ( double* ) FLA_DOUBLE_PTR( A );
108 double* buff_s = ( double* ) FLA_DOUBLE_PTR( s );
109 double* buff_U = ( double* ) FLA_DOUBLE_PTR( U );
110 double* buff_V = ( double* ) FLA_DOUBLE_PTR( V );
111 double* buff_work = ( double* ) FLA_DOUBLE_PTR( work );
112 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
113
115 &m_A,
116 &n_A,
117 buff_A, &cs_A,
118 buff_s,
119 buff_U, &cs_U,
120 buff_V, &cs_V,
123 &info );
124
125 break;
126 }
127
128 case FLA_COMPLEX:
129 {
131 float* buff_s = ( float* ) FLA_FLOAT_PTR( s );
135 float* buff_rwork = ( float* ) FLA_FLOAT_PTR( rwork );
136 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
137
139 &m_A,
140 &n_A,
141 buff_A, &cs_A,
142 buff_s,
143 buff_U, &cs_U,
144 buff_V, &cs_V,
148 &info );
149
150 break;
151 }
152
154 {
156 double* buff_s = ( double* ) FLA_DOUBLE_PTR( s );
160 double* buff_rwork = ( double* ) FLA_DOUBLE_PTR( rwork );
161 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
162
164 &m_A,
165 &n_A,
166 buff_A, &cs_A,
167 buff_s,
168 buff_U, &cs_U,
169 buff_V, &cs_V,
173 &info );
174
175 break;
176 }
177
178 }
179 }
180
181 FLA_Obj_free( &work );
183 if ( FLA_Obj_is_complex( A ) )
185#else
187#endif
188
189 return info;
190}
FLA_Error FLA_Svdd_check(FLA_Svd_type jobz, FLA_Obj A, FLA_Obj s, FLA_Obj U, FLA_Obj V)
Definition FLA_Svdd_check.c:13
int F77_sgesdd(char *jobz, int *m, int *n, float *a, int *lda, float *s, float *u, int *ldu, float *vt, int *ldvt, float *work, int *lwork, int *iwork, int *info)
int F77_zgesdd(char *jobz, int *m, int *n, dcomplex *a, int *lda, double *s, dcomplex *u, int *ldu, dcomplex *vt, int *ldvt, dcomplex *work, int *lwork, double *rwork, int *iwork, int *info)
int F77_cgesdd(char *jobz, int *m, int *n, scomplex *a, int *lda, float *s, scomplex *u, int *ldu, scomplex *vt, int *ldvt, scomplex *work, int *lwork, float *rwork, int *iwork, int *info)
int F77_dgesdd(char *jobz, int *m, int *n, double *a, int *lda, double *s, double *u, int *ldu, double *vt, int *ldvt, double *work, int *lwork, int *iwork, int *info)

References F77_cgesdd(), F77_dgesdd(), F77_sgesdd(), F77_zgesdd(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_datatype_proj_to_real(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_is_complex(), FLA_Obj_length(), FLA_Obj_width(), FLA_Param_map_flame_to_netlib_svd_type(), FLA_Svdd_check(), and i.

◆ FLA_Sylv()

FLA_Error FLA_Sylv ( FLA_Trans  transa,
FLA_Trans  transb,
FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale 
)
16{
18
19 // Check parameters.
22
23 // Invoke FLA_Sylv_internal() with the appropriate control tree.
25
26 return r_val;
27}
fla_sylv_t * fla_sylv_cntl
Definition FLA_Sylv_cntl_init.c:17
FLA_Error FLA_Sylv_internal(FLA_Trans transa, FLA_Trans transb, FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale, fla_sylv_t *cntl)
Definition FLA_Sylv_internal.c:16
FLA_Error FLA_Sylv_check(FLA_Trans transa, FLA_Trans transb, FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
Definition FLA_Sylv_check.c:13

References FLA_Check_error_level(), FLA_Sylv_check(), fla_sylv_cntl, FLA_Sylv_internal(), and i.

◆ FLA_Sylv_blk_external()

FLA_Error FLA_Sylv_blk_external ( FLA_Trans  transa,
FLA_Trans  transb,
FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale 
)
14{
16
17#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
19#else
21#endif
22
23 return e_val;
24}
FLA_Error FLA_Sylv_unb_external(FLA_Trans transa, FLA_Trans transb, FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
Definition FLA_Sylv_unb_external.c:13

References FLA_Sylv_unb_external(), and i.

Referenced by FLA_Sylv_hh_blk_ext(), FLA_Sylv_hn_blk_ext(), FLA_Sylv_nh_blk_ext(), and FLA_Sylv_nn_blk_ext().

◆ FLA_Sylv_check()

FLA_Error FLA_Sylv_check ( FLA_Trans  transa,
FLA_Trans  transb,
FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale 
)

References FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_identical_object_precision(), FLA_Check_if_scalar(), FLA_Check_int_object(), FLA_Check_nonconstant_object(), FLA_Check_square(), FLA_Check_sylv_matrix_dims(), FLA_Check_valid_blas_trans(), and FLA_Check_valid_isgn_value().

Referenced by FLA_Sylv(), FLA_Sylv_unb_external(), and FLASH_Sylv().

◆ FLA_Sylv_hh_blk_ext()

FLA_Error FLA_Sylv_hh_blk_ext ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale 
)
42{
44}
FLA_Error FLA_Sylv_blk_external(FLA_Trans transa, FLA_Trans transb, FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
Definition FLA_Sylv_blk_external.c:13

References FLA_Sylv_blk_external(), and i.

Referenced by FLA_Sylv_hh().

◆ FLA_Sylv_hh_task()

FLA_Error FLA_Sylv_hh_task ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale,
fla_sylv_t cntl 
)
47{
48 //return FLA_Sylv_unb_external( FLA_CONJ_TRANSPOSE, FLA_CONJ_TRANSPOSE, isgn, A, B, C, scale );
50 isgn, A, B, C, scale,
52}
fla_sylv_t * fla_sylv_cntl_leaf
Definition FLA_Sylv_cntl_init.c:15

References fla_sylv_cntl_leaf, FLA_Sylv_internal(), and i.

◆ FLA_Sylv_hh_unb_ext()

FLA_Error FLA_Sylv_hh_unb_ext ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale 
)
163{
165}
FLA_Error FLA_Sylv_unb_external(FLA_Trans transa, FLA_Trans transb, FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
Definition FLA_Sylv_unb_external.c:13

References FLA_Sylv_unb_external(), and i.

Referenced by FLA_Sylv_hh().

◆ FLA_Sylv_hn_blk_ext()

FLA_Error FLA_Sylv_hn_blk_ext ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale 
)

References FLA_Sylv_blk_external(), and i.

Referenced by FLA_Sylv_hn().

◆ FLA_Sylv_hn_task()

FLA_Error FLA_Sylv_hn_task ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale,
fla_sylv_t cntl 
)
39{
40 //return FLA_Sylv_unb_external( FLA_CONJ_TRANSPOSE, FLA_NO_TRANSPOSE, isgn, A, B, C, scale );
42 isgn, A, B, C, scale,
44}

References fla_sylv_cntl_leaf, FLA_Sylv_internal(), and i.

◆ FLA_Sylv_hn_unb_ext()

FLA_Error FLA_Sylv_hn_unb_ext ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale 
)

References FLA_Sylv_unb_external(), and i.

Referenced by FLA_Sylv_hn().

◆ FLA_Sylv_internal_check()

FLA_Error FLA_Sylv_internal_check ( FLA_Trans  transa,
FLA_Trans  transb,
FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale,
fla_sylv_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 // Verify that the object element types are identical.
24
27
28 // Verify conformality between all the objects. This check works regardless
29 // of whether the element type is FLA_MATRIX or FLA_SCALAR because the
30 // element length and width are used instead of scalar length and width.
33
34 return FLA_SUCCESS;
35}

References FLA_Check_identical_object_elemtype(), FLA_Check_null_pointer(), and FLA_Check_sylv_matrix_dims().

Referenced by FLA_Sylv_internal().

◆ FLA_Sylv_nh_blk_ext()

FLA_Error FLA_Sylv_nh_blk_ext ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale 
)

References FLA_Sylv_blk_external(), and i.

Referenced by FLA_Sylv_nh().

◆ FLA_Sylv_nh_task()

FLA_Error FLA_Sylv_nh_task ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale,
fla_sylv_t cntl 
)
31{
32 //return FLA_Sylv_unb_external( FLA_NO_TRANSPOSE, FLA_CONJ_TRANSPOSE, isgn, A, B, C, scale );
34 isgn, A, B, C, scale,
36}

References fla_sylv_cntl_leaf, FLA_Sylv_internal(), and i.

◆ FLA_Sylv_nh_unb_ext()

FLA_Error FLA_Sylv_nh_unb_ext ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale 
)

References FLA_Sylv_unb_external(), and i.

Referenced by FLA_Sylv_nh().

◆ FLA_Sylv_nn_blk_ext()

FLA_Error FLA_Sylv_nn_blk_ext ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale 
)

References FLA_Sylv_blk_external(), and i.

Referenced by FLA_Sylv_nn().

◆ FLA_Sylv_nn_task()

FLA_Error FLA_Sylv_nn_task ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale,
fla_sylv_t cntl 
)
23{
24 //return FLA_Sylv_unb_external( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE, isgn, A, B, C, scale );
26 isgn, A, B, C, scale,
28}

References fla_sylv_cntl_leaf, FLA_Sylv_internal(), and i.

◆ FLA_Sylv_nn_unb_ext()

FLA_Error FLA_Sylv_nn_unb_ext ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale 
)

References FLA_Sylv_unb_external(), and i.

Referenced by FLA_Sylv_nn().

◆ FLA_Sylv_task()

FLA_Error FLA_Sylv_task ( FLA_Trans  transa,
FLA_Trans  transb,
FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale,
fla_sylv_t cntl 
)
16{
18 isgn, A, B, C, scale,
20}

References fla_sylv_cntl_leaf, FLA_Sylv_internal(), and i.

Referenced by FLASH_Queue_exec_task().

◆ FLA_Sylv_unb_external()

FLA_Error FLA_Sylv_unb_external ( FLA_Trans  transa,
FLA_Trans  transb,
FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 int cs_A;
19 int cs_B;
20 int m_C, n_C, cs_C;
21 char blas_transa;
22 char blas_transb;
23
26
27 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
28 if ( FLA_Obj_has_zero_dim( B ) ) return FLA_SUCCESS;
29 if ( FLA_Obj_has_zero_dim( C ) ) return FLA_SUCCESS;
30
31 datatype = FLA_Obj_datatype( A );
32
33 m_C = FLA_Obj_length( C );
34 n_C = FLA_Obj_width( C );
36
38
40
43
44
45 switch( datatype ){
46
47 case FLA_FLOAT:
48 {
49 int *buff_isgn = ( int * ) FLA_INT_PTR( isgn );
50 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
51 float *buff_B = ( float * ) FLA_FLOAT_PTR( B );
52 float *buff_C = ( float * ) FLA_FLOAT_PTR( C );
53 float *buff_scale = ( float * ) FLA_FLOAT_PTR( scale );
54
58 &m_C,
59 &n_C,
60 buff_A, &cs_A,
61 buff_B, &cs_B,
62 buff_C, &cs_C,
64 &info );
65
66 break;
67 }
68
69 case FLA_DOUBLE:
70 {
71 int *buff_isgn = ( int * ) FLA_INT_PTR( isgn );
72 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
73 double *buff_B = ( double * ) FLA_DOUBLE_PTR( B );
74 double *buff_C = ( double * ) FLA_DOUBLE_PTR( C );
75 double *buff_scale = ( double * ) FLA_DOUBLE_PTR( scale );
76
80 &m_C,
81 &n_C,
82 buff_A, &cs_A,
83 buff_B, &cs_B,
84 buff_C, &cs_C,
86 &info );
87
88 break;
89 }
90
91 case FLA_COMPLEX:
92 {
93 int *buff_isgn = ( int * ) FLA_INT_PTR( isgn );
97 float *buff_scale = ( float * ) FLA_COMPLEX_PTR( scale );
98
101 buff_isgn,
102 &m_C,
103 &n_C,
104 buff_A, &cs_A,
105 buff_B, &cs_B,
106 buff_C, &cs_C,
108 &info );
109
110 break;
111 }
112
114 {
115 int *buff_isgn = ( int * ) FLA_INT_PTR( isgn );
119 double *buff_scale = ( double * ) FLA_DOUBLE_COMPLEX_PTR( scale );
120
123 buff_isgn,
124 &m_C,
125 &n_C,
126 buff_A, &cs_A,
127 buff_B, &cs_B,
128 buff_C, &cs_C,
130 &info );
131
132 break;
133 }
134
135 }
136
137 // We don't provide a comprehensive strategy for handing scaling to avoid
138 // overflow, so we just force the scale argument to 1.0.
140#else
142#endif
143
144 return info;
145}
int F77_ctrsyl(char *transa, char *transb, int *isgn, int *m, int *n, scomplex *a, int *lda, scomplex *b, int *ldb, scomplex *c, int *ldc, float *scale, int *info)
int F77_ztrsyl(char *transa, char *transb, int *isgn, int *m, int *n, dcomplex *a, int *lda, dcomplex *b, int *ldb, dcomplex *c, int *ldc, double *scale, int *info)
int F77_dtrsyl(char *transa, char *transb, int *isgn, int *m, int *n, double *a, int *lda, double *b, int *ldb, double *c, int *ldc, double *scale, int *info)
int F77_strsyl(char *transa, char *transb, int *isgn, int *m, int *n, float *a, int *lda, float *b, int *ldb, float *c, int *ldc, float *scale, int *info)

References F77_ctrsyl(), F77_dtrsyl(), F77_strsyl(), F77_ztrsyl(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_width(), FLA_ONE, FLA_Param_map_flame_to_netlib_trans(), FLA_Set(), FLA_Sylv_check(), and i.

Referenced by FLA_Sylv_blk_external(), FLA_Sylv_hh_unb_ext(), FLA_Sylv_hn_unb_ext(), FLA_Sylv_nh_unb_ext(), and FLA_Sylv_nn_unb_ext().

◆ FLA_Tevd_compute_scaling_check()

FLA_Error FLA_Tevd_compute_scaling_check ( FLA_Obj  d,
FLA_Obj  e,
FLA_Obj  sigma 
)

◆ FLA_Tevd_external()

FLA_Error FLA_Tevd_external ( FLA_Evd_type  jobz,
FLA_Obj  d,
FLA_Obj  e,
FLA_Obj  A 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
19 int n_A, cs_A;
20 int inc_d, inc_e;
21 int lwork;
23 char blas_jobz;
24
25 //if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
26 // FLA_Hevd_check( jobz, uplo, A, e );
27
28 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
29
30 datatype = FLA_Obj_datatype( A );
32
35
36 if ( FLA_Obj_vector_inc( d ) != 1 )
37 {
38 FLA_Obj_create( dt_real, n_A, 1, 0, 0, &d_use );
39 FLA_Copy( d, d_use );
40 }
41 else { d_use = d; }
42
43 if ( FLA_Obj_vector_inc( e ) != 1 )
44 {
45 FLA_Obj_create( dt_real, n_A-1, 1, 0, 0, &e_use );
46 FLA_Copy( e, e_use );
47 }
48 else { e_use = e; }
49
52
53 // Allocate thw work array up front.
54 lwork = max( 1.0, 2.0 * n_A - 2 );
55 FLA_Obj_create( dt_real, lwork, 1, 0, 0, &work );
56
58
59 switch( datatype ) {
60
61 case FLA_FLOAT:
62 {
63 float* buff_A = ( float * ) FLA_FLOAT_PTR( A );
64 float* buff_d = ( float * ) FLA_FLOAT_PTR( d_use );
65 float* buff_e = ( float * ) FLA_FLOAT_PTR( e_use );
66 float* buff_work = ( float * ) FLA_FLOAT_PTR( work );
67
69 &n_A,
70 buff_d,
71 buff_e,
72 buff_A, &cs_A,
74 &info );
75
76 break;
77 }
78
79 case FLA_DOUBLE:
80 {
81 double* buff_A = ( double * ) FLA_DOUBLE_PTR( A );
82 double* buff_d = ( double * ) FLA_DOUBLE_PTR( d_use );
83 double* buff_e = ( double * ) FLA_DOUBLE_PTR( e_use );
84 double* buff_work = ( double * ) FLA_DOUBLE_PTR( work );
85
87 &n_A,
88 buff_d,
89 buff_e,
90 buff_A, &cs_A,
92 &info );
93
94 break;
95 }
96
97 case FLA_COMPLEX:
98 {
100 float* buff_d = ( float * ) FLA_FLOAT_PTR( d_use );
101 float* buff_e = ( float * ) FLA_FLOAT_PTR( e_use );
102 float* buff_work = ( float * ) FLA_FLOAT_PTR( work );
103
105 &n_A,
106 buff_d,
107 buff_e,
108 buff_A, &cs_A,
109 buff_work,
110 &info );
111
112 break;
113 }
114
116 {
118 double* buff_d = ( double* ) FLA_DOUBLE_PTR( d_use );
119 double* buff_e = ( double* ) FLA_DOUBLE_PTR( e_use );
120 double* buff_work = ( double* ) FLA_DOUBLE_PTR( work );
121
123 &n_A,
124 buff_d,
125 buff_e,
126 buff_A, &cs_A,
127 buff_work,
128 &info );
129
130 break;
131 }
132
133 }
134
135 if ( FLA_Obj_vector_inc( d ) != 1 )
136 {
137 FLA_Copy( d_use, d );
139 }
140 if ( FLA_Obj_vector_inc( e ) != 1 )
141 {
142 FLA_Copy( e_use, e );
144 }
145
146 FLA_Obj_free( &work );
147
148#else
150#endif
151
152 return info;
153}
FLA_Error FLA_Copy(FLA_Obj A, FLA_Obj B)
Definition FLA_Copy.c:15
int F77_ssteqr(char *jobz, int *n, float *d, float *e, float *z, int *ldz, float *work, int *info)
int F77_csteqr(char *jobz, int *n, float *d, float *e, scomplex *z, int *ldz, float *work, int *info)
int F77_dsteqr(char *jobz, int *n, double *d, double *e, double *z, int *ldz, double *work, int *info)
int F77_zsteqr(char *jobz, int *n, double *d, double *e, dcomplex *z, int *ldz, double *work, int *info)

References F77_csteqr(), F77_dsteqr(), F77_ssteqr(), F77_zsteqr(), FLA_Copy(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_datatype_proj_to_real(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_vector_dim(), FLA_Obj_vector_inc(), FLA_Param_map_flame_to_netlib_evd_type(), and i.

◆ FLA_Tevdd_external()

FLA_Error FLA_Tevdd_external ( FLA_Evd_type  jobz,
FLA_Obj  d,
FLA_Obj  e,
FLA_Obj  A 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
19 int n_A, cs_A;
20 int lwork, lrwork, liwork;
22 char blas_jobz;
23 int i;
24
25 //if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
26 // FLA_Tevdd_check( jobz, d, e, A );
27
28 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
29
30 datatype = FLA_Obj_datatype( A );
32
33 n_A = FLA_Obj_width( A );
35
37
38 // Make a workspace query the first time through. This will provide us with
39 // and ideal workspace size.
40 lwork = -1;
41 lrwork = -1;
42 liwork = -1;
43 FLA_Obj_create( datatype, 1, 1, 0, 0, &work );
44 FLA_Obj_create( datatype, 1, 1, 0, 0, &rwork );
45 FLA_Obj_create( FLA_INT, 1, 1, 0, 0, &iwork );
46
47 for ( i = 0; i < 2; ++i )
48 {
49 if ( i == 1 )
50 {
51 // Grab the queried ideal workspace size from the work arrays, free the
52 // work object, and then re-allocate the workspace with the ideal size.
53 if ( datatype == FLA_FLOAT || datatype == FLA_COMPLEX )
54 {
55 lwork = ( int ) *FLA_FLOAT_PTR( work );
56 lrwork = ( int ) *FLA_FLOAT_PTR( rwork );
57 liwork = ( int ) *FLA_INT_PTR( iwork );
58 }
59 else if ( datatype == FLA_DOUBLE || datatype == FLA_DOUBLE_COMPLEX )
60 {
61 lwork = ( int ) *FLA_DOUBLE_PTR( work );
63 liwork = ( int ) *FLA_INT_PTR( iwork );
64 }
65
66//printf( "ideal workspace for n = %d\n", n_A );
67//printf( " lwork = %d\n", lwork );
68//printf( " lrwork = %d\n", lrwork );
69//printf( " liwork = %d\n", liwork );
70
74 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work );
75 FLA_Obj_create( datatype, liwork, 1, 0, 0, &iwork );
76 if ( FLA_Obj_is_complex( A ) )
77 FLA_Obj_create( datatype, lrwork, 1, 0, 0, &rwork );
78 }
79
80 switch( datatype ) {
81
82 case FLA_FLOAT:
83 {
84 float* buff_d = ( float* ) FLA_FLOAT_PTR( d );
85 float* buff_e = ( float* ) FLA_FLOAT_PTR( e );
86 float* buff_A = ( float* ) FLA_FLOAT_PTR( A );
87 float* buff_work = ( float* ) FLA_FLOAT_PTR( work );
88 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
89
91 &n_A,
92 buff_d,
93 buff_e,
94 buff_A, &cs_A,
97 &info );
98
99 break;
100 }
101
102 case FLA_DOUBLE:
103 {
104 double* buff_d = ( double* ) FLA_DOUBLE_PTR( d );
105 double* buff_e = ( double* ) FLA_DOUBLE_PTR( e );
106 double* buff_A = ( double* ) FLA_DOUBLE_PTR( A );
107 double* buff_work = ( double* ) FLA_DOUBLE_PTR( work );
108 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
109
111 &n_A,
112 buff_d,
113 buff_e,
114 buff_A, &cs_A,
117 &info );
118
119 break;
120 }
121
122 case FLA_COMPLEX:
123 {
124 float* buff_d = ( float* ) FLA_FLOAT_PTR( d );
125 float* buff_e = ( float* ) FLA_FLOAT_PTR( e );
128 float* buff_rwork = ( float* ) FLA_FLOAT_PTR( rwork );
129 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
130
132 &n_A,
133 buff_d,
134 buff_e,
135 buff_A, &cs_A,
139 &info );
140
141 break;
142 }
143
145 {
146 double* buff_d = ( double* ) FLA_DOUBLE_PTR( d );
147 double* buff_e = ( double* ) FLA_DOUBLE_PTR( e );
150 double* buff_rwork = ( double* ) FLA_DOUBLE_PTR( rwork );
151 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
152
154 &n_A,
155 buff_d,
156 buff_e,
157 buff_A, &cs_A,
161 &info );
162
163 break;
164 }
165
166 }
167 }
168
169 FLA_Obj_free( &work );
171 if ( FLA_Obj_is_complex( A ) )
173#else
175#endif
176
177 return info;
178}
int F77_zstedc(char *compz, int *n, double *d, double *e, dcomplex *z, int *ldz, dcomplex *work, int *lwork, double *rwork, int *lrwork, int *iwork, int *liwork, int *info)
int F77_sstedc(char *compz, int *n, float *d, float *e, float *z, int *ldz, float *work, int *lwork, int *iwork, int *liwork, int *info)
int F77_cstedc(char *compz, int *n, float *d, float *e, scomplex *z, int *ldz, scomplex *work, int *lwork, float *rwork, int *lrwork, int *iwork, int *liwork, int *info)
int F77_dstedc(char *compz, int *n, double *d, double *e, double *z, int *ldz, double *work, int *lwork, int *iwork, int *liwork, int *info)

References F77_cstedc(), F77_dstedc(), F77_sstedc(), F77_zstedc(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_datatype_proj_to_real(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_is_complex(), FLA_Obj_width(), FLA_Param_map_flame_to_netlib_evd_type(), and i.

◆ FLA_Tevdr_external()

FLA_Error FLA_Tevdr_external ( FLA_Evd_type  jobz,
FLA_Obj  d,
FLA_Obj  e,
FLA_Obj  l,
FLA_Obj  A 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
19 int n_A, cs_A;
20 int lisuppz, lwork, liwork;
22 char blas_jobz;
23 char blas_range;
24 int i;
25 int vl, vu;
26 int il, iu;
27 int nzc;
28 int try_rac;
29 int n_eig_found;
30
31 //if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
32 // FLA_Tevdd_check( jobz, d, e, A );
33
34 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
35
36 datatype = FLA_Obj_datatype( A );
38
39 n_A = FLA_Obj_width( A );
41
43
44 // Hard-code some parameters.
45 blas_range = 'A';
46 nzc = n_A;
47 try_rac = TRUE;
48
49 // Allocate space for the isuppz array.
50 lisuppz = 2 * n_A;
51 FLA_Obj_create( FLA_INT, lisuppz, 1, 0, 0, &isuppz );
52
53 // Make a workspace query the first time through. This will provide us with
54 // and ideal workspace size.
55 lwork = -1;
56 liwork = -1;
57 FLA_Obj_create( dt_real, 1, 1, 0, 0, &work );
58 FLA_Obj_create( FLA_INT, 1, 1, 0, 0, &iwork );
59
60 for ( i = 0; i < 2; ++i )
61 {
62 if ( i == 1 )
63 {
64 // Grab the queried ideal workspace size from the work arrays, free the
65 // work object, and then re-allocate the workspace with the ideal size.
66 if ( datatype == FLA_FLOAT || datatype == FLA_COMPLEX )
67 {
68 lwork = ( int ) *FLA_FLOAT_PTR( work );
69 liwork = ( int ) *FLA_INT_PTR( iwork );
70 }
71 else if ( datatype == FLA_DOUBLE || datatype == FLA_DOUBLE_COMPLEX )
72 {
73 lwork = ( int ) *FLA_DOUBLE_PTR( work );
74 liwork = ( int ) *FLA_INT_PTR( iwork );
75 }
76//printf( "ideal workspace for n = %d\n", n_A );
77//printf( " lwork = %d\n", lwork );
78//printf( " liwork = %d\n", liwork );
81 FLA_Obj_create( dt_real, lwork, 1, 0, 0, &work );
82 FLA_Obj_create( FLA_INT, liwork, 1, 0, 0, &iwork );
83 }
84
85 switch( datatype ) {
86
87 case FLA_FLOAT:
88 {
89 float* buff_d = ( float* ) FLA_FLOAT_PTR( d );
90 float* buff_e = ( float* ) FLA_FLOAT_PTR( e );
91 float* buff_l = ( float* ) FLA_FLOAT_PTR( l );
92 float* buff_A = ( float* ) FLA_FLOAT_PTR( A );
93 int* buff_isuppz = ( int* ) FLA_INT_PTR( isuppz );
94 float* buff_work = ( float* ) FLA_FLOAT_PTR( work );
95 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
96
99 &n_A,
100 buff_d,
101 buff_e,
102 &vl, &vu,
103 &il, &iu,
105 buff_l,
106 buff_A, &cs_A,
107 &nzc,
109 &try_rac,
112 &info );
113
114 break;
115 }
116
117 case FLA_DOUBLE:
118 {
119 double* buff_d = ( double* ) FLA_DOUBLE_PTR( d );
120 double* buff_e = ( double* ) FLA_DOUBLE_PTR( e );
121 double* buff_l = ( double* ) FLA_DOUBLE_PTR( l );
122 double* buff_A = ( double* ) FLA_DOUBLE_PTR( A );
123 int* buff_isuppz = ( int* ) FLA_INT_PTR( isuppz );
124 double* buff_work = ( double* ) FLA_DOUBLE_PTR( work );
125 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
126
128 &blas_range,
129 &n_A,
130 buff_d,
131 buff_e,
132 &vl, &vu,
133 &il, &iu,
135 buff_l,
136 buff_A, &cs_A,
137 &nzc,
139 &try_rac,
142 &info );
143
144 break;
145 }
146
147 case FLA_COMPLEX:
148 {
149 float* buff_d = ( float* ) FLA_FLOAT_PTR( d );
150 float* buff_e = ( float* ) FLA_FLOAT_PTR( e );
151 float* buff_l = ( float* ) FLA_FLOAT_PTR( l );
153 int* buff_isuppz = ( int* ) FLA_INT_PTR( isuppz );
154 float* buff_work = ( float* ) FLA_FLOAT_PTR( work );
155 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
156
158 &blas_range,
159 &n_A,
160 buff_d,
161 buff_e,
162 &vl, &vu,
163 &il, &iu,
165 buff_l,
166 buff_A, &cs_A,
167 &nzc,
169 &try_rac,
172 &info );
173
174 break;
175 }
176
178 {
179 double* buff_d = ( double* ) FLA_DOUBLE_PTR( d );
180 double* buff_e = ( double* ) FLA_DOUBLE_PTR( e );
181 double* buff_l = ( double* ) FLA_DOUBLE_PTR( l );
183 int* buff_isuppz = ( int* ) FLA_INT_PTR( isuppz );
184 double* buff_work = ( double* ) FLA_DOUBLE_PTR( work );
185 int* buff_iwork = ( int* ) FLA_INT_PTR( iwork );
186
188 &blas_range,
189 &n_A,
190 buff_d,
191 buff_e,
192 &vl, &vu,
193 &il, &iu,
195 buff_l,
196 buff_A, &cs_A,
197 &nzc,
199 &try_rac,
202 &info );
203
204 break;
205 }
206
207 }
208 }
209
211 FLA_Obj_free( &work );
213#else
215#endif
216
217 return info;
218}
int F77_sstemr(char *jobz, char *range, int *n, float *d, float *e, int *vl, int *vu, int *il, int *iu, int *m, float *w, float *z, int *ldz, int *nzc, int *isuppz, int *tryrac, float *work, int *lwork, int *iwork, int *liwork, int *info)
int F77_zstemr(char *jobz, char *range, int *n, double *d, double *e, int *vl, int *vu, int *il, int *iu, int *m, double *w, dcomplex *z, int *ldz, int *nzc, int *isuppz, int *tryrac, double *work, int *lwork, int *iwork, int *liwork, int *info)
int F77_dstemr(char *jobz, char *range, int *n, double *d, double *e, int *vl, int *vu, int *il, int *iu, int *m, double *w, double *z, int *ldz, int *nzc, int *isuppz, int *tryrac, double *work, int *lwork, int *iwork, int *liwork, int *info)
int F77_cstemr(char *jobz, char *range, int *n, float *d, float *e, int *vl, int *vu, int *il, int *iu, int *m, float *w, scomplex *z, int *ldz, int *nzc, int *isuppz, int *tryrac, float *work, int *lwork, int *iwork, int *liwork, int *info)

References F77_cstemr(), F77_dstemr(), F77_sstemr(), F77_zstemr(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_datatype_proj_to_real(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_width(), FLA_Param_map_flame_to_netlib_evd_type(), and i.

◆ FLA_Tridiag_apply_Q_check()

FLA_Error FLA_Tridiag_apply_Q_check ( FLA_Side  side,
FLA_Uplo  uplo,
FLA_Trans  trans,
FLA_Obj  A,
FLA_Obj  t,
FLA_Obj  B 
)

References FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_nonconstant_object(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Check_valid_complex_trans(), FLA_Check_valid_leftright_side(), FLA_Check_valid_real_trans(), FLA_Check_valid_trans(), FLA_Check_valid_uplo(), FLA_Check_vector_dim_min(), FLA_Obj_is_real(), FLA_Obj_length(), and FLA_Obj_width().

◆ FLA_Tridiag_apply_Q_external()

FLA_Error FLA_Tridiag_apply_Q_external ( FLA_Side  side,
FLA_Uplo  uplo,
FLA_Trans  trans,
FLA_Obj  A,
FLA_Obj  t,
FLA_Obj  B 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 // int m_A, n_A;
19 int m_B, n_B;
20 int cs_A;
21 int cs_B;
22 int k_t;
23 int lwork;
24 char blas_side;
25 char blas_uplo;
26 char blas_trans;
28 int i;
29
30 //if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
31 // FLA_Apply_Q_check( side, trans, storev, A, t, B );
32
33 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
34
35 datatype = FLA_Obj_datatype( A );
36
37 // m_A = FLA_Obj_length( A );
38 // n_A = FLA_Obj_width( A );
40
41 m_B = FLA_Obj_length( B );
42 n_B = FLA_Obj_width( B );
44
46
50
51
52 // Make a workspace query the first time through. This will provide us with
53 // and ideal workspace size based on an internal block size.
54 lwork = -1;
55 FLA_Obj_create( datatype, 1, 1, 0, 0, &work );
56
57 for ( i = 0; i < 2; ++i )
58 {
59 if ( i == 1 )
60 {
61 // Grab the queried ideal workspace size from the work array, free the
62 // work object, and then re-allocate the workspace with the ideal size.
63 if ( datatype == FLA_FLOAT || datatype == FLA_COMPLEX )
64 lwork = ( int ) *FLA_FLOAT_PTR( work );
65 else if ( datatype == FLA_DOUBLE || datatype == FLA_DOUBLE_COMPLEX )
66 lwork = ( int ) *FLA_DOUBLE_PTR( work );
67
69 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work );
70 }
71
72 switch( datatype ){
73
74 case FLA_FLOAT:
75 {
76 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
77 float *buff_t = ( float * ) FLA_FLOAT_PTR( t );
78 float *buff_B = ( float * ) FLA_FLOAT_PTR( B );
79 float *buff_work = ( float * ) FLA_FLOAT_PTR( work );
80
82 &blas_uplo,
84 &m_B,
85 &n_B,
86 buff_A, &cs_A,
87 buff_t,
88 buff_B, &cs_B,
90 &info );
91
92 break;
93 }
94
95 case FLA_DOUBLE:
96 {
97 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
98 double *buff_t = ( double * ) FLA_DOUBLE_PTR( t );
99 double *buff_B = ( double * ) FLA_DOUBLE_PTR( B );
100 double *buff_work = ( double * ) FLA_DOUBLE_PTR( work );
101
103 &blas_uplo,
104 &blas_trans,
105 &m_B,
106 &n_B,
107 buff_A, &cs_A,
108 buff_t,
109 buff_B, &cs_B,
111 &info );
112
113 break;
114 }
115
116 case FLA_COMPLEX:
117 {
122
124 &blas_uplo,
125 &blas_trans,
126 &m_B,
127 &n_B,
128 buff_A, &cs_A,
129 buff_t,
130 buff_B, &cs_B,
132 &info );
133
134 break;
135 }
136
138 {
143
145 &blas_uplo,
146 &blas_trans,
147 &m_B,
148 &n_B,
149 buff_A, &cs_A,
150 buff_t,
151 buff_B, &cs_B,
153 &info );
154
155 break;
156 }
157
158 }
159 }
160
161 FLA_Obj_free( &work );
162#else
164#endif
165
166 return info;
167}
int F77_cunmtr(char *side, char *uplo, char *trans, int *m, int *n, scomplex *a, int *lda, scomplex *tau, scomplex *c, int *ldc, scomplex *work, int *lwork, int *info)
int F77_dormtr(char *side, char *uplo, char *trans, int *m, int *n, double *a, int *lda, double *tau, double *c, int *ldc, double *work, int *lwork, int *info)
int F77_zunmtr(char *side, char *uplo, char *trans, int *m, int *n, dcomplex *a, int *lda, dcomplex *tau, dcomplex *c, int *ldc, dcomplex *work, int *lwork, int *info)
int F77_sormtr(char *side, char *uplo, char *trans, int *m, int *n, float *a, int *lda, float *tau, float *c, int *ldc, float *work, int *lwork, int *info)

References F77_cunmtr(), F77_dormtr(), F77_sormtr(), F77_zunmtr(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_vector_dim(), FLA_Obj_width(), FLA_Param_map_flame_to_netlib_side(), FLA_Param_map_flame_to_netlib_trans(), FLA_Param_map_flame_to_netlib_uplo(), and i.

◆ FLA_Tridiag_blk_external()

FLA_Error FLA_Tridiag_blk_external ( FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  t 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 int n_A, cs_A;
19 int lwork;
20 FLA_Obj d, e, work_obj;
21 char blas_uplo;
22
24 FLA_Tridiag_check( uplo, A, t );
25
26 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
27
28 datatype = FLA_Obj_datatype( A );
29
30 n_A = FLA_Obj_width( A );
32
35
37 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work_obj );
38
40
41
42 switch( datatype ){
43
44 case FLA_FLOAT:
45 {
46 float* buff_A = ( float * ) FLA_FLOAT_PTR( A );
47 float* buff_d = ( float * ) FLA_FLOAT_PTR( d );
48 float* buff_e = ( float * ) FLA_FLOAT_PTR( e );
49 float* buff_t = ( float * ) FLA_FLOAT_PTR( t );
50 float* buff_work = ( float * ) FLA_FLOAT_PTR( work_obj );
51
53 &n_A,
54 buff_A, &cs_A,
55 buff_d,
56 buff_e,
57 buff_t,
59 &lwork,
60 &info );
61
62 break;
63 }
64
65 case FLA_DOUBLE:
66 {
67 double* buff_A = ( double * ) FLA_DOUBLE_PTR( A );
68 double* buff_d = ( double * ) FLA_DOUBLE_PTR( d );
69 double* buff_e = ( double * ) FLA_DOUBLE_PTR( e );
70 double* buff_t = ( double * ) FLA_DOUBLE_PTR( t );
71 double* buff_work = ( double * ) FLA_DOUBLE_PTR( work_obj );
72
74 &n_A,
75 buff_A, &cs_A,
76 buff_d,
77 buff_e,
78 buff_t,
80 &lwork,
81 &info );
82
83 break;
84 }
85
86 case FLA_COMPLEX:
87 {
89 float* buff_d = ( float * ) FLA_FLOAT_PTR( d );
90 float* buff_e = ( float * ) FLA_FLOAT_PTR( e );
93
95 &n_A,
96 buff_A, &cs_A,
97 buff_d,
98 buff_e,
99 buff_t,
100 buff_work,
101 &lwork,
102 &info );
103
104 break;
105 }
106
108 {
110 double* buff_d = ( double * ) FLA_DOUBLE_PTR( d );
111 double* buff_e = ( double * ) FLA_DOUBLE_PTR( e );
114
116 &n_A,
117 buff_A, &cs_A,
118 buff_d,
119 buff_e,
120 buff_t,
121 buff_work,
122 &lwork,
123 &info );
124
125 break;
126 }
127
128 }
129
130 FLA_Obj_free( &d );
131 FLA_Obj_free( &e );
133#else
135#endif
136
137 return info;
138}
FLA_Error FLA_Tridiag_check(FLA_Uplo uplo, FLA_Obj A, FLA_Obj t)
Definition FLA_Tridiag_check.c:13
int F77_ssytrd(char *uplo, int *n, float *a, int *lda, float *d, float *e, float *tau, float *work, int *lwork, int *info)
int F77_zhetrd(char *uplo, int *n, dcomplex *a, int *lda, double *d, double *e, dcomplex *tau, dcomplex *work, int *lwork, int *info)
int F77_chetrd(char *uplo, int *n, scomplex *a, int *lda, float *d, float *e, scomplex *tau, scomplex *work, int *lwork, int *info)
int F77_dsytrd(char *uplo, int *n, double *a, int *lda, double *d, double *e, double *tau, double *work, int *lwork, int *info)

References F77_chetrd(), F77_dsytrd(), F77_ssytrd(), F77_zhetrd(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_datatype_proj_to_real(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_width(), FLA_Param_map_flame_to_netlib_uplo(), FLA_Query_blocksize(), FLA_Tridiag_check(), and i.

Referenced by FLA_Tridiag_blk_ext().

◆ FLA_Tridiag_check()

FLA_Error FLA_Tridiag_check ( FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  t 
)

◆ FLA_Tridiag_form_Q_check()

FLA_Error FLA_Tridiag_form_Q_check ( FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  t 
)

◆ FLA_Tridiag_form_Q_external()

FLA_Error FLA_Tridiag_form_Q_external ( FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  t 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 int m_A;
19 int cs_A;
20 int lwork;
21 char blas_uplo;
23
26
27 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
28
29 datatype = FLA_Obj_datatype( A );
30
31 m_A = FLA_Obj_length( A );
33
35
36 lwork = max( 1, ( m_A - 1 ) ) * FLA_Query_blocksize( datatype, FLA_DIMENSION_MIN );
37
38 FLA_Obj_create( datatype, lwork, 1, 0, 0, &work );
39
40
41 switch( datatype ){
42
43 case FLA_FLOAT:
44 {
45 float* buff_A = ( float * ) FLA_FLOAT_PTR( A );
46 float* buff_t = ( float * ) FLA_FLOAT_PTR( t );
47 float* buff_work = ( float * ) FLA_FLOAT_PTR( work );
48
50 &m_A,
51 buff_A, &cs_A,
52 buff_t,
54 &info );
55
56 break;
57 }
58
59 case FLA_DOUBLE:
60 {
61 double* buff_A = ( double * ) FLA_DOUBLE_PTR( A );
62 double* buff_t = ( double * ) FLA_DOUBLE_PTR( t );
63 double* buff_work = ( double * ) FLA_DOUBLE_PTR( work );
64
66 &m_A,
67 buff_A, &cs_A,
68 buff_t,
70 &info );
71
72 break;
73 }
74
75 case FLA_COMPLEX:
76 {
80
82 &m_A,
83 buff_A, &cs_A,
84 buff_t,
86 &info );
87
88 break;
89 }
90
92 {
96
98 &m_A,
99 buff_A, &cs_A,
100 buff_t,
102 &info );
103
104 break;
105 }
106
107 }
108
109 FLA_Obj_free( &work );
110#else
112#endif
113
114 return info;
115}
FLA_Error FLA_Tridiag_form_Q_check(FLA_Uplo uplo, FLA_Obj A, FLA_Obj t)
Definition FLA_Tridiag_form_Q_check.c:13
int F77_dorgtr(char *uplo, int *m, double *a, int *lda, double *tau, double *work, int *lwork, int *info)
int F77_sorgtr(char *uplo, int *m, float *a, int *lda, float *tau, float *work, int *lwork, int *info)
int F77_zungtr(char *uplo, int *m, dcomplex *a, int *lda, dcomplex *tau, dcomplex *work, int *lwork, int *info)
int F77_cungtr(char *uplo, int *m, scomplex *a, int *lda, scomplex *tau, scomplex *work, int *lwork, int *info)

References F77_cungtr(), F77_dorgtr(), F77_sorgtr(), F77_zungtr(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Param_map_flame_to_netlib_uplo(), FLA_Query_blocksize(), FLA_Tridiag_form_Q_check(), and i.

◆ FLA_Tridiag_unb_external()

FLA_Error FLA_Tridiag_unb_external ( FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  t 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 int n_A, cs_A;
19 FLA_Obj d, e;
20 char blas_uplo;
21
23 FLA_Tridiag_check( uplo, A, t );
24
25 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
26
27 datatype = FLA_Obj_datatype( A );
28
29 n_A = FLA_Obj_width( A );
31
34
36
37
38 switch( datatype ){
39
40 case FLA_FLOAT:
41 {
42 float* buff_A = ( float * ) FLA_FLOAT_PTR( A );
43 float* buff_d = ( float * ) FLA_FLOAT_PTR( d );
44 float* buff_e = ( float * ) FLA_FLOAT_PTR( e );
45 float* buff_t = ( float * ) FLA_FLOAT_PTR( t );
46
48 &n_A,
49 buff_A, &cs_A,
50 buff_d,
51 buff_e,
52 buff_t,
53 &info );
54
55 break;
56 }
57
58 case FLA_DOUBLE:
59 {
60 double* buff_A = ( double * ) FLA_DOUBLE_PTR( A );
61 double* buff_d = ( double * ) FLA_DOUBLE_PTR( d );
62 double* buff_e = ( double * ) FLA_DOUBLE_PTR( e );
63 double* buff_t = ( double * ) FLA_DOUBLE_PTR( t );
64
66 &n_A,
67 buff_A, &cs_A,
68 buff_d,
69 buff_e,
70 buff_t,
71 &info );
72
73 break;
74 }
75
76 case FLA_COMPLEX:
77 {
79 float* buff_d = ( float * ) FLA_FLOAT_PTR( d );
80 float* buff_e = ( float * ) FLA_FLOAT_PTR( e );
82
84 &n_A,
85 buff_A, &cs_A,
86 buff_d,
87 buff_e,
88 buff_t,
89 &info );
90
91 break;
92 }
93
95 {
97 double* buff_d = ( double * ) FLA_DOUBLE_PTR( d );
98 double* buff_e = ( double * ) FLA_DOUBLE_PTR( e );
100
102 &n_A,
103 buff_A, &cs_A,
104 buff_d,
105 buff_e,
106 buff_t,
107 &info );
108
109 break;
110 }
111
112 }
113
114 FLA_Obj_free( &d );
115 FLA_Obj_free( &e );
116#else
118#endif
119
120 return info;
121}
int F77_chetd2(char *uplo, int *n, scomplex *a, int *lda, float *d, float *e, scomplex *tau, int *info)
int F77_dsytd2(char *uplo, int *n, double *a, int *lda, double *d, double *e, double *tau, int *info)
int F77_zhetd2(char *uplo, int *n, dcomplex *a, int *lda, double *d, double *e, dcomplex *tau, int *info)
int F77_ssytd2(char *uplo, int *n, float *a, int *lda, float *d, float *e, float *tau, int *info)

References F77_chetd2(), F77_dsytd2(), F77_ssytd2(), F77_zhetd2(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_datatype_proj_to_real(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_width(), FLA_Param_map_flame_to_netlib_uplo(), FLA_Tridiag_check(), and i.

Referenced by FLA_Tridiag_unb_ext().

◆ FLA_Tridiag_UT_check()

FLA_Error FLA_Tridiag_UT_check ( FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  T 
)

◆ FLA_Tridiag_UT_extract_diagonals_check()

FLA_Error FLA_Tridiag_UT_extract_diagonals_check ( FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  d,
FLA_Obj  e 
)

◆ FLA_Tridiag_UT_extract_real_diagonals_check()

FLA_Error FLA_Tridiag_UT_extract_real_diagonals_check ( FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  d,
FLA_Obj  e 
)

◆ FLA_Tridiag_UT_form_Q_check()

FLA_Error FLA_Tridiag_UT_form_Q_check ( FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  Q 
)

◆ FLA_Tridiag_UT_internal_check()

FLA_Error FLA_Tridiag_UT_internal_check ( FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  T,
fla_tridiagut_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 // Verify that the object element types are identical.
24
25 return FLA_SUCCESS;
26}

References FLA_Check_identical_object_elemtype(), and FLA_Check_null_pointer().

Referenced by FLA_Tridiag_UT_internal().

◆ FLA_Tridiag_UT_realify_check()

FLA_Error FLA_Tridiag_UT_realify_check ( FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  d 
)

◆ FLA_Tridiag_UT_realify_subdiagonal_check()

FLA_Error FLA_Tridiag_UT_realify_subdiagonal_check ( FLA_Obj  b,
FLA_Obj  d 
)

◆ FLA_Tridiag_UT_recover_tau_check()

FLA_Error FLA_Tridiag_UT_recover_tau_check ( FLA_Obj  T,
FLA_Obj  tau 
)

◆ FLA_Tridiag_UT_scale_diagonals_check()

FLA_Error FLA_Tridiag_UT_scale_diagonals_check ( FLA_Uplo  uplo,
FLA_Obj  alpha,
FLA_Obj  A 
)

◆ FLA_Tridiag_UT_shift_U_check()

FLA_Error FLA_Tridiag_UT_shift_U_check ( FLA_Uplo  uplo,
FLA_Obj  A 
)

◆ FLA_Trinv()

FLA_Error FLA_Trinv ( FLA_Uplo  uplo,
FLA_Diag  diag,
FLA_Obj  A 
)
18{
19 FLA_Datatype datatype;
20 int m_A, r_val = 0;
22
23 // Check parameters.
25 FLA_Trinv_check( uplo, diag, A );
26
27 // Determine the datatype of the operation.
28 datatype = FLA_Obj_datatype( A );
29
30 // Extract the appropriate blocksize for the given datatype.
32
33 // Determine the dimension of A.
34 m_A = FLA_Obj_length( A );
35
36 // Invoke FLA_Trinv_internal() with the appropriate control tree.
38 {
40 }
41 else if ( FLA_TRINV_VAR3_BLOCKSIZE < m_A )
42 {
44 }
45
46 return r_val;
47}
fla_blocksize_t * fla_trinv_var3_bsize
Definition FLA_Trinv_cntl_init.c:19
fla_trinv_t * fla_trinv_cntl_leaf
Definition FLA_Trinv_cntl_init.c:17
fla_trinv_t * fla_trinv_cntl
Definition FLA_Trinv_cntl_init.c:18
FLA_Error FLA_Trinv_internal(FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A, fla_trinv_t *cntl)
Definition FLA_Trinv_internal.c:16
FLA_Error FLA_Trinv_check(FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A)
Definition FLA_Trinv_check.c:13
dim_t FLA_Blocksize_extract(FLA_Datatype dt, fla_blocksize_t *bp)
Definition FLA_Blocksize.c:116

References FLA_Blocksize_extract(), FLA_Check_error_level(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Trinv_check(), fla_trinv_cntl, fla_trinv_cntl_leaf, FLA_Trinv_internal(), fla_trinv_var3_bsize, and i.

◆ FLA_Trinv_blk_external()

FLA_Error FLA_Trinv_blk_external ( FLA_Uplo  uplo,
FLA_Diag  diag,
FLA_Obj  A 
)
14{
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 int info;
18 FLA_Datatype datatype;
19 int m_A, cs_A;
20 char blas_uplo;
21 char blas_diag;
22
24 FLA_Trinv_check( uplo, diag, A );
25
26 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
27
28 datatype = FLA_Obj_datatype( A );
29
30 m_A = FLA_Obj_length( A );
32
35
36
37 switch( datatype ){
38
39 case FLA_FLOAT:
40 {
41 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
42
44 &blas_diag,
45 &m_A,
46 buff_A, &cs_A,
47 &info );
48
49 break;
50 }
51
52 case FLA_DOUBLE:
53 {
54 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
55
57 &blas_diag,
58 &m_A,
59 buff_A, &cs_A,
60 &info );
61
62 break;
63 }
64
65 case FLA_COMPLEX:
66 {
68
70 &blas_diag,
71 &m_A,
72 buff_A, &cs_A,
73 &info );
74
75 break;
76 }
77
79 {
81
83 &blas_diag,
84 &m_A,
85 buff_A, &cs_A,
86 &info );
87
88 break;
89 }
90
91 }
92
93 // Convert to zero-based indexing, if an index was reported.
94 if ( info > 0 ) r_val = info - 1;
95 else r_val = FLA_SUCCESS;
96
97#else
99#endif
100
101 return r_val;
102}
int F77_ctrtri(char *uplo, char *diag, int *n, scomplex *a, int *lda, int *info)
int F77_strtri(char *uplo, char *diag, int *n, float *a, int *lda, int *info)
int F77_ztrtri(char *uplo, char *diag, int *n, dcomplex *a, int *lda, int *info)
int F77_dtrtri(char *uplo, char *diag, int *n, double *a, int *lda, int *info)
void FLA_Param_map_flame_to_netlib_diag(FLA_Diag diag, void *blas_diag)
Definition FLA_Param.c:95

References F77_ctrtri(), F77_dtrtri(), F77_strtri(), F77_ztrtri(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Param_map_flame_to_netlib_diag(), FLA_Param_map_flame_to_netlib_uplo(), FLA_Trinv_check(), and i.

Referenced by FLA_SPDinv_blk_external(), FLA_Trinv_ln_blk_ext(), FLA_Trinv_lu_blk_ext(), FLA_Trinv_un_blk_ext(), and FLA_Trinv_uu_blk_ext().

◆ FLA_Trinv_check()

FLA_Error FLA_Trinv_check ( FLA_Uplo  uplo,
FLA_Diag  diag,
FLA_Obj  A 
)

◆ FLA_Trinv_internal_check()

FLA_Error FLA_Trinv_internal_check ( FLA_Uplo  uplo,
FLA_Diag  diag,
FLA_Obj  A,
fla_trinv_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 return FLA_SUCCESS;
22}

References FLA_Check_null_pointer().

Referenced by FLA_Trinv_internal().

◆ FLA_Trinv_ln_blk_ext()

FLA_Error FLA_Trinv_ln_blk_ext ( FLA_Obj  A)
105{
107}
FLA_Error FLA_Trinv_blk_external(FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A)
Definition FLA_Trinv_blk_external.c:13

References FLA_Trinv_blk_external(), and i.

Referenced by FLA_Trinv_ln().

◆ FLA_Trinv_ln_task()

FLA_Error FLA_Trinv_ln_task ( FLA_Obj  A,
fla_trinv_t cntl 
)
22{
23 //return FLA_Trinv_unb_external( FLA_LOWER_TRIANGULAR, FLA_NONUNIT_DIAG, A );
26}
fla_trinv_t * fla_trinv_cntl_leaf
Definition FLA_Trinv_cntl_init.c:17

References fla_trinv_cntl_leaf, FLA_Trinv_internal(), and i.

◆ FLA_Trinv_ln_unb_ext()

FLA_Error FLA_Trinv_ln_unb_ext ( FLA_Obj  A)
105{
107}
FLA_Error FLA_Trinv_unb_external(FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A)
Definition FLA_Trinv_unb_external.c:13

References FLA_Trinv_unb_external(), and i.

Referenced by FLA_Trinv_ln().

◆ FLA_Trinv_lu_blk_ext()

FLA_Error FLA_Trinv_lu_blk_ext ( FLA_Obj  A)

References FLA_Trinv_blk_external(), and i.

Referenced by FLA_Trinv_lu().

◆ FLA_Trinv_lu_task()

FLA_Error FLA_Trinv_lu_task ( FLA_Obj  A,
fla_trinv_t cntl 
)
29{
30 //return FLA_Trinv_unb_external( FLA_LOWER_TRIANGULAR, FLA_UNIT_DIAG, A );
33}

References fla_trinv_cntl_leaf, FLA_Trinv_internal(), and i.

◆ FLA_Trinv_lu_unb_ext()

FLA_Error FLA_Trinv_lu_unb_ext ( FLA_Obj  A)

References FLA_Trinv_unb_external(), and i.

Referenced by FLA_Trinv_lu().

◆ FLA_Trinv_task()

FLA_Error FLA_Trinv_task ( FLA_Uplo  uplo,
FLA_Diag  diag,
FLA_Obj  A,
fla_trinv_t cntl 
)
16{
17 return FLA_Trinv_internal( uplo, diag, A,
19}

References fla_trinv_cntl_leaf, FLA_Trinv_internal(), and i.

Referenced by FLASH_Queue_exec_task().

◆ FLA_Trinv_un_blk_ext()

FLA_Error FLA_Trinv_un_blk_ext ( FLA_Obj  A)

References FLA_Trinv_blk_external(), and i.

Referenced by FLA_Trinv_un().

◆ FLA_Trinv_un_task()

FLA_Error FLA_Trinv_un_task ( FLA_Obj  A,
fla_trinv_t cntl 
)
36{
37 //return FLA_Trinv_unb_external( FLA_UPPER_TRIANGULAR, FLA_NONUNIT_DIAG, A );
40}

References fla_trinv_cntl_leaf, FLA_Trinv_internal(), and i.

◆ FLA_Trinv_un_unb_ext()

FLA_Error FLA_Trinv_un_unb_ext ( FLA_Obj  A)

References FLA_Trinv_unb_external(), and i.

Referenced by FLA_Trinv_un().

◆ FLA_Trinv_unb_external()

FLA_Error FLA_Trinv_unb_external ( FLA_Uplo  uplo,
FLA_Diag  diag,
FLA_Obj  A 
)
14{
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 int info;
18 FLA_Datatype datatype;
19 int m_A, cs_A;
20 char blas_uplo;
21 char blas_diag;
22
24 FLA_Trinv_check( uplo, diag, A );
25
26 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
27
28 datatype = FLA_Obj_datatype( A );
29
30 m_A = FLA_Obj_length( A );
32
35
36
37 switch( datatype ){
38
39 case FLA_FLOAT:
40 {
41 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
42
44 &blas_diag,
45 &m_A,
46 buff_A, &cs_A,
47 &info );
48
49 break;
50 }
51
52 case FLA_DOUBLE:
53 {
54 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
55
57 &blas_diag,
58 &m_A,
59 buff_A, &cs_A,
60 &info );
61
62 break;
63 }
64
65 case FLA_COMPLEX:
66 {
68
70 &blas_diag,
71 &m_A,
72 buff_A, &cs_A,
73 &info );
74
75 break;
76 }
77
79 {
81
83 &blas_diag,
84 &m_A,
85 buff_A, &cs_A,
86 &info );
87
88 break;
89 }
90
91 }
92
93 // Convert to zero-based indexing, if an index was reported.
94 if ( info > 0 ) r_val = info - 1;
95 else r_val = FLA_SUCCESS;
96
97#else
99#endif
100
101 return r_val;
102}
int F77_strti2(char *uplo, char *diag, int *n, float *a, int *lda, int *info)
int F77_ctrti2(char *uplo, char *diag, int *n, scomplex *a, int *lda, int *info)
int F77_ztrti2(char *uplo, char *diag, int *n, dcomplex *a, int *lda, int *info)
int F77_dtrti2(char *uplo, char *diag, int *n, double *a, int *lda, int *info)

References F77_ctrti2(), F77_dtrti2(), F77_strti2(), F77_ztrti2(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Param_map_flame_to_netlib_diag(), FLA_Param_map_flame_to_netlib_uplo(), FLA_Trinv_check(), and i.

Referenced by FLA_Trinv_ln_unb_ext(), FLA_Trinv_lu_unb_ext(), FLA_Trinv_un_unb_ext(), and FLA_Trinv_uu_unb_ext().

◆ FLA_Trinv_uu_blk_ext()

FLA_Error FLA_Trinv_uu_blk_ext ( FLA_Obj  A)

References FLA_Trinv_blk_external(), and i.

Referenced by FLA_Trinv_uu().

◆ FLA_Trinv_uu_task()

FLA_Error FLA_Trinv_uu_task ( FLA_Obj  A,
fla_trinv_t cntl 
)
43{
44 //return FLA_Trinv_unb_external( FLA_UPPER_TRIANGULAR, FLA_UNIT_DIAG, A );
47}

References fla_trinv_cntl_leaf, FLA_Trinv_internal(), and i.

◆ FLA_Trinv_uu_unb_ext()

FLA_Error FLA_Trinv_uu_unb_ext ( FLA_Obj  A)

References FLA_Trinv_unb_external(), and i.

Referenced by FLA_Trinv_uu().

◆ FLA_Trsm_piv_task()

FLA_Error FLA_Trsm_piv_task ( FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  p,
fla_trsm_t cntl 
)
14{
16 p, B );
17
20 FLA_ONE, A, B );
21
22 return FLA_SUCCESS;
23}
FLA_Error FLA_Trsm_external(FLA_Side side, FLA_Uplo uplo, FLA_Trans trans, FLA_Diag diag, FLA_Obj alpha, FLA_Obj A, FLA_Obj B)
Definition FLA_Trsm_external.c:13
FLA_Error FLA_Apply_pivots(FLA_Side side, FLA_Trans trans, FLA_Obj p, FLA_Obj A)
Definition FLA_Apply_pivots.c:15

References FLA_Apply_pivots(), FLA_ONE, FLA_Trsm_external(), and i.

Referenced by FLASH_Queue_exec_task(), and FLASH_Trsm_piv().

◆ FLA_Ttmm()

FLA_Error FLA_Ttmm ( FLA_Uplo  uplo,
FLA_Obj  A 
)
18{
19 FLA_Datatype datatype;
20 int m_A, r_val = 0;
22
23 // Check parameters.
25 FLA_Ttmm_check( uplo, A );
26
27 // Determine the datatype of the operation.
28 datatype = FLA_Obj_datatype( A );
29
30 // Extract the appropriate blocksize for the given datatype.
32
33 // Determine the dimension of A.
34 m_A = FLA_Obj_length( A );
35
36 // Invoke FLA_Ttmm_internal() with the appropriate control tree.
38 {
40 }
41 else if ( FLA_TTMM_VAR1_BLOCKSIZE < m_A )
42 {
44 }
45
46 return r_val;
47}
fla_blocksize_t * fla_ttmm_var1_bsize
Definition FLA_Ttmm_cntl_init.c:19
fla_ttmm_t * fla_ttmm_cntl
Definition FLA_Ttmm_cntl_init.c:18
fla_ttmm_t * fla_ttmm_cntl_leaf
Definition FLA_Ttmm_cntl_init.c:17
FLA_Error FLA_Ttmm_internal(FLA_Uplo uplo, FLA_Obj A, fla_ttmm_t *cntl)
Definition FLA_Ttmm_internal.c:16
FLA_Error FLA_Ttmm_check(FLA_Uplo uplo, FLA_Obj A)
Definition FLA_Ttmm_check.c:13

References FLA_Blocksize_extract(), FLA_Check_error_level(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Ttmm_check(), fla_ttmm_cntl, fla_ttmm_cntl_leaf, FLA_Ttmm_internal(), fla_ttmm_var1_bsize, and i.

◆ FLA_Ttmm_blk_external()

FLA_Error FLA_Ttmm_blk_external ( FLA_Uplo  uplo,
FLA_Obj  A 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 int m_A, cs_A;
19 char blas_uplo;
20
22 FLA_Ttmm_check( uplo, A );
23
24 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
25
26 datatype = FLA_Obj_datatype( A );
27
28 m_A = FLA_Obj_length( A );
30
32
33
34 switch( datatype ){
35
36 case FLA_FLOAT:
37 {
38 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
39
41 &m_A,
42 buff_A, &cs_A,
43 &info );
44
45 break;
46 }
47
48 case FLA_DOUBLE:
49 {
50 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
51
53 &m_A,
54 buff_A, &cs_A,
55 &info );
56
57 break;
58 }
59
60 case FLA_COMPLEX:
61 {
63
65 &m_A,
66 buff_A, &cs_A,
67 &info );
68
69 break;
70 }
71
73 {
75
77 &m_A,
78 buff_A, &cs_A,
79 &info );
80
81 break;
82 }
83
84 }
85#else
87#endif
88
89 return info;
90}
int F77_dlauum(char *uplo, int *n, double *a, int *lda, int *info)
int F77_clauum(char *uplo, int *n, scomplex *a, int *lda, int *info)
int F77_zlauum(char *uplo, int *n, dcomplex *a, int *lda, int *info)
int F77_slauum(char *uplo, int *n, float *a, int *lda, int *info)

References F77_clauum(), F77_dlauum(), F77_slauum(), F77_zlauum(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Param_map_flame_to_netlib_uplo(), FLA_Ttmm_check(), and i.

Referenced by FLA_SPDinv_blk_external(), FLA_Ttmm_l_blk_ext(), and FLA_Ttmm_u_blk_ext().

◆ FLA_Ttmm_check()

FLA_Error FLA_Ttmm_check ( FLA_Uplo  uplo,
FLA_Obj  A 
)

◆ FLA_Ttmm_internal_check()

FLA_Error FLA_Ttmm_internal_check ( FLA_Uplo  uplo,
FLA_Obj  A,
fla_ttmm_t cntl 
)
14{
16
17 // Abort if the control structure is NULL.
18 e_val = FLA_Check_null_pointer( ( void* ) cntl );
20
21 return FLA_SUCCESS;
22}

References FLA_Check_null_pointer().

Referenced by FLA_Ttmm_internal().

◆ FLA_Ttmm_l_blk_ext()

FLA_Error FLA_Ttmm_l_blk_ext ( FLA_Obj  A)
93{
95}
FLA_Error FLA_Ttmm_blk_external(FLA_Uplo uplo, FLA_Obj A)
Definition FLA_Ttmm_blk_external.c:13

References FLA_Ttmm_blk_external(), and i.

Referenced by FLA_Ttmm_l().

◆ FLA_Ttmm_l_task()

FLA_Error FLA_Ttmm_l_task ( FLA_Obj  A,
fla_ttmm_t cntl 
)
22{
23 //return FLA_Ttmm_unb_external( FLA_LOWER_TRIANGULAR, A );
26}
fla_ttmm_t * fla_ttmm_cntl_leaf
Definition FLA_Ttmm_cntl_init.c:17

References fla_ttmm_cntl_leaf, FLA_Ttmm_internal(), and i.

◆ FLA_Ttmm_l_unb_ext()

FLA_Error FLA_Ttmm_l_unb_ext ( FLA_Obj  A)
93{
95}
FLA_Error FLA_Ttmm_unb_external(FLA_Uplo uplo, FLA_Obj A)
Definition FLA_Ttmm_unb_external.c:13

References FLA_Ttmm_unb_external(), and i.

Referenced by FLA_Ttmm_l().

◆ FLA_Ttmm_task()

FLA_Error FLA_Ttmm_task ( FLA_Uplo  uplo,
FLA_Obj  A,
fla_ttmm_t cntl 
)
16{
17 return FLA_Ttmm_internal( uplo, A,
19}

References fla_ttmm_cntl_leaf, FLA_Ttmm_internal(), and i.

Referenced by FLASH_Queue_exec_task().

◆ FLA_Ttmm_u_blk_ext()

FLA_Error FLA_Ttmm_u_blk_ext ( FLA_Obj  A)
98{
100}

References FLA_Ttmm_blk_external(), and i.

Referenced by FLA_Ttmm_u().

◆ FLA_Ttmm_u_task()

FLA_Error FLA_Ttmm_u_task ( FLA_Obj  A,
fla_ttmm_t cntl 
)
29{
30 //return FLA_Ttmm_unb_external( FLA_UPPER_TRIANGULAR, A );
33}

References fla_ttmm_cntl_leaf, FLA_Ttmm_internal(), and i.

◆ FLA_Ttmm_u_unb_ext()

FLA_Error FLA_Ttmm_u_unb_ext ( FLA_Obj  A)
98{
100}

References FLA_Ttmm_unb_external(), and i.

Referenced by FLA_Ttmm_u().

◆ FLA_Ttmm_unb_external()

FLA_Error FLA_Ttmm_unb_external ( FLA_Uplo  uplo,
FLA_Obj  A 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 int m_A, cs_A;
19 char blas_uplo;
20
22 FLA_Ttmm_check( uplo, A );
23
24 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
25
26 datatype = FLA_Obj_datatype( A );
27
28 m_A = FLA_Obj_length( A );
30
32
33
34 switch( datatype ){
35
36 case FLA_FLOAT:
37 {
38 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
39
41 &m_A,
42 buff_A, &cs_A,
43 &info );
44
45 break;
46 }
47
48 case FLA_DOUBLE:
49 {
50 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
51
53 &m_A,
54 buff_A, &cs_A,
55 &info );
56
57 break;
58 }
59
60 case FLA_COMPLEX:
61 {
63
65 &m_A,
66 buff_A, &cs_A,
67 &info );
68
69 break;
70 }
71
73 {
75
77 &m_A,
78 buff_A, &cs_A,
79 &info );
80
81 break;
82 }
83
84 }
85#else
87#endif
88
89 return info;
90}
int F77_slauu2(char *uplo, int *n, float *a, int *lda, int *info)
int F77_dlauu2(char *uplo, int *n, double *a, int *lda, int *info)
int F77_clauu2(char *uplo, int *n, scomplex *a, int *lda, int *info)
int F77_zlauu2(char *uplo, int *n, dcomplex *a, int *lda, int *info)

References F77_clauu2(), F77_dlauu2(), F77_slauu2(), F77_zlauu2(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Param_map_flame_to_netlib_uplo(), FLA_Ttmm_check(), and i.

Referenced by FLA_Ttmm_l_unb_ext(), and FLA_Ttmm_u_unb_ext().

◆ FLA_UDdate_UT_check()

FLA_Error FLA_UDdate_UT_check ( FLA_Obj  R,
FLA_Obj  C,
FLA_Obj  D,
FLA_Obj  T 
)

◆ FLA_UDdate_UT_inc_check()

FLA_Error FLA_UDdate_UT_inc_check ( FLA_Obj  R,
FLA_Obj  C,
FLA_Obj  D,
FLA_Obj  T,
FLA_Obj  W 
)

References FLA_Check_conformal_dims(), FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_nonconstant_object(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Check_square(), FLA_Obj_length(), and FLA_Obj_width().

Referenced by FLASH_UDdate_UT_inc().

◆ FLA_UDdate_UT_inc_solve_check()

FLA_Error FLA_UDdate_UT_inc_solve_check ( FLA_Obj  R,
FLA_Obj  bR,
FLA_Obj  x 
)

◆ FLA_UDdate_UT_inc_update_rhs_check()

FLA_Error FLA_UDdate_UT_inc_update_rhs_check ( FLA_Obj  T,
FLA_Obj  bR,
FLA_Obj  C,
FLA_Obj  bC,
FLA_Obj  D,
FLA_Obj  bD 
)

References FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_matrix_matrix_dims(), FLA_Check_nonconstant_object(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Obj_length(), and FLA_Obj_width().

Referenced by FLASH_UDdate_UT_inc_update_rhs().

◆ FLA_UDdate_UT_internal_check()

FLA_Error FLA_UDdate_UT_internal_check ( FLA_Obj  R,
FLA_Obj  C,
FLA_Obj  D,
FLA_Obj  T,
fla_uddateut_t cntl 
)

◆ FLA_UDdate_UT_solve_check()

FLA_Error FLA_UDdate_UT_solve_check ( FLA_Obj  R,
FLA_Obj  bR,
FLA_Obj  x 
)

◆ FLA_UDdate_UT_task()

FLA_Error FLA_UDdate_UT_task ( FLA_Obj  R,
FLA_Obj  C,
FLA_Obj  D,
FLA_Obj  T,
fla_uddateut_t cntl 
)
16{
17 return FLA_UDdate_UT_internal( R, C, D, T,
19}
FLA_Error FLA_UDdate_UT_internal(FLA_Obj R, FLA_Obj C, FLA_Obj D, FLA_Obj T, fla_uddateut_t *cntl)
Definition FLA_UDdate_UT_internal.c:16
fla_uddateut_t * fla_uddateut_cntl_leaf
Definition FLA_UDdate_UT_cntl_init.c:16

References FLA_UDdate_UT_internal(), fla_uddateut_cntl_leaf, and i.

Referenced by FLASH_Queue_exec_task().

◆ FLA_UDdate_UT_update_rhs_check()

FLA_Error FLA_UDdate_UT_update_rhs_check ( FLA_Obj  T,
FLA_Obj  bR,
FLA_Obj  C,
FLA_Obj  bC,
FLA_Obj  D,
FLA_Obj  bD 
)