Mercurial > hg > octave-nkf
diff liboctave/dNDArray.cc @ 11010:9478b216752e
simplify more array tests
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Wed, 22 Sep 2010 07:06:25 +0200 |
parents | 3622db30ff05 |
children | 7c573eb981eb |
line wrap: on
line diff
--- a/liboctave/dNDArray.cc +++ b/liboctave/dNDArray.cc @@ -547,18 +547,8 @@ bool NDArray::any_element_is_negative (bool neg_zero) const { - octave_idx_type nel = nelem (); - - if (neg_zero) - { - for (octave_idx_type i = 0; i < nel; i++) - if (lo_ieee_signbit (elem (i))) - return true; - } - else - return do_mx_check<double> (*this, mx_inline_any_negative); - - return false; + return (neg_zero ? test_all (xnegative_sign) + : do_mx_check<double> (*this, mx_inline_any_negative)); } bool @@ -576,45 +566,19 @@ bool NDArray::any_element_not_one_or_zero (void) const { - octave_idx_type nel = nelem (); - - for (octave_idx_type i = 0; i < nel; i++) - { - double val = elem (i); - if (val != 0 && val != 1) - return true; - } - - return false; + return ! test_all (xis_one_or_zero); } bool NDArray::all_elements_are_zero (void) const { - octave_idx_type nel = nelem (); - - for (octave_idx_type i = 0; i < nel; i++) - if (elem (i) != 0) - return false; - - return true; + return test_all (xis_zero); } bool NDArray::all_elements_are_int_or_inf_or_nan (void) const { - octave_idx_type nel = nelem (); - - for (octave_idx_type i = 0; i < nel; i++) - { - double val = elem (i); - if (xisnan (val) || D_NINT (val) == val) - continue; - else - return false; - } - - return true; + return test_all (xis_int_or_inf_or_nan); } // Return nonzero if any element of M is not an integer. Also extract @@ -643,7 +607,7 @@ if (val < min_val) min_val = val; - if (D_NINT (val) != val) + if (! xisinteger (val)) return false; } @@ -653,34 +617,13 @@ bool NDArray::all_integers (void) const { - octave_idx_type nel = nelem (); - - for (octave_idx_type i = 0; i < nel; i++) - { - double val = elem (i); - - if (D_NINT (val) != val) - return false; - } - - return true; + return test_all (xisinteger); } bool NDArray::too_large_for_float (void) const { - octave_idx_type nel = nelem (); - - for (octave_idx_type i = 0; i < nel; i++) - { - double val = elem (i); - - if (! (xisnan (val) || xisinf (val)) - && fabs (val) > FLT_MAX) - return true; - } - - return false; + return test_all (xtoo_large_for_float); } // FIXME -- this is not quite the right thing.