From 6ee8237866b70fa299a6ed6af3ffbc6496bc44cd Mon Sep 17 00:00:00 2001 From: conrad Date: Tue, 14 Sep 2021 14:01:55 +1000 Subject: [PATCH] add code to be enabled later --- .../armadillo_bits/arma_rel_comparators.hpp | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/include/armadillo_bits/arma_rel_comparators.hpp b/include/armadillo_bits/arma_rel_comparators.hpp index 67f704ae..595a2c9a 100644 --- a/include/armadillo_bits/arma_rel_comparators.hpp +++ b/include/armadillo_bits/arma_rel_comparators.hpp @@ -67,6 +67,33 @@ struct arma_lt_comparator< std::complex > // // return ( (abs_a != abs_b) ? (abs_a < abs_b) : (std::arg(a) < std::arg(b)) ); // } + + // inline + // bool + // operator() (const eT& a, const eT& b) const + // { + // const T a_real = a.real(); + // const T a_imag = a.imag(); + // + // const T a_mag_squared = a_real*a_real + a_imag*a_imag; + // + // const T b_real = b.real(); + // const T b_imag = b.imag(); + // + // const T b_mag_squared = b_real*b_real + b_imag*b_imag; + // + // if( (a_mag_squared != T(0)) && (b_mag_squared != T(0)) && std::isfinite(a_mag_squared) && std::isfinite(b_mag_squared) ) + // { + // return ( (a_mag_squared != b_mag_squared) ? (a_mag_squared < b_mag_squared) : (std::arg(a) < std::arg(b)) ); + // } + // else + // { + // const T abs_a = std::abs(a); + // const T abs_b = std::abs(b); + // + // return ( (abs_a != abs_b) ? (abs_a < abs_b) : (std::arg(a) < std::arg(b)) ); + // } + // } }; @@ -87,6 +114,33 @@ struct arma_gt_comparator< std::complex > // // return ( (abs_a != abs_b) ? (abs_a > abs_b) : (std::arg(a) > std::arg(b)) ); // } + + // inline + // bool + // operator() (const eT& a, const eT& b) const + // { + // const T a_real = a.real(); + // const T a_imag = a.imag(); + // + // const T a_mag_squared = a_real*a_real + a_imag*a_imag; + // + // const T b_real = b.real(); + // const T b_imag = b.imag(); + // + // const T b_mag_squared = b_real*b_real + b_imag*b_imag; + // + // if( (a_mag_squared != T(0)) && (b_mag_squared != T(0)) && std::isfinite(a_mag_squared) && std::isfinite(b_mag_squared) ) + // { + // return ( (a_mag_squared != b_mag_squared) ? (a_mag_squared > b_mag_squared) : (std::arg(a) > std::arg(b)) ); + // } + // else + // { + // const T abs_a = std::abs(a); + // const T abs_b = std::abs(b); + // + // return ( (abs_a != abs_b) ? (abs_a > abs_b) : (std::arg(a) > std::arg(b)) ); + // } + // } };