diff --git a/codes/2mm/2mm.c b/codes/2mm/2mm.c index 7c78512bc0e4c2d4f6df940a22aa3de928358c0f..db4bf9a67491db079e5afd942f738dc61e28df3d 100644 --- a/codes/2mm/2mm.c +++ b/codes/2mm/2mm.c @@ -77,15 +77,18 @@ void calc_error(int ni, int nl, DATA_TYPE POLYBENCH_2D(D,NI,NL,ni,nl)) { int i; + int n = ni*nl; double err = 0; double *accurate = &_binary_data_bin_start; double *test = &(D[0][0]); - /* calculate the mean squared error */ - for (i = 0; i < ni*nl; i++) { - err += (accurate[i] - test[i])*(accurate[i] - test[i]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } - err /= ni*nl; + err /= n; printf("error: %f\n", err); } diff --git a/codes/3mm/3mm.c b/codes/3mm/3mm.c index bbf57202e2507a66f91404f3bc47007ea0467f04..0b2295357c93d275bb656754acabcaa34f27b67d 100644 --- a/codes/3mm/3mm.c +++ b/codes/3mm/3mm.c @@ -73,15 +73,18 @@ void calc_error(int ni, int nl, DATA_TYPE POLYBENCH_2D(D,NI,NL,ni,nl)) { int i; + int n = ni*nl; double err = 0; double *accurate = &_binary_data_bin_start; double *test = &(D[0][0]); - /* calculate the mean squared error */ - for (i = 0; i < ni*nl; i++) { - err += (accurate[i] - test[i])*(accurate[i] - test[i]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } - err /= ni*nl; + err /= n; printf("error: %f\n", err); } diff --git a/codes/adi/adi.c b/codes/adi/adi.c index 8bd7b05c7f0bc9548c4fb42cf155f6b784bd8375..08f3e2eda909ecb1394214c128dd4126a2c95aa5 100644 --- a/codes/adi/adi.c +++ b/codes/adi/adi.c @@ -64,15 +64,18 @@ void calc_error (int n, DATA_TYPE POLYBENCH_2D(u,N,N,n,n)) { int i; + int n = n*n; double err = 0; double *accurate = &_binary_data_bin_start; double *test = &(u[0][0]); - /* calculate the mean squared error */ - for(i = 0; i < n*n; i++) { - err += (accurate[i] - test[i])*(accurate[i] - test[i]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } - err /= n*n; + err /= n; printf("error: %f\n", err); } diff --git a/codes/covariance/covariance.c b/codes/covariance/covariance.c index 3c5a7fe3d24074fa53eda44f778be98bd78d46b9..8f8c98b960de6456486a4178cdb2e193d015d665 100644 --- a/codes/covariance/covariance.c +++ b/codes/covariance/covariance.c @@ -65,15 +65,18 @@ void calc_error(int m, DATA_TYPE POLYBENCH_2D(cov,M,M,m,m)) { int i, j; + int n = m*m; double err = 0; double *accurate = &_binary_data_bin_start; double *test = &(cov[0][0]); - /* calculate the mean squared error */ - for (i = 0; i < m*m; i++) { - err += (accurate[i] - test[i])*(accurate[i] - test[i]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } - err /= m*m; + err /= n; printf("error: %f\n", err); } diff --git a/codes/deriche/deriche.c b/codes/deriche/deriche.c index 29c2270a5445395b84329ac938dc74530ba55598..0c0be9bc4a33c9390129ea805d5ac2ea73dc78af 100644 --- a/codes/deriche/deriche.c +++ b/codes/deriche/deriche.c @@ -66,15 +66,18 @@ void calc_error(int w, int h, DATA_TYPE POLYBENCH_2D(imgOut,W,H,w,h)) { int i; + int n = w*h; double err = 0; float *accurate = &_binary_data_bin_start; float *test = &(imgOut[0][0]); - /* calculate the mean squared error */ - for(i = 0; i < w*h; i++) { - err += (accurate[i] - test[i])*(accurate[i] - test[i]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } - err /= w*h; + err /= n; printf("error: %f\n", err); } diff --git a/codes/doitgen/doitgen.c b/codes/doitgen/doitgen.c index 392b054a86f9b1f4c7389170d1137e84d8484f5a..8cc474652598b27cd10d396e41dc3c226ef0e099 100644 --- a/codes/doitgen/doitgen.c +++ b/codes/doitgen/doitgen.c @@ -67,15 +67,18 @@ void calc_error(int nr, int nq, int np, DATA_TYPE POLYBENCH_3D(A,NR,NQ,NP,nr,nq,np)) { int i; + int n = nr*nq*np; double err = 0; double *accurate = &_binary_data_bin_start; double *test = &(A[0][0][0]); - /* calculate the mean squared error */ - for(i = 0; i < nr*nq*np; i++) { - err += (accurate[i] - test[i])*(accurate[i] - test[i]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } - err /= nr*nq*np; + err /= n; printf("error: %f\n", err); } diff --git a/codes/fdtd-2d/fdtd-2d.c b/codes/fdtd-2d/fdtd-2d.c index 8a7ffc4f99b2dce59cff42c95d4553fa1fff33d7..ba3e2da70757214bd612b9b0f5f127200551f06d 100644 --- a/codes/fdtd-2d/fdtd-2d.c +++ b/codes/fdtd-2d/fdtd-2d.c @@ -95,33 +95,40 @@ void calc_error(int nx, DATA_TYPE POLYBENCH_2D(hz,NX,NY,nx,ny)) { int i; + int n = nx*ny; double err = 0; { double *accurate = &_binary_data_ex_bin_start; double *test = &(ex[0][0]); - /* calculate the mean squared error */ - for(i = 0; i < nx*ny; i++) { - err += (accurate[i] - test[i])*(accurate[i] - test[i]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } } { double *accurate = &_binary_data_ey_bin_start; double *test = &(ey[0][0]); - /* calculate the mean squared error */ - for(i = 0; i < nx*ny; i++) { - err += (accurate[i] - test[i])*(accurate[i] - test[i]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } } { double *accurate = &_binary_data_hz_bin_start; double *test = &(hz[0][0]); - /* calculate the mean squared error */ - for(i = 0; i < nx*ny; i++) { - err += (accurate[i] - test[i])*(accurate[i] - test[i]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } } diff --git a/codes/floyd-warshall/floyd-warshall.c b/codes/floyd-warshall/floyd-warshall.c index ecd162666f1cd528da881756fc2c9888ba9e95d0..e8138c820b9b019ba2584b9892532926cf677cfb 100644 --- a/codes/floyd-warshall/floyd-warshall.c +++ b/codes/floyd-warshall/floyd-warshall.c @@ -64,15 +64,20 @@ static void calc_error(int n, DATA_TYPE POLYBENCH_2D(path,N,N,n,n)) { - double err = 0; - int *accurate = &_binary_data_bin_start; - int *test = &(path[0][0]); - - for (int i = 0; i < n*n; i++) { - err += (accurate[i] - test[i]) * (accurate[i] - test[i]); - } - err /= n*n; - printf("error: %f\n", err); + int i; + int n = n*n; + double err = 0; + int *accurate = &_binary_data_bin_start; + int *test = &(path[0][0]); + + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; + } + err /= n; + printf("error: %f\n", err); } @@ -85,7 +90,7 @@ void kernel_floyd_warshall(int n, int i, j, k; #pragma scop - for (k = 0; k < _PB_N; k++) + for (k = 0; k < n; k++) { for(i = 0; i < _PB_N; i++) for (j = 0; j < _PB_N; j++) diff --git a/codes/gemm/gemm.c b/codes/gemm/gemm.c index 37f8fd86126ae24664fb4d4f4867c08219ed9f44..b7a73ef5845fa48b7d0b6c248afd7cd92a14a22c 100644 --- a/codes/gemm/gemm.c +++ b/codes/gemm/gemm.c @@ -73,15 +73,18 @@ void calc_error(int ni, int nj, DATA_TYPE POLYBENCH_2D(C,NI,NJ,ni,nj)) { int i; + int n = ni*nj; double err = 0; double *accurate = &_binary_data_bin_start; double *test = &(C[0][0]); - /* calculate the mean squared error */ - for (i = 0; i < ni*nj; i++) { - err += (accurate[i] - test[i])*(accurate[i] - test[i]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } - err /= ni*nj; + err /= n; printf("error: %f\n", err); } diff --git a/codes/gemver/gemver.c b/codes/gemver/gemver.c index 8c300358add26076d7c0774ceacf4bc255903277..ad8ec47a311c2cea872e7eba4b96ae770deb8e9c 100644 --- a/codes/gemver/gemver.c +++ b/codes/gemver/gemver.c @@ -89,9 +89,11 @@ void calc_error(int n, double *accurate = &_binary_data_bin_start; double *test = &(w[0]); - /* calculate the mean squared error */ - for (i = 0; i < n; i++) { - err += (accurate[i] - test[i])*(accurate[i] - test[i]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } err /= n; printf("error: %f\n", err); diff --git a/codes/gesummv/gesummv.c b/codes/gesummv/gesummv.c index fe523fed082fa48b6c9a4b6887adcdad619fb539..b21dbe989baab974ee969559359f30d2e5e4c1c3 100644 --- a/codes/gesummv/gesummv.c +++ b/codes/gesummv/gesummv.c @@ -76,9 +76,11 @@ void calc_error(int n, double *accurate = &_binary_data_bin_start; double *test = &(y[0]); - /* calculate the mean squared error */ - for (i = 0; i < n; i++) { - err += (accurate[i] - test[i])*(accurate[i] - test[i]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } err /= n; printf("error: %f\n", err); diff --git a/codes/heat-3d/heat-3d.c b/codes/heat-3d/heat-3d.c index f171a17d21335e01b7ba126aaeab325539611ee7..85914fd37404fad95a75243f852ce2b1a8d75434 100644 --- a/codes/heat-3d/heat-3d.c +++ b/codes/heat-3d/heat-3d.c @@ -65,15 +65,19 @@ void calc_error(int n, DATA_TYPE POLYBENCH_3D(A,N,N,N,n,n,n)) { int i; + int n = n*n*n; double err = 0; double *accurate = &_binary_data_bin_start; double *test = &(A[0][0][0]); /* calculate the mean squared error */ - for(i = 0; i < n*n*n; i++) { - err += (accurate[i] - test[i])*(accurate[i] - test[i]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } - err /= n*n*n; + err /= n; printf("error: %f\n", err); } diff --git a/codes/jacobi-1d/jacobi-1d.c b/codes/jacobi-1d/jacobi-1d.c index 6cd537c4969ed043120550cb4f230b2214a0d00d..c77e4e1c516a85da96b1c570a01d0dd053ad5224 100644 --- a/codes/jacobi-1d/jacobi-1d.c +++ b/codes/jacobi-1d/jacobi-1d.c @@ -69,9 +69,11 @@ void calc_error(int n, double *accurate = &_binary_data_bin_start; double *test = &(A[0]); - /* calculate the mean squared error */ for(i = 0; i < n; i++) { - err += (accurate[i] - test[i])*(accurate[i] - test[i]); + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } err /= n; printf("error: %f\n", err); diff --git a/codes/jacobi-2d/jacobi-2d.c b/codes/jacobi-2d/jacobi-2d.c index 5dc7edf694f6fb2cccae428df63915d70fb9a313..643c6c6af34aa471fa91c89ef8dbf4a370ebb980 100644 --- a/codes/jacobi-2d/jacobi-2d.c +++ b/codes/jacobi-2d/jacobi-2d.c @@ -66,15 +66,18 @@ void calc_error(int n, DATA_TYPE POLYBENCH_2D(A,N,N,n,n)) { int i; + int n = n*n; 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]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } - err /= n*n; + err /= n; printf("error: %f\n", err); } diff --git a/codes/seidel-2d/seidel-2d.c b/codes/seidel-2d/seidel-2d.c index 2debc95bb00cde1b69e648f5633865b56949ba04..0d6ba059186e92d1e222ecb77f55f0d8583b7ce5 100644 --- a/codes/seidel-2d/seidel-2d.c +++ b/codes/seidel-2d/seidel-2d.c @@ -62,15 +62,18 @@ void calc_error(int n, DATA_TYPE POLYBENCH_2D(A,N,N,n,n)) { int i; + int n = n*n; 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]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } - err /= n*n; + err /= n; printf("error: %f\n", err); } diff --git a/codes/symm/symm.c b/codes/symm/symm.c index ea286adaa86fe2d607c341d36e63b6d1b94e567f..f167ef9e495e68a1f2c4e8065e1ae1abcbb6e7a1 100644 --- a/codes/symm/symm.c +++ b/codes/symm/symm.c @@ -75,15 +75,18 @@ void calc_error(int m, int n, DATA_TYPE POLYBENCH_2D(C,M,N,m,n)) { int i, j; + int n = m*n; double err = 0; double *accurate = &_binary_data_bin_start; double *test = &(C[0][0]); - /* calculate the mean squared error */ - for (i = 0; i < m*n; i++) { - err += (accurate[i] - test[i])*(accurate[i] - test[i]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } - err /= m*n; + err /= n; printf("error: %f\n", err); } diff --git a/codes/syr2k/syr2k.c b/codes/syr2k/syr2k.c index 0647acc03f80c5e221542e083205f184bcdf0144..60438f37402dd703e43d785cfe076523e926216a 100644 --- a/codes/syr2k/syr2k.c +++ b/codes/syr2k/syr2k.c @@ -73,15 +73,18 @@ void calc_error(int n, DATA_TYPE POLYBENCH_2D(C,N,N,n,n)) { int i; + int n = n*n; double err = 0; double *accurate = &_binary_data_bin_start; double *test = &(C[0][0]); - /* calculate the mean squared error */ - for (i = 0; i < n*n; i++) { - err += (accurate[i] - test[i])*(accurate[i] - test[i]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } - err /= n*n; + err /= n; printf("error: %f\n", err); } diff --git a/codes/syrk/syrk.c b/codes/syrk/syrk.c index 1db7bc18e1684fc6600038052e2b8ff258330012..3c95aa2ab497a2bb54b0640982778b13676702d8 100644 --- a/codes/syrk/syrk.c +++ b/codes/syrk/syrk.c @@ -69,15 +69,18 @@ void calc_error(int n, DATA_TYPE POLYBENCH_2D(C,N,N,n,n)) { int i; + int n = n*n; double err = 0; double *accurate = &_binary_data_bin_start; double *test = &(C[0][0]); - /* calculate the mean squared error */ - for (i = 0; i < n*n; i++) { - err += (accurate[i] - test[i])*(accurate[i] - test[i]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } - err /= n*n; + err /= n; printf("error: %f\n", err); } diff --git a/codes/trmm/trmm.c b/codes/trmm/trmm.c index 062cf1e3087bb43128bd8f0571cd6635e262565d..c1d287f013508884ce2d39038e358087e2e3b782 100644 --- a/codes/trmm/trmm.c +++ b/codes/trmm/trmm.c @@ -71,15 +71,18 @@ void calc_error(int m, int n, DATA_TYPE POLYBENCH_2D(B,M,N,m,n)) { int i; + int n = m*n; double err = 0; double *accurate = &_binary_data_bin_start; double *test = &(B[0][0]); - /* calculate the mean squared error */ - for (i = 0; i < m*n; i++) { - err += (accurate[i] - test[i])*(accurate[i] - test[i]); + for(i = 0; i < n; i++) { + double e = fabs((accurate[i] - test[i])/accurate[i]); + if(e > 1) + e = 1; + err += e; } - err /= m*n; + err /= n; printf("error: %f\n", err); }