diff --git a/codes/covariance/covariance.c b/codes/covariance/covariance.c index 6c50a926c7b2719d121241157c44672f9324e33e..3c5a7fe3d24074fa53eda44f778be98bd78d46b9 100644 --- a/codes/covariance/covariance.c +++ b/codes/covariance/covariance.c @@ -57,6 +57,25 @@ void print_array(int m, POLYBENCH_DUMP_FINISH; } +extern double _binary_data_bin_start; +extern double _binary_data_bin_end; + +static +void calc_error(int m, + DATA_TYPE POLYBENCH_2D(cov,M,M,m,m)) +{ + int i, j; + 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]); + } + err /= m*m; + printf("error: %f\n", err); +} /* Main computational kernel. The whole function will be timed, including the call and return. */ @@ -129,6 +148,8 @@ int main(int argc, char** argv) by the function call in argument. */ polybench_prevent_dce(print_array(m, POLYBENCH_ARRAY(cov))); + calc_error(m, POLYBENCH_ARRAY(cov)); + /* Be clean. */ POLYBENCH_FREE_ARRAY(data); POLYBENCH_FREE_ARRAY(cov); diff --git a/codes/covariance/data.bin b/codes/covariance/data.bin new file mode 100644 index 0000000000000000000000000000000000000000..0359fe6efea2151826df997eb756c0f71628f709 Binary files /dev/null and b/codes/covariance/data.bin differ diff --git a/codes/covariance/data.o b/codes/covariance/data.o new file mode 100644 index 0000000000000000000000000000000000000000..0d97b41c61a121ac87e17fd12224eec5fad543af Binary files /dev/null and b/codes/covariance/data.o differ