changeset 11729:de826649dfa2 release-3-0-x

fix to enable compiling with Intel C++
author Jaroslav Hajek <highegg@gmail.com>
date Thu, 03 Apr 2008 10:24:18 -0400
parents 32b73579dd5c
children 2f659a9c89f2
files src/ChangeLog src/DLD-FUNCTIONS/sort.cc
diffstat 2 files changed, 47 insertions(+), 38 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
+2008-04-03  Jaroslav Hajek <highegg@gmail.com>
+
+	* DLD-FUNCTIONS/sort.cc (xabs, ascending_compare, operator <,
+	descending_compare, operator >): Move definitions ahead of
+	#include "oct-sort.cc".
+
 2008-04-02  John W. Eaton  <jwe@octave.org>
 
 	* graphics.cc, graphics.h.in (class axes):
--- a/src/DLD-FUNCTIONS/sort.cc
+++ b/src/DLD-FUNCTIONS/sort.cc
@@ -38,7 +38,6 @@
 #include "data-conv.h"
 #include "ov-cx-mat.h"
 #include "ov-cell.h"
-#include "oct-sort.cc"
 
 enum sortmode { UNDEFINED, ASCENDING, DESCENDING };
 
@@ -79,6 +78,47 @@
   return (a->vec > b->vec);
 }
 
+// std::abs(Inf) returns NaN!!
+static inline double
+xabs (const Complex& x)
+{
+  return (xisinf (x.real ()) || xisinf (x.imag ())) ? octave_Inf : abs (x);
+}
+
+template <>
+bool
+ascending_compare (Complex a, Complex b)
+{
+  return (xisnan (b) || (xabs (a) < xabs (b))
+	  || ((xabs (a) == xabs (b)) && (arg (a) < arg (b))));
+}
+
+bool
+operator < (const Complex& a, const Complex& b)
+{
+  return (xisnan (b) || (xabs (a) < xabs (b))
+	  || ((xabs (a) == xabs (b)) && (arg (a) < arg (b))));
+}
+
+template <>
+bool
+descending_compare (Complex a, Complex b)
+{
+  return (xisnan (a) || (xabs (a) > xabs (b))
+	  || ((xabs (a) == xabs (b)) && (arg (a) > arg (b))));
+}
+
+bool
+operator > (const Complex& a, const Complex& b)
+{
+  return (xisnan (a) || (xabs (a) > xabs (b))
+	  || ((xabs (a) == xabs (b)) && (arg (a) > arg (b))));
+}
+
+// This file must be included after the < and > operators are
+// defined to avoid errors with the Intel C++ compiler.
+#include "oct-sort.cc"
+
 template <class T>
 static octave_value
 mx_sort (ArrayN<T> &m, int dim, sortmode mode = UNDEFINED)
@@ -791,43 +831,6 @@
   return (xisnan (a->vec) || (a->vec > b->vec));
 }
 
-// std::abs(Inf) returns NaN!!
-static inline double
-xabs (const Complex& x)
-{
-  return (xisinf (x.real ()) || xisinf (x.imag ())) ? octave_Inf : abs (x);
-}
-
-template <>
-bool
-ascending_compare (Complex a, Complex b)
-{
-  return (xisnan (b) || (xabs (a) < xabs (b))
-	  || ((xabs (a) == xabs (b)) && (arg (a) < arg (b))));
-}
-
-bool
-operator < (const Complex& a, const Complex& b)
-{
-  return (xisnan (b) || (xabs (a) < xabs (b))
-	  || ((xabs (a) == xabs (b)) && (arg (a) < arg (b))));
-}
-
-template <>
-bool
-descending_compare (Complex a, Complex b)
-{
-  return (xisnan (a) || (xabs (a) > xabs (b))
-	  || ((xabs (a) == xabs (b)) && (arg (a) > arg (b))));
-}
-
-bool
-operator > (const Complex& a, const Complex& b)
-{
-  return (xisnan (a) || (xabs (a) > xabs (b))
-	  || ((xabs (a) == xabs (b)) && (arg (a) > arg (b))));
-}
-
 template <>
 bool
 ascending_compare (vec_index<Complex> *a, vec_index<Complex> *b)