From 3fab8bde8e1ba97c88fcf5414692827e3ad0ef8b Mon Sep 17 00:00:00 2001 From: Andrew Jewett Date: Tue, 1 Sep 2020 15:55:05 -0700 Subject: [PATCH] automated tests now declare Jacobi using const versions of these matrix types: Scalar**, vector>, array>, Scalar (*)[NF] --- tests/test_jacobi.cpp | 165 +++++++++++++++++++++++++++++++++--------- 1 file changed, 129 insertions(+), 36 deletions(-) diff --git a/tests/test_jacobi.cpp b/tests/test_jacobi.cpp index 22319d3..1712527 100644 --- a/tests/test_jacobi.cpp +++ b/tests/test_jacobi.cpp @@ -284,9 +284,9 @@ void GenRandSymm(Matrix M, // >&, vector >&> + mmult >&, const vector >&> #elif defined USE_ARRAY_OF_ARRAYS - mmult,NF>&, array,NF>&> + mmult,NF>&, const array,NF>&> #elif defined USE_C_FIXED_SIZE_ARRAYS mmult #else @@ -303,9 +303,9 @@ void GenRandSymm(Matrix M, // >&, vector >&> + mmult >&, const vector >&> #elif defined USE_ARRAY_OF_ARRAYS - mmult,NF>&, array,NF>&> + mmult,NF>&, const array,NF>&> #elif defined USE_C_FIXED_SIZE_ARRAYS mmult #else @@ -358,14 +358,10 @@ void TestJacobi(int n, //&, vector >& > ecalc(n); - - // Note: This also works: - //Jacobi&, - // vector >&, - // vector >& > - // ecalc(n); + Jacobi&, + vector >&, + const vector >& > ecalc(n); // allocate the matrix, eigenvalues, eigenvectors vector > M(n, vector(n)); @@ -381,13 +377,10 @@ void TestJacobi(int n, //&, array, NF>&> ecalc(n); - // Note: This also works: - //Jacobi&, - // array, NF>&, - // array, NF>& > - // ecalc(n); + Jacobi&, + array, NF>&, + const array, NF>&> ecalc(n); // allocate the matrix, eigenvalues, eigenvectors array, NF> M; @@ -402,7 +395,11 @@ void TestJacobi(int n, // ecalc(n); + Jacobi ecalc(n); + // allocate the matrix, eigenvalues, eigenvectors Scalar M[NF][NF]; Scalar evecs[NF][NF]; @@ -504,13 +501,37 @@ void TestJacobi(int n, //&, vector >&, vector >& >::SORT_INCREASING_ABS_EVALS); + ecalc.Diagonalize(M, + evals, + evecs, + Jacobi&, + vector >&, + const vector >& >::SORT_INCREASING_ABS_EVALS); #elif defined USE_ARRAY_OF_ARRAYS - ecalc.Diagonalize(M, evals, evecs, Jacobi&, array,NF>&, array,NF>&>::SORT_INCREASING_ABS_EVALS); + ecalc.Diagonalize(M, + evals, + evecs, + Jacobi&, + array,NF>&, + const array,NF>&>::SORT_INCREASING_ABS_EVALS); #elif defined USE_C_FIXED_SIZE_ARRAYS - ecalc.Diagonalize(M, evals, evecs, Jacobi::SORT_INCREASING_ABS_EVALS); + ecalc.Diagonalize(M, + evals, + evecs, + Jacobi::SORT_INCREASING_ABS_EVALS); #else - ecalc.Diagonalize(M, evals, evecs, Jacobi::SORT_INCREASING_ABS_EVALS); + ecalc.Diagonalize(M, + evals, + evecs, + Jacobi::SORT_INCREASING_ABS_EVALS); #endif for (int i = 1; i < n; i++) @@ -518,13 +539,37 @@ void TestJacobi(int n, //&, vector >&, vector >& >::SORT_DECREASING_ABS_EVALS); + ecalc.Diagonalize(M, + evals, + evecs, + Jacobi&, + vector >&, + const vector >& >::SORT_DECREASING_ABS_EVALS); #elif defined USE_ARRAY_OF_ARRAYS - ecalc.Diagonalize(M, evals, evecs, Jacobi&, array,NF>&, array,NF>&>::SORT_DECREASING_ABS_EVALS); + ecalc.Diagonalize(M, + evals, + evecs, + Jacobi&, + array,NF>&, + const array,NF>&>::SORT_DECREASING_ABS_EVALS); #elif defined USE_C_FIXED_SIZE_ARRAYS - ecalc.Diagonalize(M, evals, evecs, Jacobi::SORT_DECREASING_ABS_EVALS); + ecalc.Diagonalize(M, + evals, + evecs, + Jacobi::SORT_DECREASING_ABS_EVALS); #else - ecalc.Diagonalize(M, evals, evecs, Jacobi::SORT_DECREASING_ABS_EVALS); + ecalc.Diagonalize(M, + evals, + evecs, + Jacobi::SORT_DECREASING_ABS_EVALS); #endif for (int i = 1; i < n; i++) @@ -532,26 +577,74 @@ void TestJacobi(int n, //&, vector >&, vector >& >::SORT_INCREASING_EVALS); + ecalc.Diagonalize(M, + evals, + evecs, + Jacobi&, + vector >&, + const vector >& >::SORT_INCREASING_EVALS); #elif defined USE_ARRAY_OF_ARRAYS - ecalc.Diagonalize(M, evals, evecs, Jacobi&, array,NF>&, array,NF>&>::SORT_INCREASING_EVALS); + ecalc.Diagonalize(M, + evals, + evecs, + Jacobi&, + array,NF>&, + const array,NF>&>::SORT_INCREASING_EVALS); #elif defined USE_C_FIXED_SIZE_ARRAYS - ecalc.Diagonalize(M, evals, evecs, Jacobi::SORT_INCREASING_EVALS); + ecalc.Diagonalize(M, + evals, + evecs, + Jacobi::SORT_INCREASING_EVALS); #else - ecalc.Diagonalize(M, evals, evecs, Jacobi::SORT_INCREASING_EVALS); + ecalc.Diagonalize(M, + evals, + evecs, + Jacobi::SORT_INCREASING_EVALS); #endif for (int i = 1; i < n; i++) assert(evals[i-1] <= evals[i]); // test DO_NOT_SORT #if defined USE_VECTOR_OF_VECTORS - ecalc.Diagonalize(M, evals, evecs, Jacobi&, vector >&, vector >& >::DO_NOT_SORT); + ecalc.Diagonalize(M, + evals, + evecs, + Jacobi&, + vector >&, + const vector >& >::DO_NOT_SORT); #elif defined USE_ARRAY_OF_ARRAYS - ecalc.Diagonalize(M, evals, evecs, Jacobi&, array,NF>&, array,NF>&>::DO_NOT_SORT); + ecalc.Diagonalize(M, + evals, + evecs, + Jacobi&, + array,NF>&, + const array,NF>&>::DO_NOT_SORT); #elif defined USE_C_FIXED_SIZE_ARRAYS - ecalc.Diagonalize(M, evals, evecs, Jacobi::DO_NOT_SORT); + ecalc.Diagonalize(M, + evals, + evecs, + Jacobi::DO_NOT_SORT); #else - ecalc.Diagonalize(M, evals, evecs, Jacobi::DO_NOT_SORT); + ecalc.Diagonalize(M, + evals, + evecs, + Jacobi::DO_NOT_SORT); #endif } //if (test_code_coverage)