22 #include <grass/glocale.h>
23 #include <grass/N_pde.h>
33 static int test_array_2d(
void);
34 static int test_array_3d(
void);
35 static int io_bench_2d(
void);
36 static int io_bench_3d(
void);
48 G_message(_(
"\n++ Running array unit tests ++"));
51 sum += test_array_2d();
54 sum += test_array_3d();
57 G_warning(_(
"\n-- Array unit tests failure --"));
59 G_message(_(
"\n-- Array unit tests finished successfully --"));
76 #pragma omp parallel for private (i, j) shared (cols, rows, type, a) reduction(+:res)
77 for (j = 0; j < rows; j++) {
78 for (i = 0; i <
cols; i++) {
79 if (type == CELL_TYPE) {
84 if (type == FCELL_TYPE) {
89 if (type == DCELL_TYPE) {
111 #pragma omp parallel for private (i, j) shared (rows, cols, a) reduction(+:res)
112 for (j = 0; j < rows; j++) {
113 for (i = 0; i <
cols; i++) {
135 #pragma omp parallel for private (i, j) shared (cols, rows, type, a, b) reduction(+:res)
136 for (j = 0; j < rows; j++) {
137 for (i = 0; i <
cols; i++) {
138 if (type == CELL_TYPE) {
143 if (type == FCELL_TYPE) {
148 if (type == DCELL_TYPE) {
165 int i, j, k, res = 0;
172 #pragma omp parallel for private (i, j, k) shared (depths, rows, cols, type, a) reduction(+:res)
173 for (k = 0; k < depths; k++) {
174 for (j = 0; j < rows; j++) {
175 for (i = 0; i <
cols; i++) {
176 if (type == FCELL_TYPE) {
178 (
float)i * (
float)j * (
float)k);
180 (
float)i * (
float)j * (
float)k)
183 if (type == DCELL_TYPE) {
185 (
double)i * (
double)j * (
double)k);
187 (
double)i * (
double)j * (
double)k)
203 int i, j, k, res = 0;
210 #pragma omp parallel for private (i, j, k) shared (cols, rows, depths, type, a) reduction(+:res)
211 for (k = 0; k < depths; k++) {
212 for (j = 0; j < rows; j++) {
213 for (i = 0; i <
cols; i++) {
230 int i, j, k, res = 0;
237 #pragma omp parallel for private (i, j, k) shared (depths, rows, cols, type, a, b) reduction(+:res)
238 for (k = 0; k < depths; k++) {
239 for (i = 0; i < rows; i++) {
240 for (j = 0; j <
cols; j++) {
241 if (type == FCELL_TYPE) {
246 if (type == DCELL_TYPE) {
261 int io_bench_2d(
void)
263 int sum = 0, res = 0;
278 fill_array_2d(data1);
279 fill_array_2d(data2);
280 fill_array_2d(data3);
298 "g.remove rast=gpde_lib_test_raster_1,gpde_lib_test_raster_2,gpde_lib_test_raster_3");
312 int test_array_2d(
void)
314 int sum = 0, res = 0;
344 res = fill_array_2d(data1);
346 G_warning(
"test_array_2d: error while filling array with values");
348 res = fill_array_2d(data2);
350 G_warning(
"test_array_2d: error while filling array with values");
352 res = fill_array_2d(data3);
354 G_warning(
"test_array_2d: error while filling array with values");
363 res = compare_array_2d(data1, data11);
365 G_warning(
"test_array_2d: error in N_copy_array_2d");
367 res = compare_array_2d(data2, data22);
369 G_warning(
"test_array_2d: error in N_copy_array_2d");
371 res = compare_array_2d(data3, data33);
373 G_warning(
"test_array_2d: error in N_copy_array_2d");
378 G_message(
"CELL Min %g Max %g Sum %g nonzero %i\n", min, max, ssum,
380 if (min != 0 || max != 81 || ssum != 2025 || nonzero != 100) {
381 G_warning(
"test_array_2d: error in N_calc_array_2d_stats");
385 G_message(
"CELL Min %g Max %g Sum %g nonzero %i\n", min, max, ssum,
387 if (min != 0 || max != 81 || ssum != 2025 || nonzero != 144) {
388 G_warning(
"test_array_2d: error in N_calc_array_2d_stats");
393 G_message(
"FCELL Min %g Max %g Sum %g nonzero %i\n", min, max, ssum,
395 if (min != 0 || max != 81 || ssum != 2025 || nonzero != 100) {
396 G_warning(
"test_array_2d: error in N_calc_array_2d_stats");
401 G_message(
"FCELL Min %g Max %g Sum %g nonzero %i\n", min, max, ssum,
403 if (min != 0 || max != 81 || ssum != 2025 || nonzero != 144) {
404 G_warning(
"test_array_2d: error in N_calc_array_2d_stats");
409 G_message(
"DCELL Min %g Max %g Sum %g nonzero %i\n", min, max, ssum,
411 if (min != 0 || max != 81 || ssum != 2025 || nonzero != 100) {
412 G_warning(
"test_array_2d: error in N_calc_array_2d_stats");
417 G_message(
"DCELL Min %g Max %g Sum %g nonzero %i\n", min, max, ssum,
419 if (min != 0 || max != 81 || ssum != 2025 || nonzero != 144) {
420 G_warning(
"test_array_2d: error in N_calc_array_2d_stats");
431 G_warning(
"test_array_2d: error in N_convert_array_2d_null_to_zero");
439 G_warning(
"test_array_2d: error in N_convert_array_2d_null_to_zero");
447 G_warning(
"test_array_2d: error in N_convert_array_2d_null_to_zero");
455 G_warning(
"test_array_2d: error in N_convert_array_2d_null_to_zero");
464 G_warning(
"test_array_2d: error in N_norm_array_2d");
468 G_warning(
"test_array_2d: error in N_norm_array_2d");
473 G_warning(
"test_array_2d: error in N_norm_array_2d");
477 G_warning(
"test_array_2d: error in N_norm_array_2d");
482 res = fill_array_2d_null(data1);
485 (
"test_array_2d: error while filling array with cell null values");
487 res = fill_array_2d_null(data2);
490 (
"test_array_2d: error while filling array with fcell null values");
492 res = fill_array_2d_null(data3);
495 (
"test_array_2d: error while filling array with dcell null values");
504 compare_array_2d(data1, data11);
505 compare_array_2d(data2, data22);
506 compare_array_2d(data3, data33);
510 G_warning(
"test_array_2d: error in N_norm_array_2d");
514 G_warning(
"test_array_2d: error in N_norm_array_2d");
519 G_warning(
"test_array_2d: error in N_norm_array_2d");
523 G_warning(
"test_array_2d: error in N_norm_array_2d");
533 (
"test_array_2d: error in N_convert_array_2d_null_to_zero ");
542 G_warning(
"test_array_2d: error in N_convert_array_2d_null_to_zero");
551 G_warning(
"test_array_2d: error in N_convert_array_2d_null_to_zero");
560 G_warning(
"test_array_2d: error in N_convert_array_2d_null_to_zero");
575 fill_array_2d(data1);
576 fill_array_2d(data2);
577 fill_array_2d(data3);
595 "g.remove rast=gpde_lib_test_raster_1,gpde_lib_test_raster_2,gpde_lib_test_raster_3");
613 int test_array_3d(
void)
615 int sum = 0, res = 0;
647 res = fill_array_3d(data1);
649 G_warning(
"test_array_3d: error while filling array with values");
651 res = fill_array_3d(data2);
653 G_warning(
"test_array_3d: error while filling array with values");
661 res = compare_array_3d(data1, data11);
663 G_warning(
"test_array_3d: error in N_copy_array_2d");
665 res = compare_array_3d(data1, data11);
667 G_warning(
"test_array_3d: error in N_copy_array_2d");
674 G_message(
"FELL Min %g Max %g Sum %g nonzero %i\n", min, max, ssum,
676 if (min != 0 || max != 729 || ssum != 91125 || nonzero != 1000) {
677 G_warning(
"test_array_3d: error in N_calc_array_3d_stats");
681 G_message(
"FELL Min %g Max %g Sum %g nonzero %i\n", min, max, ssum,
683 if (min != 0 || max != 729 || ssum != 91125 || nonzero != 2744) {
684 G_warning(
"test_array_3d: error in N_calc_array_3d_stats");
689 G_message(
"DCELL Min %g Max %g Sum %g nonzero %i\n", min, max, ssum,
691 if (min != 0 || max != 729 || ssum != 91125 || nonzero != 1000) {
692 G_warning(
"test_array_3d: error in N_calc_array_3d_stats");
697 G_message(
"DCELL Min %g Max %g Sum %g nonzero %i\n", min, max, ssum,
699 if (min != 0 || max != 729 || ssum != 91125 || nonzero != 2744) {
700 G_warning(
"test_array_3d: error in N_calc_array_3d_stats");
710 G_warning(
"test_array_3d: error in N_convert_array_3d_null_to_zero");
718 G_warning(
"test_array_3d: error in N_convert_array_3d_null_to_zero");
726 G_warning(
"test_array_3d: error in N_convert_array_3d_null_to_zero");
734 G_warning(
"test_array_3d: error in N_convert_array_3d_null_to_zero");
742 G_warning(
"test_array_3d: error in N_norm_array_3d");
746 G_warning(
"test_array_3d: error in N_norm_array_3d");
751 G_warning(
"test_array_3d: error in N_norm_array_3d");
755 G_warning(
"test_array_3d: error in N_norm_array_3d");
760 res = fill_array_3d_null(data1);
763 (
"test_array_3d: error while filling array with float null values");
765 res = fill_array_3d_null(data2);
768 (
"test_array_3d: error while filling array with double null values");
776 compare_array_3d(data1, data11);
777 compare_array_3d(data2, data22);
784 G_warning(
"test_array_3d: error in N_convert_array_3d_null_to_zero");
793 G_warning(
"test_array_3d: error in N_convert_array_3d_null_to_zero");
802 G_warning(
"test_array_3d: error in N_convert_array_3d_null_to_zero");
811 G_warning(
"test_array_3d: error in N_convert_array_3d_null_to_zero");
819 G_warning(
"test_array_3d: error in N_norm_array_3d");
823 G_warning(
"test_array_3d: error in N_norm_array_3d");
828 G_warning(
"test_array_3d: error in N_norm_array_3d");
832 G_warning(
"test_array_3d: error in N_norm_array_3d");
849 fill_array_3d(data1);
850 fill_array_3d(data2);
864 "g.remove rast3d=gpde_lib_test_volume_1,gpde_lib_test_volume_2");