use arma_isnonfinite() for semantic simplification
This commit is contained in:
@@ -65,6 +65,48 @@ arma_isfinite(const std::complex<T>& x)
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
|
||||
|
||||
template<typename eT>
|
||||
inline
|
||||
bool
|
||||
arma_isnonfinite(eT)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
template<>
|
||||
inline
|
||||
bool
|
||||
arma_isnonfinite(float x)
|
||||
{
|
||||
return (std::isfinite(x) == false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
template<>
|
||||
inline
|
||||
bool
|
||||
arma_isnonfinite(double x)
|
||||
{
|
||||
return (std::isfinite(x) == false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
template<typename T>
|
||||
inline
|
||||
bool
|
||||
arma_isnonfinite(const std::complex<T>& x)
|
||||
{
|
||||
return ( (std::isfinite(x.real()) == false) || (std::isfinite(x.imag()) == false) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// wrappers for isinf
|
||||
|
||||
@@ -1019,8 +1019,8 @@ accu(const T1& X, const elem_opts::omit_indicator<omit_mode>&)
|
||||
|
||||
auto is_omitted = [](const eT& x) -> bool
|
||||
{
|
||||
if(omit_mode == 1) { return arma_isnan(x); }
|
||||
if(omit_mode == 2) { return (arma_isfinite(x) == false); }
|
||||
if(omit_mode == 1) { return arma_isnan(x); }
|
||||
if(omit_mode == 2) { return arma_isnonfinite(x); }
|
||||
};
|
||||
|
||||
eT val = eT(0);
|
||||
@@ -1489,8 +1489,8 @@ accu(const SpBase<typename T1::elem_type, T1>& expr, const elem_opts::omit_indic
|
||||
|
||||
auto is_omitted = [](const eT& x) -> bool
|
||||
{
|
||||
if(omit_mode == 1) { return arma_isnan(x); }
|
||||
if(omit_mode == 2) { return (arma_isfinite(x) == false); }
|
||||
if(omit_mode == 1) { return arma_isnan(x); }
|
||||
if(omit_mode == 2) { return arma_isnonfinite(x); }
|
||||
};
|
||||
|
||||
const SpProxy<T1> P(expr.get_ref());
|
||||
|
||||
@@ -433,8 +433,8 @@ op_sum_omit::apply(Mat<typename T1::elem_type>& out, const Op<T1,op_sum_omit>& i
|
||||
|
||||
arma_conform_check( (dim > 1), "sum(): parameter 'dim' must be 0 or 1" );
|
||||
|
||||
auto is_omitted_1 = [](const eT& x) -> bool { return arma_isnan(x); };
|
||||
auto is_omitted_2 = [](const eT& x) -> bool { return (arma_isfinite(x) == false); };
|
||||
auto is_omitted_1 = [](const eT& x) -> bool { return arma_isnan(x); };
|
||||
auto is_omitted_2 = [](const eT& x) -> bool { return arma_isnonfinite(x); };
|
||||
|
||||
const Proxy<T1> P(in.m);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user