Mercurial > hg > octave-nkf
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)