small changes and support for printing doubles in String class
authoradash <adash>
Mon, 20 Apr 2009 23:37:28 +0000 (23:37 +0000)
committeradash <adash>
Mon, 20 Apr 2009 23:37:28 +0000 (23:37 +0000)
Robust/src/Benchmarks/SingleTM/KMeans/KMeans.java
Robust/src/Benchmarks/SingleTM/KMeans/makefile
Robust/src/ClassLibrary/String.java

index 209257a83e56774b02c4e64f35838d655a9dda13..041db9504ff55273d3c000fe81020e11f00c76b8 100644 (file)
@@ -214,7 +214,6 @@ public class KMeans extends Thread {
        * Since zscore transform may perform in cluster() which modifies the
        * contents of attributes[][], we need to re-store the originals
        */
-      //memcpy(attributes[0], buf, (numObjects * numAttributes * sizeof(double)));
       for(int x = 0; x < numObjects; x++) {
         for(int y = 0; y < numAttributes; y++) {
           attributes[x][y] = buf[x][y];
index 0180fbcc63619d36bbc5ca06fe7fcea7d433c7d2..25fe5c20c8e583183763c2c65c3b4cc1fbaed3e6 100644 (file)
@@ -5,7 +5,7 @@ SRC=${MAINCLASS}.java \
     Normal.java \
     Common.java \
     GlobalArgs.java \
-    Barrier.java
+    ../../../ClassLibrary/JavaSTM/Barrier.java
 FLAGS=-mainclass ${MAINCLASS} -singleTM -nooptimize -debug -dcopts -abcclose -transstats -profile -joptimize
 default:
        ../../../buildscript ${FLAGS} -o ${MAINCLASS} ${SRC}
index 147a5b961895bd902894153b342d9fa5b1cbd0ce..7076ebe691a5c0890d84f24661525b036d2987c8 100644 (file)
@@ -288,8 +288,59 @@ public class String {
     return new String(chararray);
   }
 
-  public static String valueOf(double x) {
-    return valueOf((long)x);
+  public static String valueOf(double val) {
+    int i = 0, j = 0, k = 0;
+    long nodecimal = 0;
+    double decimal = 1.0d, valueA = 0.0d;
+    StringBuffer output = new StringBuffer();
+
+    for(i = 0; decimal != nodecimal; i++) {
+      long basePower = 1;
+      for(int x=0; x<i; x++) {
+        basePower*= 10;
+      }
+      nodecimal = (long) (val*basePower);
+      decimal = val*basePower;
+    } //i = place counted from right that decimal point appears
+
+    valueA = nodecimal; //valueA = val with no decimal point (val*10^i)
+
+    for(j = 0; decimal >= 0; j++) {
+      long basePower = 1;
+      for(int x=0; x<j; x++) {
+        basePower*= 10;
+      }
+      nodecimal = (long) (valueA - basePower);
+      decimal = (double) nodecimal;
+    } //j-1 = number of digits
+
+    i--;
+    j--;
+    decimal = 0;
+
+    for(k = j; k > 0; k--) {
+      if(k == i) //if a decimal point was previously found
+      {      //insert it where its meant to be
+        output.append((char)46);
+      }
+      long basePower = 1;
+      for(int x=0; x<(k-1); x++) {
+        basePower*= 10;
+      }
+      nodecimal = ((long) (valueA - decimal) / basePower);
+      decimal += nodecimal*basePower;
+      output.append((char)(48 + nodecimal));
+    }
+
+    return output.toString();
+  }
+
+  public static long basePower(int x, int y) {
+    long t = 1;
+    for(int i=0; i<y; i++) {
+      t *= x;
+    }
+    return t;
   }
 
   public static String valueOf(long x) {