use arma_config instead of #ifdef

This commit is contained in:
conrad
2022-03-16 15:56:15 +10:00
parent efa22c266f
commit 409fdbb9c2
12 changed files with 51 additions and 98 deletions
+14
View File
@@ -44,6 +44,20 @@ struct arma_config
#endif
#if defined(ARMA_OPTIMISE_BAND)
static constexpr bool optimise_band = true;
#else
static constexpr bool optimise_band = false;
#endif
#if defined(ARMA_OPTIMISE_SYMPD)
static constexpr bool optimise_sympd = true;
#else
static constexpr bool optimise_sympd = false;
#endif
#if defined(ARMA_OPTIMISE_INVEXPR)
static constexpr bool optimise_invexpr = true;
#else
+2 -10
View File
@@ -143,20 +143,12 @@ glue_solve_gen_full::apply(Mat<eT>& out, const Base<eT,T1>& A_expr, const Base<e
uword KL = 0;
uword KU = 0;
#if defined(ARMA_OPTIMISE_BAND)
const bool is_band = (no_band || auxlib::crippled_lapack(A)) ? false : band_helper::is_band(KL, KU, A, uword(32));
#else
const bool is_band = false;
#endif
const bool is_band = arma_config::optimise_band && ((no_band || auxlib::crippled_lapack(A)) ? false : band_helper::is_band(KL, KU, A, uword(32)));
const bool is_triu = (no_trimat || refine || equilibrate || likely_sympd || is_band ) ? false : trimat_helper::is_triu(A);
const bool is_tril = (no_trimat || refine || equilibrate || likely_sympd || is_band || is_triu) ? false : trimat_helper::is_tril(A);
#if defined(ARMA_OPTIMISE_SYMPD)
const bool try_sympd = (no_sympd || auxlib::crippled_lapack(A) || is_band || is_triu || is_tril) ? false : (likely_sympd ? true : sympd_helper::guess_sympd(A, uword(16)));
#else
const bool try_sympd = false;
#endif
const bool try_sympd = arma_config::optimise_sympd && ((no_sympd || auxlib::crippled_lapack(A) || is_band || is_triu || is_tril) ? false : (likely_sympd ? true : sympd_helper::guess_sympd(A, uword(16))));
if(fast)
{
+1 -5
View File
@@ -69,11 +69,7 @@ op_chol::apply_direct(Mat<typename T1::elem_type>& out, const Base<typename T1::
uword KD = 0;
#if defined(ARMA_OPTIMISE_BAND)
const bool is_band = (auxlib::crippled_lapack(out)) ? false : ((layout == 0) ? band_helper::is_band_upper(KD, out, uword(32)) : band_helper::is_band_lower(KD, out, uword(32)));
#else
const bool is_band = false;
#endif
const bool is_band = arma_config::optimise_band && ((auxlib::crippled_lapack(out)) ? false : ((layout == 0) ? band_helper::is_band_upper(KD, out, uword(32)) : band_helper::is_band_lower(KD, out, uword(32))));
const bool status = (is_band) ? auxlib::chol_band(out, KD, layout) : auxlib::chol(out, layout);
+1 -5
View File
@@ -119,11 +119,7 @@ op_cond::rcond(const Base<typename T1::elem_type, T1>& X)
return auxlib::rcond_trimat(A, layout);
}
#if defined(ARMA_OPTIMISE_SYMPD)
const bool try_sympd = auxlib::crippled_lapack(A) ? false : sympd_helper::guess_sympd(A);
#else
const bool try_sympd = false;
#endif
const bool try_sympd = arma_config::optimise_sympd && (auxlib::crippled_lapack(A) ? false : sympd_helper::guess_sympd(A));
if(try_sympd)
{
+1 -5
View File
@@ -86,11 +86,7 @@ op_expmat::apply_direct(Mat<typename T1::elem_type>& out, const Base<typename T1
return true;
}
#if defined(ARMA_OPTIMISE_SYMPD)
const bool try_sympd = sympd_helper::guess_sympd(A);
#else
const bool try_sympd = false;
#endif
const bool try_sympd = arma_config::optimise_sympd && sympd_helper::guess_sympd(A);
if(try_sympd)
{
+2 -10
View File
@@ -154,11 +154,7 @@ op_inv_gen_full::apply_direct(Mat<typename T1::elem_type>& out, const Base<typen
return auxlib::inv_tr(out, ((is_triu_expr || is_triu_mat) ? uword(0) : uword(1)));
}
#if defined(ARMA_OPTIMISE_SYMPD)
const bool try_sympd = (no_sympd) ? false : (likely_sympd ? true : sympd_helper::guess_sympd(out));
#else
const bool try_sympd = false;
#endif
const bool try_sympd = arma_config::optimise_sympd && ((no_sympd) ? false : (likely_sympd ? true : sympd_helper::guess_sympd(out)));
if(try_sympd)
{
@@ -359,11 +355,7 @@ op_inv_gen_rcond::apply_direct(Mat<typename T1::elem_type>& out, typename T1::po
return auxlib::inv_tr_rcond(out, out_rcond, ((is_triu_expr || is_triu_mat) ? uword(0) : uword(1)));
}
#if defined(ARMA_OPTIMISE_SYMPD)
const bool try_sympd = (auxlib::crippled_lapack(out)) ? false : sympd_helper::guess_sympd(out);
#else
const bool try_sympd = false;
#endif
const bool try_sympd = arma_config::optimise_sympd && ((auxlib::crippled_lapack(out)) ? false : sympd_helper::guess_sympd(out));
if(try_sympd)
{
+1 -5
View File
@@ -56,11 +56,7 @@ op_log_det::apply_direct(typename T1::elem_type& out_val, typename T1::pod_type&
if(is_triu || is_tril) { return op_log_det::apply_trimat(out_val, out_sign, A); }
// #if defined(ARMA_OPTIMISE_SYMPD)
// const bool try_sympd = sympd_helper::guess_sympd(A);
// #else
// const bool try_sympd = false;
// #endif
// const bool try_sympd = arma_config::optimise_sympd && sympd_helper::guess_sympd(A);
//
// if(try_sympd)
// {
+2 -10
View File
@@ -134,11 +134,7 @@ op_logmat::apply_direct(Mat< std::complex<typename T1::elem_type> >& out, const
return true;
}
#if defined(ARMA_OPTIMISE_SYMPD)
const bool try_sympd = sympd_helper::guess_sympd(A);
#else
const bool try_sympd = false;
#endif
const bool try_sympd = arma_config::optimise_sympd && sympd_helper::guess_sympd(A);
if(try_sympd)
{
@@ -307,11 +303,7 @@ op_logmat_cx::apply_direct(Mat<typename T1::elem_type>& out, const Base<typename
return true;
}
#if defined(ARMA_OPTIMISE_SYMPD)
const bool try_sympd = sympd_helper::guess_sympd(S);
#else
const bool try_sympd = false;
#endif
const bool try_sympd = arma_config::optimise_sympd && sympd_helper::guess_sympd(S);
if(try_sympd)
{
+14 -19
View File
@@ -75,27 +75,22 @@ op_pinv::apply_direct(Mat<typename T1::elem_type>& out, const Base<typename T1::
return op_pinv::apply_diag(out, A, tol);
}
#if defined(ARMA_OPTIMISE_SYMPD)
bool do_sym = false;
bool do_sympd = false;
bool do_sym = false;
bool do_sympd = false;
const bool is_sym_size_ok = (n_rows > (is_cx<eT>::yes ? uword(20) : uword(40)));
const bool is_arg_default = ((tol == T(0)) && (method_id == uword(0)));
if( (arma_config::optimise_sympd) && (auxlib::crippled_lapack(A) == false) && (is_arg_default || is_sym_size_ok) )
{
bool is_approx_sym = false;
bool is_approx_sympd = false;
const bool is_sym_size_ok = (n_rows > (is_cx<eT>::yes ? uword(20) : uword(40)));
const bool is_arg_default = ((tol == T(0)) && (method_id == uword(0)));
sympd_helper::analyse_matrix(is_approx_sym, is_approx_sympd, A);
if( (auxlib::crippled_lapack(A) == false) && (is_arg_default || is_sym_size_ok) )
{
bool is_approx_sym = false;
bool is_approx_sympd = false;
sympd_helper::analyse_matrix(is_approx_sym, is_approx_sympd, A);
do_sym = is_sym_size_ok && ((is_cx<eT>::no) ? (is_approx_sym) : (is_approx_sym && is_approx_sympd));
do_sympd = is_arg_default && is_approx_sympd;
}
#else
const bool do_sym = false;
const bool do_sympd = false;
#endif
do_sym = is_sym_size_ok && ((is_cx<eT>::no) ? (is_approx_sym) : (is_approx_sym && is_approx_sympd));
do_sympd = is_arg_default && is_approx_sympd;
}
if(do_sympd)
{
+1 -5
View File
@@ -207,11 +207,7 @@ op_powmat_cx::apply_direct(Mat< std::complex<typename T1::pod_type> >& out, cons
return true;
}
#if defined(ARMA_OPTIMISE_SYMPD)
const bool try_sympd = sympd_helper::guess_sympd(A);
#else
const bool try_sympd = false;
#endif
const bool try_sympd = arma_config::optimise_sympd && sympd_helper::guess_sympd(A);
if(try_sympd)
{
+10 -14
View File
@@ -42,21 +42,17 @@ op_rank::apply(uword& out, const Base<typename T1::elem_type,T1>& expr, const ty
return op_rank::apply_diag(out, A, tol);
}
#if defined(ARMA_OPTIMISE_SYMPD)
bool do_sym = false;
bool do_sym = false;
if((arma_config::optimise_sympd) && (auxlib::crippled_lapack(A) == false) && (A.n_rows >= (is_cx<eT>::yes ? uword(64) : uword(128))))
{
bool is_approx_sym = false;
bool is_approx_sympd = false;
if((auxlib::crippled_lapack(A) == false) && (A.n_rows >= (is_cx<eT>::yes ? uword(64) : uword(128))))
{
bool is_approx_sym = false;
bool is_approx_sympd = false;
sympd_helper::analyse_matrix(is_approx_sym, is_approx_sympd, A);
do_sym = (is_cx<eT>::no) ? (is_approx_sym) : (is_approx_sym && is_approx_sympd);
}
#else
const bool do_sym = false;
#endif
sympd_helper::analyse_matrix(is_approx_sym, is_approx_sympd, A);
do_sym = (is_cx<eT>::no) ? (is_approx_sym) : (is_approx_sym && is_approx_sympd);
}
if(do_sym)
{
+2 -10
View File
@@ -139,11 +139,7 @@ op_sqrtmat::apply_direct(Mat< std::complex<typename T1::elem_type> >& out, const
return true;
}
#if defined(ARMA_OPTIMISE_SYMPD)
const bool try_sympd = sympd_helper::guess_sympd(A);
#else
const bool try_sympd = false;
#endif
const bool try_sympd = arma_config::optimise_sympd && sympd_helper::guess_sympd(A);
if(try_sympd)
{
@@ -340,11 +336,7 @@ op_sqrtmat_cx::apply_direct(Mat<typename T1::elem_type>& out, const Base<typenam
return true;
}
#if defined(ARMA_OPTIMISE_SYMPD)
const bool try_sympd = sympd_helper::guess_sympd(S);
#else
const bool try_sympd = false;
#endif
const bool try_sympd = arma_config::optimise_sympd && sympd_helper::guess_sympd(S);
if(try_sympd)
{