From d1ff882b6d8334df4ce30f2e5a2ac4ffa5dace1d Mon Sep 17 00:00:00 2001 From: conrad Date: Tue, 1 Feb 2022 13:39:46 +1000 Subject: [PATCH] ensure sym size is sufficient --- include/armadillo_bits/op_pinv_meat.hpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/include/armadillo_bits/op_pinv_meat.hpp b/include/armadillo_bits/op_pinv_meat.hpp index 7457805a..fe887856 100644 --- a/include/armadillo_bits/op_pinv_meat.hpp +++ b/include/armadillo_bits/op_pinv_meat.hpp @@ -79,17 +79,18 @@ op_pinv::apply_direct(Mat& out, const Base (is_cx::yes ? uword(20) : uword(40))); + const bool is_arg_default = ((tol == T(0)) && (method_id == uword(0))); - if( (auxlib::crippled_lapack(A) == false) && (have_default_args || (n_rows > (is_cx::yes ? uword(20) : uword(40)))) ) + 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_cx::no) ? (is_approx_sym) : (is_approx_sym && is_approx_sympd); - do_sympd = is_approx_sympd && have_default_args; + do_sym = is_sym_size_ok && ((is_cx::no) ? (is_approx_sym) : (is_approx_sym && is_approx_sympd)); + do_sympd = is_arg_default && is_approx_sympd; } #else const bool do_sym = false;