Mercurial > hg > octave-nkf
changeset 3826:2184d16975a2
[project @ 2001-05-02 05:01:31 by jwe]
author | jwe |
---|---|
date | Wed, 02 May 2001 05:01:31 +0000 |
parents | 74255bd05bdd |
children | ba548facf43b |
files | src/ChangeLog src/DLD-FUNCTIONS/sort.cc |
diffstat | 2 files changed, 18 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2001-04-27 John W. Eaton <jwe@bevo.che.wisc.edu> + + * DLD-FUNCTIONS/sort.cc (mx_sort): Check for NaNs in comparisons. + 2001-04-26 John W. Eaton <jwe@bevo.che.wisc.edu> * Makefile.in (OCTAVE_LIBS): Delete $(LIBREADLINE) from the list.
--- a/src/DLD-FUNCTIONS/sort.cc +++ b/src/DLD-FUNCTIONS/sort.cc @@ -24,6 +24,8 @@ #include <config.h> #endif +#include "lo-mappers.h" + #include "defun-dld.h" #include "error.h" #include "gripes.h" @@ -175,7 +177,7 @@ { Array<int> l = create_index_array (nr); - DO_SORT (nr, (m (p-1, j) > m (q-1, j))); + DO_SORT (nr, (xisnan (m (p-1, j)) || m (p-1, j) > m (q-1, j))); MATRIX_CREATE_RETURN_VALUES (ms, m); } @@ -208,7 +210,7 @@ { Array<int> l = create_index_array (n); - DO_SORT (n, (v (p-1) > v (q-1))); + DO_SORT (n, (xisnan (v (p-1)) || v (p-1) > v (q-1))); VECTOR_CREATE_RETURN_VALUES (vs, v); } @@ -243,16 +245,18 @@ { Array<int> l = create_index_array (nr); - int all_elts_real = 1; + bool all_elts_real = true; for (int i = 0; i < nr; i++) if (imag (cm (i, j)) != 0.0) { - all_elts_real = 0; + all_elts_real = false; break; } DO_SORT (nr, ((all_elts_real - && real (cm (p-1, j)) > real (cm (q-1, j))) + && (xisnan (real (cm (p-1, j))) + || real (cm (p-1, j)) > real (cm (q-1, j)))) + || xisnan (cm (p-1, j)) || abs (cm (p-1, j)) > abs (cm (q-1, j)))); MATRIX_CREATE_RETURN_VALUES (cms, cm); @@ -286,16 +290,18 @@ { Array<int> l = create_index_array (n); - int all_elts_real = 1; + bool all_elts_real = true; for (int i = 0; i < n; i++) if (imag (cv (i)) != 0.0) { - all_elts_real = 0; + all_elts_real = false; break; } DO_SORT (n, ((all_elts_real - && real (cv (p-1)) > real (cv (q-1))) + && (xisnan (real (cv (p-1))) + || real (cv (p-1)) > real (cv (q-1)))) + || xisnan (cv (p-1)) || abs (cv (p-1)) > abs (cv (q-1)))); VECTOR_CREATE_RETURN_VALUES (cvs, cv);