# HG changeset patch # User jwe # Date 1118769225 0 # Node ID 5b00a8beb5045be8c88169c1351b8ad1e85ae71e # Parent f64ec7b385861830f165f0e050d27a23dea28cde [project @ 2005-06-14 17:13:45 by jwe] diff --git a/liboctave/CMatrix.cc b/liboctave/CMatrix.cc --- a/liboctave/CMatrix.cc +++ b/liboctave/CMatrix.cc @@ -2607,12 +2607,10 @@ double r_val = std::real (val); double i_val = std::imag (val); - if ((! octave_is_NaN_or_NA (r_val) - && ! xisinf (r_val) - && (r_val > FLT_MAX || r_val < FLT_MIN)) - || (! octave_is_NaN_or_NA (i_val) - && ! xisinf (i_val) - && (i_val > FLT_MAX || i_val < FLT_MIN))) + if ((! (octave_is_NaN_or_NA (r_val) || xisinf (r_val)) + && fabs (r_val) > FLT_MAX) + || (! (octave_is_NaN_or_NA (i_val) || xisinf (i_val)) + && fabs (i_val) > FLT_MAX)) return true; } diff --git a/liboctave/CNDArray.cc b/liboctave/CNDArray.cc --- a/liboctave/CNDArray.cc +++ b/liboctave/CNDArray.cc @@ -594,10 +594,10 @@ double r_val = std::real (val); double i_val = std::imag (val); - if (r_val > FLT_MAX - || i_val > FLT_MAX - || r_val < FLT_MIN - || i_val < FLT_MIN) + if ((! (octave_is_NaN_or_NA (r_val) || xisinf (r_val)) + && fabs (r_val) > FLT_MAX) + || (! (octave_is_NaN_or_NA (i_val) || xisinf (i_val)) + && fabs (i_val) > FLT_MAX)) return true; } diff --git a/liboctave/ChangeLog b/liboctave/ChangeLog --- a/liboctave/ChangeLog +++ b/liboctave/ChangeLog @@ -1,12 +1,24 @@ 2005-06-14 John W. Eaton - * dMatrix.cc (Matrix::too_large_for_float): Special case Inf values too. - * CMatrix.cc (ComplexMatrix::too_large_for_float): Ditto. + * dMatrix.cc (Matrix::too_large_for_float): Only check if abs + value is greater than FLT_MAX. + * CMatrix.cc (ComplexMatrix::too_large_for_float): Ditto. + * dNDArray.cc (NDArray::too_large_for_float): Ditto. + * CNDArray.cc (ComplexNDArray::too_large_for_float): Ditto. + + * dMatrix.cc (Matrix::too_large_for_float): Special case Inf + values too. + * CMatrix.cc (ComplexMatrix::too_large_for_float): Ditto. + + * dNDArray.cc (NDArray::too_large_for_float): Likewise for NaN, + NA, Inf values. + * CNDArray.cc (ComplexNDArray::too_large_for_float): Ditto. 2005-06-14 David Bateman - * dMatrix.cc (Matrix::too_large_for_float): Special case NaN and NA values. - * CMatrix.cc (ComplexMatrix::too_large_for_float): Ditto. + * dMatrix.cc (Matrix::too_large_for_float): Special case NaN and + NA values. + * CMatrix.cc (ComplexMatrix::too_large_for_float): Ditto. 2005-06-02 John W. Eaton diff --git a/liboctave/dMatrix.cc b/liboctave/dMatrix.cc --- a/liboctave/dMatrix.cc +++ b/liboctave/dMatrix.cc @@ -2114,9 +2114,8 @@ { double val = elem (i); - if (! octave_is_NaN_or_NA (val) - && ! xisinf (val) - && (val > FLT_MAX || val < FLT_MIN)) + if (! (octave_is_NaN_or_NA (val) || xisinf (val)) + && fabs (val) > FLT_MAX) return true; } diff --git a/liboctave/dNDArray.cc b/liboctave/dNDArray.cc --- a/liboctave/dNDArray.cc +++ b/liboctave/dNDArray.cc @@ -589,7 +589,8 @@ { double val = elem (i); - if (val > FLT_MAX || val < FLT_MIN) + if (! (octave_is_NaN_or_NA (val) || xisinf (val)) + && fabs (val) > FLT_MAX) return true; }