Mercurial > hg > octave-lyh
diff liboctave/oct-inttypes.h @ 7596:6929e40fc597
compatible handling of NaN -> int conversions
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 18 Mar 2008 14:46:15 -0400 |
parents | ef755c763b62 |
children | a89b3fa632ee |
line wrap: on
line diff
--- a/liboctave/oct-inttypes.h +++ b/liboctave/oct-inttypes.h @@ -128,6 +128,27 @@ return (x > mx ? mx : (x < mn ? mn : T2 (x))); } +#define OCTAVE_DBL_FTR(T) \ + template <> \ + inline T \ + octave_int_fit_to_range<double, T> (const double& x, const T& mn, \ + const T& mx) \ + { \ + return (lo_ieee_isnan (x) ? 0 : (x > mx ? mx : (x < mn ? mn : static_cast<T> (x)))); \ + } + +OCTAVE_DBL_FTR (char) +OCTAVE_DBL_FTR (short) +OCTAVE_DBL_FTR (int) +OCTAVE_DBL_FTR (long) +OCTAVE_DBL_FTR (long long) + +OCTAVE_DBL_FTR (unsigned char) +OCTAVE_DBL_FTR (unsigned short) +OCTAVE_DBL_FTR (unsigned int) +OCTAVE_DBL_FTR (unsigned long) +OCTAVE_DBL_FTR (unsigned long long) + // If X is unsigned and the new type is signed, then we only have to // check the upper limit, but we should cast the maximum value of the // new type to an unsigned type before performing the comparison.