# HG changeset patch # User John W. Eaton # Date 1345667455 14400 # Node ID 336f424066714e4d4a5a4d7f6364d137106f0219 # Parent 4bbd3bbb89126cff32bd1b572728a8c5c6c57d37 use numeric_limits functions instead of DBL_MIN, DBL_MAX, etc. * __glpk__.cc, ls-mat5.cc, data.cc, ls-oct-ascii.h, pr-output.cc, lo-utils.cc: Replace all uses of DBL_MIN, DBL_MAX, DBL_EPSILON, FLT_MIN, FLT_MAX, and FLT_EPSILON with numeric_limits functions. * variables.h (set_internal_variable): Use +/- octave_Inf as default values for minval and maxval. diff --git a/libinterp/dldfcn/__glpk__.cc b/libinterp/dldfcn/__glpk__.cc --- a/libinterp/dldfcn/__glpk__.cc +++ b/libinterp/dldfcn/__glpk__.cc @@ -118,8 +118,8 @@ 1e-7, 1e-7, 1e-9, - -DBL_MAX, - DBL_MAX, + -std::numeric_limits::max (), + std::numeric_limits::max (), -1.0, 0.0, 1e-6, diff --git a/libinterp/interp-core/ls-mat5.cc b/libinterp/interp-core/ls-mat5.cc --- a/libinterp/interp-core/ls-mat5.cc +++ b/libinterp/interp-core/ls-mat5.cc @@ -1939,7 +1939,7 @@ double tmp = val[i]; if (! (xisnan (tmp) || xisinf (tmp)) - && fabs (tmp) > FLT_MAX) + && fabs (tmp) > std::numeric_limits::max ()) { too_large_for_float = true; break; diff --git a/libinterp/interpfcn/data.cc b/libinterp/interpfcn/data.cc --- a/libinterp/interpfcn/data.cc +++ b/libinterp/interpfcn/data.cc @@ -4120,7 +4120,7 @@ retval = fill_matrix (octave_value ("single"), lo_ieee_nan_value (), lo_ieee_float_nan_value (), "eps"); - else if (val < FLT_MIN) + else if (val < std::numeric_limits::min ()) retval = fill_matrix (octave_value ("single"), 0e0, powf (2.0, -149e0), "eps"); else @@ -4129,7 +4129,8 @@ frexpf (val, &expon); val = std::pow (static_cast (2.0), static_cast (expon - 24)); - retval = fill_matrix (octave_value ("single"), DBL_EPSILON, + retval = fill_matrix (octave_value ("single"), + std::numeric_limits::epsilon (), val, "eps"); } } @@ -4145,7 +4146,7 @@ retval = fill_matrix (octave_value_list (), lo_ieee_nan_value (), lo_ieee_float_nan_value (), "eps"); - else if (val < DBL_MIN) + else if (val < std::numeric_limits::min ()) retval = fill_matrix (octave_value_list (), pow (2.0, -1074e0), 0e0, "eps"); else @@ -4155,13 +4156,15 @@ val = std::pow (static_cast (2.0), static_cast (expon - 53)); retval = fill_matrix (octave_value_list (), val, - FLT_EPSILON, "eps"); + std::numeric_limits::epsilon (), + "eps"); } } } } else - retval = fill_matrix (args, DBL_EPSILON, FLT_EPSILON, "eps"); + retval = fill_matrix (args, std::numeric_limits::epsilon (), + std::numeric_limits::epsilon (), "eps"); return retval; } @@ -4259,7 +4262,8 @@ @seealso{realmin, intmax, bitmax, eps}\n\ @end deftypefn") { - return fill_matrix (args, DBL_MAX, FLT_MAX, "realmax"); + return fill_matrix (args, std::numeric_limits::max (), + std::numeric_limits::max (), "realmax"); } DEFUN (realmin, args, , @@ -4292,7 +4296,8 @@ @seealso{realmax, intmin, eps}\n\ @end deftypefn") { - return fill_matrix (args, DBL_MIN, FLT_MIN, "realmin"); + return fill_matrix (args, std::numeric_limits::min (), + std::numeric_limits::min (), "realmin"); } DEFUN (I, args, , diff --git a/libinterp/interpfcn/ls-oct-ascii.h b/libinterp/interpfcn/ls-oct-ascii.h --- a/libinterp/interpfcn/ls-oct-ascii.h +++ b/libinterp/interpfcn/ls-oct-ascii.h @@ -38,7 +38,7 @@ // Used when converting Inf to something that gnuplot can read. #ifndef OCT_RBV -#define OCT_RBV DBL_MAX / 100.0 +#define OCT_RBV (std::numeric_limits::max () / 100.0) #endif extern OCTINTERP_API std::string diff --git a/libinterp/interpfcn/pr-output.cc b/libinterp/interpfcn/pr-output.cc --- a/libinterp/interpfcn/pr-output.cc +++ b/libinterp/interpfcn/pr-output.cc @@ -483,7 +483,7 @@ octave_idx_type nr = m.rows (); octave_idx_type nc = m.columns (); - double result = -DBL_MAX; + double result = -std::numeric_limits::max (); bool all_inf_or_nan = true; @@ -512,7 +512,7 @@ octave_idx_type nr = m.rows (); octave_idx_type nc = m.columns (); - double result = DBL_MAX; + double result = std::numeric_limits::max (); bool all_inf_or_nan = true; diff --git a/libinterp/interpfcn/variables.h b/libinterp/interpfcn/variables.h --- a/libinterp/interpfcn/variables.h +++ b/libinterp/interpfcn/variables.h @@ -102,7 +102,8 @@ extern OCTINTERP_API octave_value set_internal_variable (double& var, const octave_value_list& args, int nargout, const char *nm, - double minval = DBL_MIN, double maxval = DBL_MAX); + double minval = -octave_Inf, + double maxval = octave_Inf); extern OCTINTERP_API octave_value set_internal_variable (std::string& var, const octave_value_list& args, diff --git a/liboctave/lo-utils.cc b/liboctave/lo-utils.cc --- a/liboctave/lo-utils.cc +++ b/liboctave/lo-utils.cc @@ -54,7 +54,10 @@ { return x == 0; } bool xtoo_large_for_float (double x) -{ return (! (xisnan (x) || xisinf (x)) && fabs (x) > FLT_MAX); } +{ + return (! (xisnan (x) || xisinf (x)) + && fabs (x) > std::numeric_limits::max ()); +} bool xtoo_large_for_float (const Complex& x) {