Skip to content
Snippets Groups Projects
Commit 03329106 authored by Tim Keil's avatar Tim Keil
Browse files

[test] fix for issue 41

parent 9bb92f21
No related branches found
No related tags found
No related merge requests found
......@@ -183,65 +183,6 @@ struct EigenSolverTest : public ::testing::Test
}
} // ... gives_correct_eigenvalues(...)
void gives_correct_eigenvalues_in_correct_order(const Common::Configuration& tolerances = {}) const
{
ASSERT_TRUE(all_matrices_and_expected_eigenvalues_and_vectors_are_computed_);
for (const auto& tp : EigenSolverOpts::types()) {
const double tolerance = tolerances.get(tp, 1e-15);
EigenSolverType solver(matrix_, tp);
try {
const auto eigenvalues = solver.eigenvalues();
if (tolerance > 0) {
EXPECT_TRUE(Common::FloatCmp::eq(eigenvalues, expected_eigenvalues_, {tolerance, tolerance}))
<< "\n\nactual eigenvalues: " << eigenvalues << "\n\nexpected eigenvalues: " << expected_eigenvalues_
<< "\n\ntype: " << tp << "\n\ntolerance: " << tolerance;
} else {
// negative tolerance: we expect a failure
EXPECT_FALSE(Common::FloatCmp::eq(eigenvalues, expected_eigenvalues_, {tolerance, tolerance}))
<< "\n\nTHIS IS A GOOD THING! UPDATE THE EXPECTATIONS IN tolerances!\n\n"
<< "\n\nactual eigenvalues: " << eigenvalues << "\n\nexpected eigenvalues: " << expected_eigenvalues_
<< "\n\ntype: " << tp << "\n\ntolerance: " << tolerance;
}
} catch (const Dune::MathError&) {
if (tolerance > 0) {
FAIL() << "Dune::MathError thrown when trying to get eigenvalues!"
<< "\n\ntype: " << tp << "\n\ntolerance: " << tolerance;
}
}
}
} // ... gives_correct_eigenvalues_in_correct_order(...)
void gives_correct_eigenvectors_in_correct_order(const Common::Configuration& tolerances = {}) const
{
ASSERT_TRUE(all_matrices_and_expected_eigenvalues_and_vectors_are_computed_);
for (const auto& tp : EigenSolverOpts::types()) {
const double tolerance = tolerances.get(tp, 1e-15);
try {
EigenSolverType solver(matrix_, tp);
const auto& actual_eigenvectors = solver.eigenvectors();
EXPECT_EQ(Common::get_matrix_rows(matrix_), Common::get_matrix_rows(actual_eigenvectors));
EXPECT_EQ(Common::get_matrix_rows(matrix_), Common::get_matrix_cols(actual_eigenvectors));
if (tolerance > 0) {
EXPECT_TRUE(Common::FloatCmp::eq(
actual_eigenvectors, expected_eigenvectors_, {tolerance, tolerance}, {tolerance, tolerance}))
<< "\n\nactual eigenvectors: " << actual_eigenvectors
<< "\n\nexpected eigenvectors: " << expected_eigenvectors_ << "\n\ntolerance: " << tolerance
<< "\n\ntype: " << tp;
} else {
// negative tolerance: we expect a failure
EXPECT_FALSE(Common::FloatCmp::eq(actual_eigenvectors, expected_eigenvectors_))
<< "\n\nTHIS IS A GOOD THING! UPDATE THE EXPECTATIONS IN tolerances!\n\n"
<< "\n\nactual eigenvectors: " << actual_eigenvectors
<< "\n\nexpected eigenvectors: " << expected_eigenvectors_ << "\n\ntype: " << tp;
}
} catch (const Dune::MathError&) {
if (tolerance > 0) {
FAIL() << "Dune::MathError thrown when trying to get eigenvalues!"
<< "\n\ntype: " << tp << "\n\ntolerance: " << tolerance;
}
}
}
} // ... gives_correct_eigenvectors_in_correct_order(...)
void gives_correct_eigendecomposition(const Common::Configuration& tolerances = {}) const
{
......@@ -290,7 +231,6 @@ struct EigenSolverTest : public ::testing::Test
MatrixType unit_matrix_;
MatrixType matrix_;
EigenValuesType expected_eigenvalues_;
ComplexMatrixType expected_eigenvectors_;
}; // ... struct EigenSolverTest
......@@ -362,29 +302,6 @@ struct EigenSolverTestForMatricesWithRealEigenvaluesAndVectors : public EigenSol
}
} // ... gives_correct_real_eigenvalues(...)
void gives_correct_real_eigenvalues_in_correct_order(const Common::Configuration& tolerances = {}) const
{
ASSERT_TRUE(all_matrices_and_expected_eigenvalues_and_vectors_are_computed_);
for (const auto& tp : EigenSolverOpts::types()) {
const double tolerance = tolerances.get(tp, 1e-15);
EigenSolverType solver(matrix_, tp);
if (tolerance > 0) {
const auto real_eigenvalues = solver.real_eigenvalues();
EXPECT_TRUE(Common::FloatCmp::eq(real_eigenvalues, expected_real_eigenvalues_, tolerance))
<< "\n\nactual eigenvalues: " << real_eigenvalues
<< "\n\nexpected (real) eigenvalues: " << expected_real_eigenvalues_ << "\n\ntolerance: " << tolerance
<< "\n\ntype: " << tp;
} else {
// negative tolerance: we expect a failure
const auto real_eigenvalues = solver.real_eigenvalues(); /// \todo: Add try/catch around this, too!
EXPECT_FALSE(Common::FloatCmp::eq(real_eigenvalues, expected_real_eigenvalues_))
<< "\n\nTHIS IS A GOOD THING! UPDATE THE EXPECTATIONS IN tolerances!\n\n"
<< "\n\nactual eigenvalues: " << real_eigenvalues
<< "\n\nexpected (real) eigenvalues: " << expected_real_eigenvalues_ << "\n\ntype: " << tp;
}
}
} // ... gives_correct_real_eigenvalues_in_correct_order(...)
void gives_correct_max_eigenvalue(const Common::Configuration& tolerances = {}) const
{
ASSERT_TRUE(all_matrices_and_expected_eigenvalues_and_vectors_are_computed_);
......@@ -431,67 +348,6 @@ struct EigenSolverTestForMatricesWithRealEigenvaluesAndVectors : public EigenSol
}
}
void gives_correct_real_eigenvectors_in_correct_order(const Common::Configuration& tolerances = {}) const
{
ASSERT_TRUE(all_matrices_and_expected_eigenvalues_and_vectors_are_computed_);
for (const auto& tp : EigenSolverOpts::types()) {
const double tolerance = tolerances.get(tp, 1e-15);
EigenSolverType solver(matrix_, tp);
const auto actual_eigenvectors = solver.eigenvectors();
const size_t rows = Common::get_matrix_rows(actual_eigenvectors);
const size_t cols = Common::get_matrix_cols(actual_eigenvectors);
auto actual_eigenvectors_as_real = Common::create<RealMatrixType>(rows, cols);
for (size_t ii = 0; ii < rows; ++ii)
for (size_t jj = 0; jj < cols; ++jj) {
const auto complex_entry = Common::get_matrix_entry(actual_eigenvectors, ii, jj);
if (tolerance > 0)
EXPECT_DOUBLE_EQ(0, complex_entry.imag());
Common::set_matrix_entry(actual_eigenvectors_as_real, ii, jj, complex_entry.real());
}
if (tolerance > 0) {
EXPECT_TRUE(
Common::FloatCmp::eq(actual_eigenvectors_as_real, expected_real_eigenvectors_, tolerance, tolerance))
<< "\n\nactual eigenvectors: " << actual_eigenvectors_as_real
<< "\n\nexpected eigenvectors: " << expected_real_eigenvectors_ << "\n\ntolerance: " << tolerance
<< "\n\ntype: " << tp;
} else {
EXPECT_FALSE(
Common::FloatCmp::eq(actual_eigenvectors_as_real, expected_real_eigenvectors_, tolerance, tolerance))
<< "\n\nTHIS IS A GOOD THING! UPDATE THE EXPECTATIONS IN tolerances!\n\n"
<< "\n\nactual eigenvectors: " << actual_eigenvectors_as_real
<< "\n\nexpected eigenvectors: " << expected_real_eigenvectors_ << "\n\ntype: " << tp;
}
if (tolerance > 0) {
const auto actual_real_eigenvectors = solver.real_eigenvectors();
EXPECT_EQ(Common::get_matrix_rows(matrix_), Common::get_matrix_rows(actual_real_eigenvectors));
EXPECT_EQ(Common::get_matrix_rows(matrix_), Common::get_matrix_cols(actual_real_eigenvectors));
EXPECT_TRUE(Common::FloatCmp::eq(actual_real_eigenvectors, expected_real_eigenvectors_, tolerance, tolerance))
<< "\n\nactual eigenvectors: " << actual_real_eigenvectors
<< "\n\nexpected eigenvectors: " << expected_real_eigenvectors_ << "\n\ntolerance: " << tolerance
<< "\n\ntype: " << tp;
} else {
// negative tolerance: we expect a failure
bool all_is_as_expected = false;
try {
const auto actual_real_eigenvectors = solver.real_eigenvectors();
EXPECT_FALSE(Common::FloatCmp::eq(actual_real_eigenvectors, expected_real_eigenvectors_))
<< "\n\nactual eigenvectors: " << actual_real_eigenvectors
<< "\n\nexpected eigenvectors: " << expected_real_eigenvectors_ << "\n\ntype: " << tp;
all_is_as_expected = true;
} catch (const Exceptions::eigen_solver_failed_bc_eigenvalues_are_not_real_as_requested&) {
all_is_as_expected = true;
} catch (const Exceptions::eigen_solver_failed_bc_eigenvectors_are_not_real_as_requested&) {
all_is_as_expected = true;
} catch (...) {
all_is_as_expected = true;
FAIL() << "Expected LA::Exceptions::eigen_solver_failed_bc_eigenvalues_are_not_real_as_requested or "
"LA::Exceptions::eigen_solver_failed_bc_eigenvectors_are_not_real_as_requested!";
}
if (!all_is_as_expected)
FAIL() << "THIS IS A GOOD THING! CHECK THE EIGENVECTORS AND ALTER THE EXPECTATIONS IN tolerances!";
}
}
} // ... gives_correct_real_eigenvectors_in_correct_order(...)
void gives_correct_real_eigendecomposition(const Common::Configuration& tolerances = {}) const
{
......@@ -543,11 +399,9 @@ struct EigenSolverTestForMatricesWithRealEigenvaluesAndVectors : public EigenSol
using BaseType::all_matrices_and_expected_eigenvalues_and_vectors_are_computed_;
using BaseType::matrix_;
using BaseType::expected_eigenvalues_;
using BaseType::expected_eigenvectors_;
RealEigenValuesType expected_real_eigenvalues_;
RealType expected_max_ev_;
RealType expected_min_ev_;
RealMatrixType expected_real_eigenvectors_;
}; // struct EigenSolverTestForMatricesWithRealEigenvaluesAndVectors
......
......@@ -112,20 +112,12 @@ struct EigenSolverForMatrixFromEigensExample_{{T_NAME}}
" 0.35304325510300372 "
" 0.61781064692153476+0.12941286410485134i "
" 0.61781064692153476-0.12941286410485134i]");
expected_eigenvectors_ = XT::Common::from_string<ComplexMatrixType>(
"[-0.2916493853334598-0.45353428327568535i -0.2916493853334598+0.45353428327568535i -0.060739856420097799 -0.732892086787302 0.58989693747516225-0.12134050155506512i 0.58989693747516225+0.12134050155506512i; "
" 0.13427786119296695-0.10415042620914604i 0.13427786119296695+0.10415042620914604i -0.79936618427058692 0.13588801812778584 0.33446578429890217+0.36779173930086734i 0.33446578429890217-0.36779173930086734i; "
" -0.4224933428958097-0.17959111262899077i -0.4224933428958097+0.17959111262899077i 0.19181897363210443 0.056319404917871921 -0.33512506847695012-0.1433533445630015i -0.33512506847695012+0.1433533445630015i; "
" -0.58861043190958418+0.027350002433760786i -0.58861043190958418-0.027350002433760786i -0.078824737066622547 -0.62743714713230025 0.32187174947115971-0.1554720757387448i 0.32187174947115971+0.1554720757387448i; "
" -0.24767280752759105+0.13196040251638746i -0.24767280752759105-0.13196040251638746i 0.40098186135709829 0.21799673455433938 -0.33488773557308854-0.076133571019896026i -0.33488773557308854+0.076133571019896026i; "
" 0.10538083226488951+0.18040258229827225i 0.10538083226488951-0.18040258229827225i -0.39182912389260799 -0.0056400714249183401 -0.032444861799488058+0.10261186083116479i -0.032444861799488058-0.10261186083116479i]"); // clang-format on
all_matrices_and_expected_eigenvalues_and_vectors_are_computed_ = true;
}
using BaseType::all_matrices_and_expected_eigenvalues_and_vectors_are_computed_;
using BaseType::matrix_;
using BaseType::expected_eigenvalues_;
using BaseType::expected_eigenvectors_;
}; // struct EigenSolverForMatrixFromEigensExample_{{T_NAME}}
......@@ -164,17 +156,6 @@ TEST_F(EigenSolverForMatrixFromEigensExample_{{T_NAME}}, gives_correct_eigenvalu
gives_correct_eigenvalues({ {"lapack", "1e-14"}, {"eigen", "1e-15"}, {"numpy", "1e-14"}, {"shifted_qr", /*we_expect_a_failure: */ "-1"} });
}
TEST_F(EigenSolverForMatrixFromEigensExample_{{T_NAME}}, gives_correct_eigenvalues_in_correct_order)
{
gives_correct_eigenvalues_in_correct_order({ {"lapack", "1e-14"}, {"eigen", "1e-15"}, {"numpy", "1e-14"}, {"shifted_qr", /*we_expect_a_failure: */ "-1"} });
}
TEST_F(EigenSolverForMatrixFromEigensExample_{{T_NAME}}, gives_correct_eigenvectors_in_correct_order)
{
gives_correct_eigenvectors_in_correct_order(
{ {"lapack", /*we expect a failure: */ "-1"}, {"eigen", "1e-15"}, {"numpy", /*we expect a failure: */ "-1"}, {"shifted_qr", /*we_expect_a_failure: */ "-1"} });
}
TEST_F(EigenSolverForMatrixFromEigensExample_{{T_NAME}}, gives_correct_eigendecomposition)
{
gives_correct_eigendecomposition({ {"lapack", "1e-14"}, {"eigen", "1e-14"}, {"numpy", "1e-14"}, {"shifted_qr", /*we_expect_a_failure: */ "-1"} });
......
......@@ -29,15 +29,12 @@ struct EigenSolverForRealMatrixWithComplexEvs_{{T_NAME}}
{
matrix_ = XT::Common::from_string<MatrixType>("[1 1; -1 1]");
expected_eigenvalues_ = XT::Common::from_string<EigenValuesType>("[1+1i 1-1i]");
expected_eigenvectors_ = XT::Common::from_string<ComplexMatrixType>(
"[0.70710678118654746 0.70710678118654746; 0+0.70710678118654746i 0-0.70710678118654746i]");
all_matrices_and_expected_eigenvalues_and_vectors_are_computed_ = true;
}
using BaseType::all_matrices_and_expected_eigenvalues_and_vectors_are_computed_;
using BaseType::matrix_;
using BaseType::expected_eigenvalues_;
using BaseType::expected_eigenvectors_;
}; // struct EigenSolverForRealMatrixWithComplexEvs_{{T_NAME}}
......@@ -76,11 +73,6 @@ TEST_F(EigenSolverForRealMatrixWithComplexEvs_{{T_NAME}}, gives_correct_eigenval
gives_correct_eigenvalues( { {"shifted_qr", /*we_expect_a_failure: */ "-1"} } );
}
TEST_F(EigenSolverForRealMatrixWithComplexEvs_{{T_NAME}}, gives_correct_eigenvalues_in_correct_order)
{
gives_correct_eigenvalues_in_correct_order( { {"shifted_qr", /*we_expect_a_failure: */ "-1"} } );
}
TEST_F(EigenSolverForRealMatrixWithComplexEvs_{{T_NAME}}, gives_correct_eigendecomposition)
{
gives_correct_eigendecomposition( { {"shifted_qr", /*we_expect_a_failure: */ "-1"} } );
......
......@@ -37,24 +37,20 @@ struct EigenSolverForRowWiseScaledUniMatrix_{{T_NAME}}
expected_eigenvalues_ = XT::Common::create<EigenValuesType>(TESTMATRIXSIZE);
for (size_t ii = 0; ii < TESTMATRIXSIZE; ++ii)
expected_eigenvalues_[ii] = ii + 1;
expected_eigenvectors_ = XT::LA::eye_matrix<ComplexMatrixType>(TESTMATRIXSIZE, TESTMATRIXSIZE);
expected_real_eigenvalues_ = XT::Common::create<RealEigenValuesType>(TESTMATRIXSIZE);
for (size_t ii = 0; ii < TESTMATRIXSIZE; ++ii)
expected_real_eigenvalues_[ii] = ii + 1;
expected_max_ev_ = TESTMATRIXSIZE;
expected_min_ev_ = 1;
expected_real_eigenvectors_ = XT::LA::eye_matrix<RealMatrixType>(TESTMATRIXSIZE, TESTMATRIXSIZE);
all_matrices_and_expected_eigenvalues_and_vectors_are_computed_ = true;
}
using BaseType::all_matrices_and_expected_eigenvalues_and_vectors_are_computed_;
using BaseType::matrix_;
using BaseType::expected_eigenvalues_;
using BaseType::expected_eigenvectors_;
using BaseType::expected_real_eigenvalues_;
using BaseType::expected_max_ev_;
using BaseType::expected_min_ev_;
using BaseType::expected_real_eigenvectors_;
}; // struct EigenSolverForRowWiseScaledUniMatrix_{{T_NAME}}
......@@ -93,21 +89,11 @@ TEST_F(EigenSolverForRowWiseScaledUniMatrix_{{T_NAME}}, gives_correct_eigenvalue
gives_correct_eigenvalues();
}
TEST_F(EigenSolverForRowWiseScaledUniMatrix_{{T_NAME}}, gives_correct_eigenvalues_in_correct_order)
{
gives_correct_eigenvalues_in_correct_order();
}
TEST_F(EigenSolverForRowWiseScaledUniMatrix_{{T_NAME}}, gives_correct_real_eigenvalues)
{
gives_correct_real_eigenvalues();
}
TEST_F(EigenSolverForRowWiseScaledUniMatrix_{{T_NAME}}, gives_correct_real_eigenvalues_in_correct_order)
{
gives_correct_real_eigenvalues_in_correct_order();
}
TEST_F(EigenSolverForRowWiseScaledUniMatrix_{{T_NAME}}, gives_correct_max_eigenvalue)
{
gives_correct_max_eigenvalue();
......@@ -118,16 +104,6 @@ TEST_F(EigenSolverForRowWiseScaledUniMatrix_{{T_NAME}}, gives_correct_min_eigenv
gives_correct_min_eigenvalue();
}
TEST_F(EigenSolverForRowWiseScaledUniMatrix_{{T_NAME}}, gives_correct_eigenvectors_in_correct_order)
{
gives_correct_eigenvectors_in_correct_order();
}
TEST_F(EigenSolverForRowWiseScaledUniMatrix_{{T_NAME}}, gives_correct_real_eigenvectors_in_correct_order)
{
gives_correct_real_eigenvectors_in_correct_order();
}
TEST_F(EigenSolverForRowWiseScaledUniMatrix_{{T_NAME}}, gives_correct_eigendecomposition)
{
gives_correct_eigendecomposition();
......
......@@ -31,24 +31,18 @@ struct EigenSolverForMatrixFullOfOnes_{{T_NAME}}
{
matrix_ = XT::Common::from_string<MatrixType>("[1 1; 1 1]");
expected_eigenvalues_ = XT::Common::from_string<EigenValuesType>("[2 0]");
expected_eigenvectors_ = XT::Common::from_string<ComplexMatrixType>(
"[0.70710678118654757 -0.70710678118654757; 0.70710678118654757 0.70710678118654757]");
expected_real_eigenvalues_ = XT::Common::from_string<RealEigenValuesType>("[2 0]");
expected_max_ev_ = 2;
expected_min_ev_ = 0;
expected_real_eigenvectors_ = XT::Common::from_string<RealMatrixType>(
"[0.70710678118654757 -0.70710678118654757; 0.70710678118654757 0.70710678118654757]");
all_matrices_and_expected_eigenvalues_and_vectors_are_computed_ = true;
}
using BaseType::all_matrices_and_expected_eigenvalues_and_vectors_are_computed_;
using BaseType::matrix_;
using BaseType::expected_eigenvalues_;
using BaseType::expected_eigenvectors_;
using BaseType::expected_real_eigenvalues_;
using BaseType::expected_max_ev_;
using BaseType::expected_min_ev_;
using BaseType::expected_real_eigenvectors_;
}; // struct EigenSolverForMatrixFullOfOnes_{{T_NAME}}
......@@ -87,21 +81,11 @@ TEST_F(EigenSolverForMatrixFullOfOnes_{{T_NAME}}, gives_correct_eigenvalues)
gives_correct_eigenvalues();
}
TEST_F(EigenSolverForMatrixFullOfOnes_{{T_NAME}}, gives_correct_eigenvalues_in_correct_order)
{
gives_correct_eigenvalues_in_correct_order();
}
TEST_F(EigenSolverForMatrixFullOfOnes_{{T_NAME}}, gives_correct_real_eigenvalues)
{
gives_correct_real_eigenvalues();
}
TEST_F(EigenSolverForMatrixFullOfOnes_{{T_NAME}}, gives_correct_real_eigenvalues_in_correct_order)
{
gives_correct_real_eigenvalues_in_correct_order();
}
TEST_F(EigenSolverForMatrixFullOfOnes_{{T_NAME}}, gives_correct_max_eigenvalue)
{
gives_correct_max_eigenvalue();
......@@ -112,16 +96,6 @@ TEST_F(EigenSolverForMatrixFullOfOnes_{{T_NAME}}, gives_correct_min_eigenvalue)
gives_correct_min_eigenvalue();
}
TEST_F(EigenSolverForMatrixFullOfOnes_{{T_NAME}}, gives_correct_eigenvectors_in_correct_order)
{
gives_correct_eigenvectors_in_correct_order( { {"shifted_qr", /*we_expect_a_failure: */ "-1"} } );
}
TEST_F(EigenSolverForMatrixFullOfOnes_{{T_NAME}}, gives_correct_real_eigenvectors_in_correct_order)
{
gives_correct_real_eigenvectors_in_correct_order( { {"shifted_qr", /*we_expect_a_failure: */ "-1"} } );
}
TEST_F(EigenSolverForMatrixFullOfOnes_{{T_NAME}}, gives_correct_eigendecomposition)
{
gives_correct_eigendecomposition();
......
......@@ -76,13 +76,7 @@ struct EigenSolverForMatrix1From2dEulerExample_{{T_NAME}}
" 5.7868554526731795e-18 -4.548871797508937e-21 1.3971398393418408 -5.7987082955069798e-18]");
expected_real_eigenvalues_ = XT::Common::from_string<RealEigenValuesType>(
"[0.74756566805234859 -0.7475656680523487 -4.3805309824106515e-18 -4.1386782167250046e-18]");
expected_real_eigenvectors_ = XT::Common::from_string<RealMatrixType>(
"[-0.53369500623787047 0.53369500623787058 0.99992710258781181 -0.99999998641605381; "
" 0.0014653238506238881 -0.0014653238506239037 0.012074276261282692 0.00016479348161139382; "
" -0.39897206387455164 -0.39897206387455159 -4.4018152160265555e-18 4.1383666863327496e-18; "
" -0.7456465552729743 0.74564655527297441 -3.6920318868549761e-05 3.3167550724756643e-06]");
expected_eigenvalues_ = XT::Common::convert_to<EigenValuesType>(expected_real_eigenvalues_);
expected_eigenvectors_ = XT::Common::convert_to<ComplexMatrixType>(expected_real_eigenvectors_);
expected_max_ev_ = 0.74756566805234859;
expected_min_ev_ = -0.7475656680523487;
all_matrices_and_expected_eigenvalues_and_vectors_are_computed_ = true;
......@@ -91,11 +85,9 @@ struct EigenSolverForMatrix1From2dEulerExample_{{T_NAME}}
using BaseType::all_matrices_and_expected_eigenvalues_and_vectors_are_computed_;
using BaseType::matrix_;
using BaseType::expected_eigenvalues_;
using BaseType::expected_eigenvectors_;
using BaseType::expected_real_eigenvalues_;
using BaseType::expected_max_ev_;
using BaseType::expected_min_ev_;
using BaseType::expected_real_eigenvectors_;
}; // struct EigenSolverForMatrix1From2dEulerExample_{{T_NAME}}
......@@ -134,21 +126,11 @@ TEST_F(EigenSolverForMatrix1From2dEulerExample_{{T_NAME}}, gives_correct_eigenva
gives_correct_eigenvalues();
}
TEST_F(EigenSolverForMatrix1From2dEulerExample_{{T_NAME}}, gives_correct_eigenvalues_in_correct_order)
{
gives_correct_eigenvalues_in_correct_order({ {"shifted_qr", /*we_expect_a_failure: */ "-1"} });
}
TEST_F(EigenSolverForMatrix1From2dEulerExample_{{T_NAME}}, gives_correct_real_eigenvalues)
{
gives_correct_real_eigenvalues();
}
TEST_F(EigenSolverForMatrix1From2dEulerExample_{{T_NAME}}, gives_correct_real_eigenvalues_in_correct_order)
{
gives_correct_real_eigenvalues_in_correct_order({ {"shifted_qr", /*we_expect_a_failure: */ "-1"} });
}
TEST_F(EigenSolverForMatrix1From2dEulerExample_{{T_NAME}}, gives_correct_max_eigenvalue)
{
gives_correct_max_eigenvalue();
......@@ -159,16 +141,6 @@ TEST_F(EigenSolverForMatrix1From2dEulerExample_{{T_NAME}}, gives_correct_min_eig
gives_correct_min_eigenvalue();
}
TEST_F(EigenSolverForMatrix1From2dEulerExample_{{T_NAME}}, gives_correct_eigenvectors_in_correct_order)
{
gives_correct_eigenvectors_in_correct_order({ {"eigen", /*we_expect_a_failure: */ "-1"}, {"shifted_qr", /*we_expect_a_failure: */ "-1"} });
}
TEST_F(EigenSolverForMatrix1From2dEulerExample_{{T_NAME}}, gives_correct_real_eigenvectors_in_correct_order)
{
gives_correct_real_eigenvectors_in_correct_order({ {"eigen", /*we_expect_a_failure: */ "-1"}, {"shifted_qr", /*we_expect_a_failure: */ "-1"} });
}
TEST_F(EigenSolverForMatrix1From2dEulerExample_{{T_NAME}}, gives_correct_eigendecomposition)
{
gives_correct_eigendecomposition({ {"lapack", "1e-12"}, {"eigen", "1e-12"}, {"numpy", "1e-12"}, {"shifted_qr", "1e-12"} });
......@@ -203,13 +175,7 @@ struct EigenSolverForMatrix2From2dEulerExample_{{T_NAME}}
" -8.4021160117423002e-18 -2.9890707673901542e-20 -1.4132804863921125 8.3233480688521287e-18]");
expected_real_eigenvalues_ =
XT::Common::from_string<RealEigenValuesType>("[-7.51851317e-01 7.51851317e-01 5.95037611e-18 7.38970154e-18]");
expected_real_eigenvectors_ =
XT::Common::from_string<RealMatrixType>("[-0.52979073 -0.52979073 -0.99999996 0.99673634; "
" -0.00665905 -0.00665905 0.00028699 -0.08071847; "
" -3.98323858e-01 3.98323858e-01 5.97564381e-18 -1.35567955e-17; "
" -7.48742642e-01 -7.48742642e-01 8.25990034e-05 -1.09329654e-03]");
expected_eigenvalues_ = XT::Common::convert_to<EigenValuesType>(expected_real_eigenvalues_);
expected_eigenvectors_ = XT::Common::convert_to<ComplexMatrixType>(expected_real_eigenvectors_);
expected_max_ev_ = 0.75185131710726438;
expected_min_ev_ = -0.75185131710726427;
all_matrices_and_expected_eigenvalues_and_vectors_are_computed_ = true;
......@@ -218,11 +184,9 @@ struct EigenSolverForMatrix2From2dEulerExample_{{T_NAME}}
using BaseType::all_matrices_and_expected_eigenvalues_and_vectors_are_computed_;
using BaseType::matrix_;
using BaseType::expected_eigenvalues_;
using BaseType::expected_eigenvectors_;
using BaseType::expected_real_eigenvalues_;
using BaseType::expected_max_ev_;
using BaseType::expected_min_ev_;
using BaseType::expected_real_eigenvectors_;
}; // struct EigenSolverForMatrix2From2dEulerExample_{{T_NAME}}
......@@ -261,21 +225,11 @@ TEST_F(EigenSolverForMatrix2From2dEulerExample_{{T_NAME}}, gives_correct_eigenva
gives_correct_eigenvalues({ {"lapack", "1e-6"}, {"eigen", "1e-6"}, {"numpy", "1e-6"}, {"shifted_qr", "1e-6"} });
}
TEST_F(EigenSolverForMatrix2From2dEulerExample_{{T_NAME}}, gives_correct_eigenvalues_in_correct_order)
{
gives_correct_eigenvalues_in_correct_order({ {"lapack", "1e-6"}, {"eigen", "1e-6"}, {"numpy", "1e-6"}, {"shifted_qr", "-1"} });
}
TEST_F(EigenSolverForMatrix2From2dEulerExample_{{T_NAME}}, gives_correct_real_eigenvalues)
{
gives_correct_real_eigenvalues({ {"lapack", "1e-6"}, {"eigen", "1e-6"}, {"numpy", "1e-6"}, {"shifted_qr", "1e-6"} });
}
TEST_F(EigenSolverForMatrix2From2dEulerExample_{{T_NAME}}, gives_correct_real_eigenvalues_in_correct_order)
{
gives_correct_real_eigenvalues_in_correct_order({ {"lapack", "1e-6"}, {"eigen", "1e-6"}, {"numpy", "1e-6"}, {"shifted_qr", "-1"} });
}
TEST_F(EigenSolverForMatrix2From2dEulerExample_{{T_NAME}}, gives_correct_max_eigenvalue)
{
gives_correct_max_eigenvalue({ {"lapack", "1e-6"}, {"eigen", "1e-6"}, {"numpy", "1e-6"}, {"shifted_qr", "1e-6"} });
......@@ -286,22 +240,6 @@ TEST_F(EigenSolverForMatrix2From2dEulerExample_{{T_NAME}}, gives_correct_min_eig
gives_correct_min_eigenvalue({ {"lapack", "1e-6"}, {"eigen", "1e-6"}, {"numpy", "1e-6"}, {"shifted_qr", "1e-6"} });
}
TEST_F(EigenSolverForMatrix2From2dEulerExample_{{T_NAME}}, gives_correct_eigenvectors_in_correct_order)
{
gives_correct_eigenvectors_in_correct_order({ {"lapack", /*we_expect_a_failure: */ "-1"},
{"eigen", /*we_expect_a_failure: */ "-1"},
{"numpy", /*we_expect_a_failure: */ "-1"},
{"shifted_qr", /*we_expect_a_failure: */ "-1"} });
}
TEST_F(EigenSolverForMatrix2From2dEulerExample_{{T_NAME}}, gives_correct_real_eigenvectors_in_correct_order)
{
gives_correct_real_eigenvectors_in_correct_order({ {"lapack", /*we_expect_a_failure: */ "-1"},
{"eigen", /*we_expect_a_failure: */ "-1"},
{"numpy", /*we_expect_a_failure: */ "-1"},
{"shifted_qr", /*we_expect_a_failure: */ "-1"} });
}
TEST_F(EigenSolverForMatrix2From2dEulerExample_{{T_NAME}}, gives_correct_eigendecomposition)
{
gives_correct_eigendecomposition({ {"lapack", "1e-13"}, {"eigen", "1e-13"}, {"numpy", "1e-13"}, {"shifted_qr", "1e-13"} });
......
......@@ -112,41 +112,7 @@ struct EigenSolverForMatrixFrom3dPointsource_{{T_NAME}}
"-0.52355966495856965 -0.3749646631039919 0.84448641064133279 0.16463824774430375 0.52355966495857331 0.37496466310399207 0.84448641064133512 "
"0.16463824774430211 0.5235596649585601 0.37496466310399174 0.84448641064133367 0.16463824774430696 0.52355966495857875 0.37496466310399201 "
"0.84448641064133279 0.16463824774430375 0.52355966495857331 0.37496466310399207]");
expected_real_eigenvectors_ = XT::Common::from_string<RealMatrixType>(
"[0.72851570713827452 -0.75150769244905291 -0.70404766916105233 2.3603637290901763e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;"
" 0.21303430399934711 -0.45821820130732605 -0.42921022728015484 -0.70710678118540637 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;"
" -0.21303430399900891 0.45821820130670016 0.42921022728032016 -0.70710678118768866 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;"
" -0.61522161461703495 0.1237269096511793 0.36861096178082275 -8.8499747932994974e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;"
" 0 0 0 0 0.72851570713827474 0.75150769244905291 -0.70404766916105321 -2.3698156325820086e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;"
" 0 0 0 0 -0.21303430399900955 -0.45821820130670016 0.42921022728031616 0.70710678118769443 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;"
" 0 0 0 0 -0.21303430399934783 -0.45821820130732616 0.42921022728015107 -0.70710678118540071 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;"
" 0 0 0 0 -0.61522161461703428 -0.12372690965117891 0.36861096178083003 8.8862487586530301e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0.72851570713827507 -0.75150769244905435 0.70404766916105277 -2.3649038194164953e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0.21303430399900977 -0.45821820130669944 0.42921022728032243 -0.70710678118769144 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0.21303430399934783 -0.45821820130732493 0.42921022728015823 0.7071067811854036 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;"
" 0 0 0 0 0 0 0 0 -0.61522161461703384 0.1237269096511758 -0.36861096178081504 8.8683863064769226e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0 0 0 0 0.72851570713827452 0.75150769244905291 0.70404766916105233 2.3603637290901763e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0 0 0 0 -0.21303430399934711 -0.45821820130732605 -0.42921022728015484 0.70710678118540637 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0 0 0 0 0.21303430399900891 0.45821820130670016 0.42921022728032016 0.70710678118768866 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0 0 0 0 -0.61522161461703495 -0.1237269096511793 -0.36861096178082275 -8.8499747932994974e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.72851570713827452 0.75150769244905347 -0.70404766916105233 2.366771891906538e-12 0 0 0 0 0 0 0 0 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.21303430399900972 0.45821820130670071 -0.4292102272803171 0.70710678118769266 0 0 0 0 0 0 0 0 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.21303430399934914 -0.45821820130732488 0.42921022728015545 0.70710678118540227 0 0 0 0 0 0 0 0 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.61522161461703395 0.12372690965117754 -0.36861096178082531 8.875113362439653e-13 0 0 0 0 0 0 0 0 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.72851570713827463 -0.75150769244905402 -0.7040476691610521 -2.363623581019006e-12 0 0 0 0 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.21303430399934772 0.45821820130732566 0.42921022728015851 -0.70710678118540471 0 0 0 0 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.21303430399900958 0.4582182013066996 0.42921022728032365 0.70710678118769033 0 0 0 0 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.6152216146170344 -0.12372690965117575 -0.36861096178081476 -8.8641409763951754e-13 0 0 0 0 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.72851570713827496 0.75150769244905291 0.70404766916105321 -2.3669577533262699e-12 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.21303430399934656 0.45821820130732605 0.42921022728015146 0.70710678118540204 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.21303430399900863 0.45821820130669999 0.42921022728031671 -0.70710678118769288 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.61522161461703473 0.12372690965117926 0.36861096178082908 -8.873867386792893e-13 0 0 0 0;"
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.72851570713827452 -0.75150769244905347 0.70404766916105233 2.366771891906538e-12;"
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.21303430399900972 0.45821820130670071 -0.4292102272803171 -0.70710678118769266;"
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.21303430399934914 -0.45821820130732488 0.42921022728015545 -0.70710678118540227;"
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.61522161461703395 -0.12372690965117754 0.36861096178082531 8.875113362439653e-13]");
expected_eigenvalues_ = XT::Common::convert_to<EigenValuesType>(expected_real_eigenvalues_);
expected_eigenvectors_ = XT::Common::convert_to<ComplexMatrixType>(expected_real_eigenvectors_);
expected_max_ev_ = 0.84448641064133512;
expected_min_ev_ = -0.84448641064133412;
all_matrices_and_expected_eigenvalues_and_vectors_are_computed_ = true;
......@@ -155,11 +121,9 @@ struct EigenSolverForMatrixFrom3dPointsource_{{T_NAME}}
using BaseType::all_matrices_and_expected_eigenvalues_and_vectors_are_computed_;
using BaseType::matrix_;
using BaseType::expected_eigenvalues_;
using BaseType::expected_eigenvectors_;
using BaseType::expected_real_eigenvalues_;
using BaseType::expected_max_ev_;
using BaseType::expected_min_ev_;
using BaseType::expected_real_eigenvectors_;
}; // struct EigenSolverForMatrixFrom3dPointsource_{{T_NAME}}
......@@ -195,22 +159,12 @@ TEST_F(EigenSolverForMatrixFrom3dPointsource_{{T_NAME}}, is_constructible)
TEST_F(EigenSolverForMatrixFrom3dPointsource_{{T_NAME}}, gives_correct_eigenvalues)
{
gives_correct_eigenvalues({ {"eigen", "1e-13"}, {"shifted_qr", "1e-14"} });
}
TEST_F(EigenSolverForMatrixFrom3dPointsource_{{T_NAME}}, gives_correct_eigenvalues_in_correct_order)
{
gives_correct_eigenvalues_in_correct_order({ {"eigen", /*we_expect_a_failure: */ "-1"}, {"shifted_qr", /*we_expect_a_failure: */ "-1"} });
gives_correct_eigenvalues({ {"lapack", "1e-14"}, {"eigen", "1e-13"}, {"shifted_qr", "1e-14"}});
}
TEST_F(EigenSolverForMatrixFrom3dPointsource_{{T_NAME}}, gives_correct_real_eigenvalues)
{
gives_correct_real_eigenvalues({ {"eigen", "1e-13"}, {"shifted_qr", "1e-14"} });
}
TEST_F(EigenSolverForMatrixFrom3dPointsource_{{T_NAME}}, gives_correct_real_eigenvalues_in_correct_order)
{
gives_correct_real_eigenvalues_in_correct_order({ {"eigen", /*we_expect_a_failure: */ "-1"}, {"shifted_qr", /*we_expect_a_failure: */ "-1"} });
gives_correct_real_eigenvalues({ {"lapack", "1e-14"}, {"eigen", "1e-13"}, {"shifted_qr", "1e-14"} });
}
TEST_F(EigenSolverForMatrixFrom3dPointsource_{{T_NAME}}, gives_correct_max_eigenvalue)
......@@ -223,16 +177,6 @@ TEST_F(EigenSolverForMatrixFrom3dPointsource_{{T_NAME}}, gives_correct_min_eigen
gives_correct_min_eigenvalue({ {"shifted_qr", "1e-14"} });
}
TEST_F(EigenSolverForMatrixFrom3dPointsource_{{T_NAME}}, gives_correct_eigenvectors_in_correct_order)
{
gives_correct_eigenvectors_in_correct_order({ {"lapack", "1e-14"}, {"eigen", /*we_expect_a_failure: */ "-1"}, {"numpy", "1e-14"}, {"shifted_qr", /*we_expect_a_failure: */ "-1"} });
}
TEST_F(EigenSolverForMatrixFrom3dPointsource_{{T_NAME}}, gives_correct_real_eigenvectors_in_correct_order)
{
gives_correct_real_eigenvectors_in_correct_order({ {"lapack", "1e-14"}, {"eigen", /*we_expect_a_failure: */ "-1"}, {"numpy", "1e-14"}, {"shifted_qr", /*we_expect_a_failure: */ "-1"} });
}
TEST_F(EigenSolverForMatrixFrom3dPointsource_{{T_NAME}}, gives_correct_eigendecomposition)
{
gives_correct_eigendecomposition({ {"lapack", "1e-14"}, {"eigen", "1e-12"}, {"numpy", "1e-14"}, {"shifted_qr", "1e-14"} });
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment