diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/eigen.t.c | 23 | ||||
-rw-r--r-- | test/matrix.t.c | 15 |
2 files changed, 38 insertions, 0 deletions
diff --git a/test/eigen.t.c b/test/eigen.t.c new file mode 100644 index 0000000..985a304 --- /dev/null +++ b/test/eigen.t.c @@ -0,0 +1,23 @@ +#include "lizfcm.test.h" + +UTEST(eigen, dominant_eigenvalue) { + Matrix_double *m = InitMatrixWithSize(double, 2, 2, 0.0); + m->data[0]->data[0] = 2.0; + m->data[0]->data[1] = -12.0; + m->data[1]->data[0] = 1.0; + m->data[1]->data[1] = -5.0; + + Array_double *v_guess = InitArrayWithSize(double, 2, 1.0); + double tolerance = 0.0001; + uint64_t max_iterations = 64; + + double expect_dominant_eigenvalue = -2.0; + + double approx_dominant_eigenvalue = + dominant_eigenvalue(m, v_guess, tolerance, max_iterations); + + EXPECT_NEAR(expect_dominant_eigenvalue, approx_dominant_eigenvalue, + tolerance); + free_matrix(m); + free_vector(v_guess); +} diff --git a/test/matrix.t.c b/test/matrix.t.c index 1c72b85..597d6e0 100644 --- a/test/matrix.t.c +++ b/test/matrix.t.c @@ -230,3 +230,18 @@ UTEST(matrix, m_dot_m) { free_matrix(b); free_matrix(prod); } + +UTEST(matrix, transpose) { + Matrix_double *a = InitMatrixWithSize(double, 1, 3, 12.0); + a->data[0]->data[1] = 13.0; + Matrix_double *b = InitMatrixWithSize(double, 3, 1, 12.0); + b->data[1]->data[0] = 13.0; + + Matrix_double *a_t = transpose(a); + + EXPECT_TRUE(matrix_equal(a_t, b)); + + free_matrix(a_t); + free_matrix(a); + free_matrix(b); +} |