diff --git a/codes/jacobi-2d/jacobi-2d.c b/codes/jacobi-2d/jacobi-2d.c
index 767ac0b3b4d815dcfe3d7856b8d1f8631e79ed74..5dc7edf694f6fb2cccae428df63915d70fb9a313 100644
--- a/codes/jacobi-2d/jacobi-2d.c
+++ b/codes/jacobi-2d/jacobi-2d.c
@@ -58,6 +58,26 @@ void print_array(int n,
   POLYBENCH_DUMP_FINISH;
 }
 
+extern double _binary_data_bin_start;
+extern double _binary_data_bin_end;
+
+static
+void calc_error(int n,
+		 DATA_TYPE POLYBENCH_2D(A,N,N,n,n))
+{
+    int i;
+    double err = 0;
+    double *accurate = &_binary_data_bin_start;
+    double *test = &(A[0][0]);
+
+    /* calculate the mean squared error */
+    for(i = 0; i < n*n; i++) {
+        err += (accurate[i] - test[i])*(accurate[i] - test[i]);
+    }
+    err /= n*n;
+    printf("error: %f\n", err);
+}
+
 
 /* Main computational kernel. The whole function will be timed,
    including the call and return. */
@@ -83,23 +103,6 @@ void kernel_jacobi_2d(int tsteps,
 
 }
 
-extern double _binary_data_bin_start;
-extern double _binary_data_bin_end;
-
-static
-void calc_error(int n,
-		 DATA_TYPE POLYBENCH_2D(A,N,N,n,n))
-{
-    int i;
-    double err = 0;
-    double *accurate = &_binary_data_bin_start;
-
-    for(i = 0; i < n*n; i++) {
-        err += (accurate[i] - A[0][i])*(accurate[i] - A[0][i]);
-    }
-    printf("error: %f\n", err);
-}
-
 int main(int argc, char** argv)
 {
   /* Retrieve problem size. */