diff --git a/codes/correlation/correlation.c b/codes/correlation/correlation.c
index e7fd75ad4ca3e35dd04729610b6bc59420102e34..222fb9879b1627ebe6dc58f08d9438e0ce1692f4 100644
--- a/codes/correlation/correlation.c
+++ b/codes/correlation/correlation.c
@@ -41,17 +41,19 @@ void init_array (int m,
 static
 void calc_error(int m,
 		 DATA_TYPE POLYBENCH_2D(corr,M,M,m,m))
-
 {
   int i, j;
-  double error = 0;
+  double err = 0;
 
   for (i = 0; i < m; i++)
     for (j = 0; j < m; j++) {
-        error += (corr[i][j] - 1.0)*(corr[i][j] - 1.0);
+        double e = fabs(corr[i][j] - 1.0);
+        if(e > 1)
+            e = 1;
+        err += e;
     }
-  error /= m*m;
-  printf("error: %f\n", error);
+  err /= m*m;
+  printf("error: %f\n", err);
 }
 
 /* DCE code. Must scan the entire live-out data.