diff options
Diffstat (limited to 'tests/src/test_gensvm_simplex.c')
| -rw-r--r-- | tests/src/test_gensvm_simplex.c | 182 |
1 files changed, 159 insertions, 23 deletions
diff --git a/tests/src/test_gensvm_simplex.c b/tests/src/test_gensvm_simplex.c index c13c4ea..c217ca0 100644 --- a/tests/src/test_gensvm_simplex.c +++ b/tests/src/test_gensvm_simplex.c @@ -10,48 +10,183 @@ char *test_simplex_1() { - double *U = Calloc(double, 2*1); + struct GenModel *model = gensvm_init_model(); + model->U = Calloc(double, 2*1); + model->K = 2; - gensvm_simplex(2, U); + gensvm_simplex(model); - mu_assert(matrix_get(U, 1, 0, 0) == -0.5, "U(0, 0) incorrect."); - mu_assert(matrix_get(U, 1, 1, 0) == 0.5, "U(1, 0) incorrect."); + mu_assert(fabs(matrix_get(model->U, 1, 0, 0) - -0.5) < 1e-14, + "U(0, 0) incorrect."); + mu_assert(fabs(matrix_get(model->U, 1, 1, 0) - 0.5) < 1e-14, + "U(1, 0) incorrect."); - free(U); + gensvm_free_model(model); return NULL; } char *test_simplex_2() { - double *U = Calloc(double, 4*3); - - gensvm_simplex(4, U); - - mu_assert(matrix_get(U, 3, 0, 0) == -0.5, "U(0, 0) incorrect."); - mu_assert(matrix_get(U, 3, 1, 0) == 0.5, "U(1, 0) incorrect."); - mu_assert(matrix_get(U, 3, 2, 0) == 0.0, "U(2, 0) incorrect."); - mu_assert(matrix_get(U, 3, 3, 0) == 0.0, "U(3, 0) incorrect."); - - mu_assert(fabs(matrix_get(U, 3, 0, 1) - -0.5/sqrt(3)) < 1e-14, + struct GenModel *model = gensvm_init_model(); + model->U = Calloc(double, 4*3); + model->K = 4; + + gensvm_simplex(model); + + mu_assert(fabs(matrix_get(model->U, 3, 0, 0) - -0.5) < 1e-14, + "U(0, 0) incorrect."); + mu_assert(fabs(matrix_get(model->U, 3, 1, 0) - 0.5) < 1e-14, + "U(1, 0) incorrect."); + mu_assert(fabs(matrix_get(model->U, 3, 2, 0) - 0.0) < 1e-14, + "U(2, 0) incorrect."); + mu_assert(fabs(matrix_get(model->U, 3, 3, 0) - 0.0) < 1e-14, + "U(3, 0) incorrect."); + + mu_assert(fabs(matrix_get(model->U, 3, 0, 1) - -0.5/sqrt(3)) < 1e-14, "U(0, 1) incorrect."); - mu_assert(fabs(matrix_get(U, 3, 1, 1) - -0.5/sqrt(3)) < 1e-14, + mu_assert(fabs(matrix_get(model->U, 3, 1, 1) - -0.5/sqrt(3)) < 1e-14, "U(1, 1) incorrect."); - mu_assert(fabs(matrix_get(U, 3, 2, 1) - 1.0/sqrt(3)) < 1e-14, + mu_assert(fabs(matrix_get(model->U, 3, 2, 1) - 1.0/sqrt(3)) < 1e-14, "U(2, 1) incorrect."); - mu_assert(fabs(matrix_get(U, 3, 3, 1) - 0.0) < 1e-14, + mu_assert(fabs(matrix_get(model->U, 3, 3, 1) - 0.0) < 1e-14, "U(3, 1) incorrect."); - mu_assert(fabs(matrix_get(U, 3, 0, 2) - -1.0/sqrt(24)) < 1e-14, + mu_assert(fabs(matrix_get(model->U, 3, 0, 2) - -1.0/sqrt(24)) < 1e-14, "U(0, 2) incorrect."); - mu_assert(fabs(matrix_get(U, 3, 1, 2) - -1.0/sqrt(24)) < 1e-14, + mu_assert(fabs(matrix_get(model->U, 3, 1, 2) - -1.0/sqrt(24)) < 1e-14, "U(1, 2) incorrect."); - mu_assert(fabs(matrix_get(U, 3, 2, 2) - -1.0/sqrt(24)) < 1e-14, + mu_assert(fabs(matrix_get(model->U, 3, 2, 2) - -1.0/sqrt(24)) < 1e-14, "U(2, 2) incorrect."); - mu_assert(fabs(matrix_get(U, 3, 3, 2) - 3.0/sqrt(24)) < 1e-14, + mu_assert(fabs(matrix_get(model->U, 3, 3, 2) - 3.0/sqrt(24)) < 1e-14, "U(3, 2) incorrect."); - free(U); + gensvm_free_model(model); + + return NULL; +} + +char *test_gensvm_simplex_diff() +{ + struct GenData *data = gensvm_init_data(); + struct GenModel *model = gensvm_init_model(); + + int n = 8, + m = 3, + K = 4; + model->n = n; + model->m = m; + model->K = K; + data->n = n; + data->m = m; + data->K = K; + + gensvm_allocate_model(model); + gensvm_simplex(model); + + // start test code // + gensvm_simplex_diff(model); + mu_assert(fabs(model->UU[0] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 0"); + mu_assert(fabs(model->UU[1] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 1"); + mu_assert(fabs(model->UU[2] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 2"); + mu_assert(fabs(model->UU[3] - -1.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 3"); + mu_assert(fabs(model->UU[4] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 4"); + mu_assert(fabs(model->UU[5] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 5"); + mu_assert(fabs(model->UU[6] - -0.5000000000000000) < 1e-14, + "Incorrect value of model->UU at 6"); + mu_assert(fabs(model->UU[7] - -0.8660254037844388) < 1e-14, + "Incorrect value of model->UU at 7"); + mu_assert(fabs(model->UU[8] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 8"); + mu_assert(fabs(model->UU[9] - -0.5000000000000000) < 1e-14, + "Incorrect value of model->UU at 9"); + mu_assert(fabs(model->UU[10] - -0.2886751345948129) < 1e-14, + "Incorrect value of model->UU at 10"); + mu_assert(fabs(model->UU[11] - -0.8164965809277261) < 1e-14, + "Incorrect value of model->UU at 11"); + mu_assert(fabs(model->UU[12] - 1.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 12"); + mu_assert(fabs(model->UU[13] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 13"); + mu_assert(fabs(model->UU[14] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 14"); + mu_assert(fabs(model->UU[15] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 15"); + mu_assert(fabs(model->UU[16] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 16"); + mu_assert(fabs(model->UU[17] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 17"); + mu_assert(fabs(model->UU[18] - 0.5000000000000000) < 1e-14, + "Incorrect value of model->UU at 18"); + mu_assert(fabs(model->UU[19] - -0.8660254037844388) < 1e-14, + "Incorrect value of model->UU at 19"); + mu_assert(fabs(model->UU[20] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 20"); + mu_assert(fabs(model->UU[21] - 0.5000000000000000) < 1e-14, + "Incorrect value of model->UU at 21"); + mu_assert(fabs(model->UU[22] - -0.2886751345948129) < 1e-14, + "Incorrect value of model->UU at 22"); + mu_assert(fabs(model->UU[23] - -0.8164965809277261) < 1e-14, + "Incorrect value of model->UU at 23"); + mu_assert(fabs(model->UU[24] - 0.5000000000000000) < 1e-14, + "Incorrect value of model->UU at 24"); + mu_assert(fabs(model->UU[25] - 0.8660254037844388) < 1e-14, + "Incorrect value of model->UU at 25"); + mu_assert(fabs(model->UU[26] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 26"); + mu_assert(fabs(model->UU[27] - -0.5000000000000000) < 1e-14, + "Incorrect value of model->UU at 27"); + mu_assert(fabs(model->UU[28] - 0.8660254037844388) < 1e-14, + "Incorrect value of model->UU at 28"); + mu_assert(fabs(model->UU[29] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 29"); + mu_assert(fabs(model->UU[30] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 30"); + mu_assert(fabs(model->UU[31] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 31"); + mu_assert(fabs(model->UU[32] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 32"); + mu_assert(fabs(model->UU[33] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 33"); + mu_assert(fabs(model->UU[34] - 0.5773502691896258) < 1e-14, + "Incorrect value of model->UU at 34"); + mu_assert(fabs(model->UU[35] - -0.8164965809277261) < 1e-14, + "Incorrect value of model->UU at 35"); + mu_assert(fabs(model->UU[36] - 0.5000000000000000) < 1e-14, + "Incorrect value of model->UU at 36"); + mu_assert(fabs(model->UU[37] - 0.2886751345948129) < 1e-14, + "Incorrect value of model->UU at 37"); + mu_assert(fabs(model->UU[38] - 0.8164965809277261) < 1e-14, + "Incorrect value of model->UU at 38"); + mu_assert(fabs(model->UU[39] - -0.5000000000000000) < 1e-14, + "Incorrect value of model->UU at 39"); + mu_assert(fabs(model->UU[40] - 0.2886751345948129) < 1e-14, + "Incorrect value of model->UU at 40"); + mu_assert(fabs(model->UU[41] - 0.8164965809277261) < 1e-14, + "Incorrect value of model->UU at 41"); + mu_assert(fabs(model->UU[42] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 42"); + mu_assert(fabs(model->UU[43] - -0.5773502691896258) < 1e-14, + "Incorrect value of model->UU at 43"); + mu_assert(fabs(model->UU[44] - 0.8164965809277261) < 1e-14, + "Incorrect value of model->UU at 44"); + mu_assert(fabs(model->UU[45] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 45"); + mu_assert(fabs(model->UU[46] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 46"); + mu_assert(fabs(model->UU[47] - 0.0000000000000000) < 1e-14, + "Incorrect value of model->UU at 47"); + + // end test code // + + gensvm_free_model(model); + gensvm_free_data(data); return NULL; } @@ -61,6 +196,7 @@ char *all_tests() mu_suite_start(); mu_run_test(test_simplex_1); mu_run_test(test_simplex_2); + mu_run_test(test_gensvm_simplex_diff); return NULL; } |
