Mercurial > hg > octave-lyh
diff liboctave/Array-fC.cc @ 8700:314be237cd5b
sorting optimizations
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Mon, 09 Feb 2009 13:05:35 +0100 |
parents | 7cbe01c21986 |
children | e9cb742df9eb |
line wrap: on
line diff
--- a/liboctave/Array-fC.cc +++ b/liboctave/Array-fC.cc @@ -31,6 +31,7 @@ #include "Array.h" #include "Array.cc" +#include "oct-sort.cc" static float xabs (const FloatComplex& x) @@ -38,27 +39,9 @@ return (xisinf (x.real ()) || xisinf (x.imag ())) ? octave_Float_Inf : abs (x); } -static bool -operator < (const FloatComplex& a, const FloatComplex& b) -{ - return (xisnan (b) || (xabs (a) < xabs (b)) - || ((xabs (a) == xabs (b)) && (arg (a) < arg (b)))); -} - -static bool -operator > (const FloatComplex& a, const FloatComplex& 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 <> bool -ascending_compare (FloatComplex a, FloatComplex b) +octave_sort<FloatComplex>::ascending_compare (FloatComplex a, FloatComplex b) { return (xisnan (b) || (xabs (a) < xabs (b)) || ((xabs (a) == xabs (b)) && (arg (a) < arg (b)))); @@ -66,32 +49,12 @@ template <> bool -ascending_compare (vec_index<FloatComplex> *a, vec_index<FloatComplex> *b) -{ - return (xisnan (b->vec) - || (xabs (a->vec) < xabs (b->vec)) - || ((xabs (a->vec) == xabs (b->vec)) - && (arg (a->vec) < arg (b->vec)))); -} - -template <> -bool -descending_compare (FloatComplex a, FloatComplex b) +octave_sort<FloatComplex>::descending_compare (FloatComplex a, FloatComplex b) { return (xisnan (a) || (xabs (a) > xabs (b)) || ((xabs (a) == xabs (b)) && (arg (a) > arg (b)))); } -template <> -bool -descending_compare (vec_index<FloatComplex> *a, vec_index<FloatComplex> *b) -{ - return (xisnan (a->vec) - || (xabs (a->vec) > xabs (b->vec)) - || ((xabs (a->vec) == xabs (b->vec)) - && (arg (a->vec) > arg (b->vec)))); -} - INSTANTIATE_ARRAY_SORT (FloatComplex); INSTANTIATE_ARRAY_AND_ASSIGN (FloatComplex, OCTAVE_API);