updated Makefile.common
[org.ibex.core.git] / src / org / ibex / util / Vec.java
index 27d9aec..ffe7cfd 100644 (file)
@@ -6,7 +6,6 @@
 // relink clause")
 
 package org.ibex.util;
-
 import java.io.*;
 
 /** 
@@ -196,11 +195,9 @@ public final class Vec implements Serializable {
             }
             return;
         }
-
         int pivot = a[end];
         int lo = start - 1;
         int hi = end;
-
         do {
             while(a[++lo] < pivot) { }
             while((hi > lo) && a[--hi] > pivot) { }
@@ -210,7 +207,6 @@ public final class Vec implements Serializable {
         sortInts(a, start, lo-1);
         sortInts(a, lo+1, end);
     }
-
     private static final void swapInts(int[] vec, int a, int b) {
         if(a != b) {
             int tmp = vec[a];
@@ -247,7 +243,7 @@ public final class Vec implements Serializable {
                 o[i] = store[i];
         }
     
-        public int[] toArray() { int[] o = new int[size]; toArray(o); return o; }
+        public int[] dump() { int[] o = new int[size]; toArray(o); return o; }
     
         public int indexOf(int o) {
             for(int i=0; i<size; i++)
@@ -419,4 +415,40 @@ public final class Vec implements Serializable {
         }
     }
 
+
+
+    public static final void sortFloats(float[] a, int start, int end) {
+        float tmpa;
+        if(start >= end) return;
+        if(end-start <= 6) {
+            for(int i=start+1;i<=end;i++) {
+                tmpa = a[i];
+                int j;
+                for(j=i-1;j>=start;j--) {
+                    if(a[j] <= tmpa) break;
+                    a[j+1] = a[j];
+                }
+                a[j+1] = tmpa;
+            }
+            return;
+        }
+        float pivot = a[end];
+        int lo = start - 1;
+        int hi = end;
+        do {
+            while(a[++lo] < pivot) { }
+            while((hi > lo) && a[--hi] > pivot) { }
+            swapFloats(a, lo, hi);
+        } while(lo < hi);
+        swapFloats(a, lo, end);
+        sortFloats(a, start, lo-1);
+        sortFloats(a, lo+1, end);
+    }
+    private static final void swapFloats(float[] vec, int a, int b) {
+        if(a != b) {
+            float tmp = vec[a];
+            vec[a] = vec[b];
+            vec[b] = tmp;
+        }
+    }
 }