Index: /trunk/psLib/src/collections/psVector.c
===================================================================
--- /trunk/psLib/src/collections/psVector.c	(revision 2675)
+++ /trunk/psLib/src/collections/psVector.c	(revision 2676)
@@ -10,6 +10,6 @@
 *  @author Robert DeSonia, MHPCC
 *
-*  @version $Revision: 1.31 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-11-11 20:13:57 $
+*  @version $Revision: 1.32 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-12-09 21:30:43 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -306,4 +306,5 @@
     psS32 N = 0;
     psVector* tmpVector = NULL;
+    psVector* checkVector = NULL;
     psElemType inType = 0;
     psU32* outVec;
@@ -316,4 +317,5 @@
     }
 
+    inType = inVector->type.type;
     N = inVector->n;
 
@@ -337,4 +339,9 @@
 
     tmpVector = psVectorSort(tmpVector, inVector);
+
+    checkVector = psVectorAlloc(N,PS_TYPE_U8);
+    for(psS32 k=0; k<N; k++) {
+        checkVector->data.U8[k] = 0;
+    }
 
     #define SORT_INDICES(TYPE,absfcn,maxError) {                              \
@@ -344,9 +351,12 @@
         for(psS32 i=0; i<N; i++) {                                              \
             for(psS32 j=0; j<N; j++) {                                          \
-                diff = absfcn(tmpVec[i] - inVec[j]);                          \
-                if(diff < maxError) {                                         \
-                    outVec[i] = j;                                            \
-                    break;                                                    \
-                }                                                             \
+                if(checkVector->data.U8[j] == 0 ) {                                    \
+                    diff = absfcn(tmpVec[i] - inVec[j]);                          \
+                    if(diff < maxError) {                                         \
+                        outVec[i] = j;                                            \
+                        checkVector->data.U8[j] = 1; \
+                        break;                                                    \
+                    }                                                             \
+                } \
             }                                                                 \
         }                                                                     \
@@ -356,26 +366,26 @@
     switch (inType) {
     case PS_TYPE_U8:
-        SORT_INDICES(U8,/* no absfcn needed */,1);
+        SORT_INDICES(U8,abs,1);
         break;
     case PS_TYPE_U16:
-        SORT_INDICES(U16,/* no absfcn needed */,1);
+        SORT_INDICES(U16,abs,1);
         break;
     case PS_TYPE_U32:
-        SORT_INDICES(U32,/* no absfcn needed */,1);
+        SORT_INDICES(U32,abs,1);
         break;
     case PS_TYPE_U64:
-        SORT_INDICES(U64,/* no absfcn needed */,1);
+        SORT_INDICES(U64,abs,1);
         break;
     case PS_TYPE_S8:
-        SORT_INDICES(S8,/* no absfcn needed */,1);
+        SORT_INDICES(S8,abs,1);
         break;
     case PS_TYPE_S16:
-        SORT_INDICES(S16,/* no absfcn needed */,1);
+        SORT_INDICES(S16,abs,1);
         break;
     case PS_TYPE_S32:
-        SORT_INDICES(S32,/* no absfcn needed */,1);
+        SORT_INDICES(S32,abs,1);
         break;
     case PS_TYPE_S64:
-        SORT_INDICES(S64,/* no absfcn needed */,1);
+        SORT_INDICES(S64,abs,1);
         break;
     case PS_TYPE_F32:
@@ -384,10 +394,4 @@
     case PS_TYPE_F64:
         SORT_INDICES(F64,fabs,DBL_EPSILON);
-        break;
-    case PS_TYPE_C32:
-        SORT_INDICES(F64,cabsf,FLT_EPSILON);
-        break;
-    case PS_TYPE_C64:
-        SORT_INDICES(F64,cabs,DBL_EPSILON);
         break;
     default:
@@ -399,4 +403,5 @@
     // Free temp memory
     psFree(tmpVector);
+    psFree(checkVector);
 
     return outVector;
Index: /trunk/psLib/src/mathtypes/psVector.c
===================================================================
--- /trunk/psLib/src/mathtypes/psVector.c	(revision 2675)
+++ /trunk/psLib/src/mathtypes/psVector.c	(revision 2676)
@@ -10,6 +10,6 @@
 *  @author Robert DeSonia, MHPCC
 *
-*  @version $Revision: 1.31 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-11-11 20:13:57 $
+*  @version $Revision: 1.32 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-12-09 21:30:43 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -306,4 +306,5 @@
     psS32 N = 0;
     psVector* tmpVector = NULL;
+    psVector* checkVector = NULL;
     psElemType inType = 0;
     psU32* outVec;
@@ -316,4 +317,5 @@
     }
 
+    inType = inVector->type.type;
     N = inVector->n;
 
@@ -337,4 +339,9 @@
 
     tmpVector = psVectorSort(tmpVector, inVector);
+
+    checkVector = psVectorAlloc(N,PS_TYPE_U8);
+    for(psS32 k=0; k<N; k++) {
+        checkVector->data.U8[k] = 0;
+    }
 
     #define SORT_INDICES(TYPE,absfcn,maxError) {                              \
@@ -344,9 +351,12 @@
         for(psS32 i=0; i<N; i++) {                                              \
             for(psS32 j=0; j<N; j++) {                                          \
-                diff = absfcn(tmpVec[i] - inVec[j]);                          \
-                if(diff < maxError) {                                         \
-                    outVec[i] = j;                                            \
-                    break;                                                    \
-                }                                                             \
+                if(checkVector->data.U8[j] == 0 ) {                                    \
+                    diff = absfcn(tmpVec[i] - inVec[j]);                          \
+                    if(diff < maxError) {                                         \
+                        outVec[i] = j;                                            \
+                        checkVector->data.U8[j] = 1; \
+                        break;                                                    \
+                    }                                                             \
+                } \
             }                                                                 \
         }                                                                     \
@@ -356,26 +366,26 @@
     switch (inType) {
     case PS_TYPE_U8:
-        SORT_INDICES(U8,/* no absfcn needed */,1);
+        SORT_INDICES(U8,abs,1);
         break;
     case PS_TYPE_U16:
-        SORT_INDICES(U16,/* no absfcn needed */,1);
+        SORT_INDICES(U16,abs,1);
         break;
     case PS_TYPE_U32:
-        SORT_INDICES(U32,/* no absfcn needed */,1);
+        SORT_INDICES(U32,abs,1);
         break;
     case PS_TYPE_U64:
-        SORT_INDICES(U64,/* no absfcn needed */,1);
+        SORT_INDICES(U64,abs,1);
         break;
     case PS_TYPE_S8:
-        SORT_INDICES(S8,/* no absfcn needed */,1);
+        SORT_INDICES(S8,abs,1);
         break;
     case PS_TYPE_S16:
-        SORT_INDICES(S16,/* no absfcn needed */,1);
+        SORT_INDICES(S16,abs,1);
         break;
     case PS_TYPE_S32:
-        SORT_INDICES(S32,/* no absfcn needed */,1);
+        SORT_INDICES(S32,abs,1);
         break;
     case PS_TYPE_S64:
-        SORT_INDICES(S64,/* no absfcn needed */,1);
+        SORT_INDICES(S64,abs,1);
         break;
     case PS_TYPE_F32:
@@ -384,10 +394,4 @@
     case PS_TYPE_F64:
         SORT_INDICES(F64,fabs,DBL_EPSILON);
-        break;
-    case PS_TYPE_C32:
-        SORT_INDICES(F64,cabsf,FLT_EPSILON);
-        break;
-    case PS_TYPE_C64:
-        SORT_INDICES(F64,cabs,DBL_EPSILON);
         break;
     default:
@@ -399,4 +403,5 @@
     // Free temp memory
     psFree(tmpVector);
+    psFree(checkVector);
 
     return outVector;
