changeset 11697:ca0e5cfe59d1 release-3-0-x

compatible handling of NaN -> int conversions
author John W. Eaton <jwe@octave.org>
date Tue, 18 Mar 2008 14:46:41 -0400
parents 65e0f7b770c9
children abe3831a5fc1
files liboctave/ChangeLog liboctave/oct-inttypes.h
diffstat 2 files changed, 26 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/liboctave/ChangeLog	Tue Mar 18 14:06:42 2008 -0400
+++ b/liboctave/ChangeLog	Tue Mar 18 14:46:41 2008 -0400
@@ -1,3 +1,8 @@
+2008-03-18  John W. Eaton  <jwe@octave.org>
+
+	* oct-inttypes.h (OCTAVE_DBL_FTR): New macro.
+	Use it to provide double specializations for octave_int_fit_to_range.
+
 2008-03-12  John W. Eaton  <jwe@octave.org>
 
 	* dMatrix.cc (Matrix::lssolve): One more xGELSD workspace fix.
--- a/liboctave/oct-inttypes.h	Tue Mar 18 14:06:42 2008 -0400
+++ b/liboctave/oct-inttypes.h	Tue Mar 18 14:46:41 2008 -0400
@@ -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.