Disable deprecated warnings in SVD tests.

This commit is contained in:
Antonio Sánchez 2022-02-23 18:32:00 +00:00
parent 8b875dbef1
commit f0b81fefb7
3 changed files with 35 additions and 13 deletions

View File

@ -10,6 +10,13 @@
// Public License v. 2.0. If a copy of the MPL was not distributed
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/
// We explicitly disable deprecated declarations for this set of tests
// because we purposely verify assertions for the deprecated SVD runtime
// option behavior.
#ifdef __GNUC__
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#endif
// discard stack allocation as that too bypasses malloc
#define EIGEN_STACK_ALLOCATION_LIMIT 0
#define EIGEN_RUNTIME_NO_MALLOC
@ -32,9 +39,12 @@ void bdcsvd_method()
VERIFY_IS_APPROX(m.bdcSvd().singularValues(), RealVecType::Ones());
VERIFY_RAISES_ASSERT(m.bdcSvd().matrixU());
VERIFY_RAISES_ASSERT(m.bdcSvd().matrixV());
// Deprecated behavior.
VERIFY_IS_APPROX(m.bdcSvd(ComputeFullU|ComputeFullV).solve(m), m);
VERIFY_IS_APPROX(m.bdcSvd(ComputeFullU|ComputeFullV).transpose().solve(m), m);
VERIFY_IS_APPROX(m.bdcSvd(ComputeFullU|ComputeFullV).adjoint().solve(m), m);
VERIFY_IS_APPROX(m.template bdcSvd<ComputeFullU | ComputeFullV>().solve(m), m);
VERIFY_IS_APPROX(m.template bdcSvd<ComputeFullU | ComputeFullV>().transpose().solve(m), m);
VERIFY_IS_APPROX(m.template bdcSvd<ComputeFullU | ComputeFullV>().adjoint().solve(m), m);

View File

@ -8,6 +8,13 @@
// Public License v. 2.0. If a copy of the MPL was not distributed
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
// We explicitly disable deprecated declarations for this set of tests
// because we purposely verify assertions for the deprecated SVD runtime
// option behavior.
#ifdef __GNUC__
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#endif
// discard stack allocation as that too bypasses malloc
#define EIGEN_STACK_ALLOCATION_LIMIT 0
#define EIGEN_RUNTIME_NO_MALLOC
@ -29,12 +36,14 @@ void jacobisvd_method()
VERIFY_IS_APPROX(m.jacobiSvd().singularValues(), RealVecType::Ones());
VERIFY_RAISES_ASSERT(m.jacobiSvd().matrixU());
VERIFY_RAISES_ASSERT(m.jacobiSvd().matrixV());
VERIFY_IS_APPROX(m.jacobiSvd(ComputeFullU|ComputeFullV).solve(m), m);
VERIFY_IS_APPROX(m.jacobiSvd(ComputeFullU|ComputeFullV).transpose().solve(m), m);
VERIFY_IS_APPROX(m.jacobiSvd(ComputeFullU|ComputeFullV).adjoint().solve(m), m);
VERIFY_IS_APPROX(m.template jacobiSvd<ComputeFullU | ComputeFullV>().solve(m), m);
VERIFY_IS_APPROX(m.template jacobiSvd<ComputeFullU | ComputeFullV>().transpose().solve(m), m);
VERIFY_IS_APPROX(m.template jacobiSvd<ComputeFullU | ComputeFullV>().adjoint().solve(m), m);
// Deprecated behavior.
VERIFY_IS_APPROX(m.jacobiSvd(ComputeFullU|ComputeFullV).solve(m), m);
VERIFY_IS_APPROX(m.jacobiSvd(ComputeFullU|ComputeFullV).transpose().solve(m), m);
VERIFY_IS_APPROX(m.jacobiSvd(ComputeFullU|ComputeFullV).adjoint().solve(m), m);
}
template <typename MatrixType>

View File

@ -480,8 +480,9 @@ void svd_compute_checks(const MatrixType& m) {
}
}
// Deprecated behavior.
template <typename SvdType, typename MatrixType>
void svd_check_constructor_options(const MatrixType& m, unsigned int computationOptions) {
void svd_check_runtime_options(const MatrixType& m, unsigned int computationOptions) {
const bool fixedRowAndThinU = SvdType::RowsAtCompileTime != Dynamic && (computationOptions & ComputeThinU) != 0 && m.cols() < m.rows();
const bool fixedColAndThinV = SvdType::ColsAtCompileTime != Dynamic && (computationOptions & ComputeThinV) != 0 && m.rows() < m.cols();
if (fixedRowAndThinU || fixedColAndThinV) {
@ -527,18 +528,19 @@ void svd_option_checks(const MatrixType& m) {
svd_check_full(m, fullSvd);
svd_compare_to_full<MatrixType, FullSvdType, QRPreconditioner | ComputeFullU | ComputeFullV>(m, fullSvd);
// Deprecated behavior.
typedef SVD_STATIC_OPTIONS(MatrixType, QRPreconditioner) DynamicSvd;
svd_check_constructor_options<DynamicSvd>(m, 0);
svd_check_constructor_options<DynamicSvd>(m, ComputeThinU);
svd_check_constructor_options<DynamicSvd>(m, ComputeThinV);
svd_check_constructor_options<DynamicSvd>(m, ComputeThinU | ComputeThinV);
svd_check_runtime_options<DynamicSvd>(m, 0);
svd_check_runtime_options<DynamicSvd>(m, ComputeThinU);
svd_check_runtime_options<DynamicSvd>(m, ComputeThinV);
svd_check_runtime_options<DynamicSvd>(m, ComputeThinU | ComputeThinV);
svd_check_constructor_options<DynamicSvd>(m, ComputeFullU);
svd_check_constructor_options<DynamicSvd>(m, ComputeFullV);
svd_check_constructor_options<DynamicSvd>(m, ComputeFullU | ComputeFullV);
svd_check_runtime_options<DynamicSvd>(m, ComputeFullU);
svd_check_runtime_options<DynamicSvd>(m, ComputeFullV);
svd_check_runtime_options<DynamicSvd>(m, ComputeFullU | ComputeFullV);
svd_check_constructor_options<DynamicSvd>(m, ComputeThinU | ComputeFullV);
svd_check_constructor_options<DynamicSvd>(m, ComputeFullU | ComputeThinV);
svd_check_runtime_options<DynamicSvd>(m, ComputeThinU | ComputeFullV);
svd_check_runtime_options<DynamicSvd>(m, ComputeFullU | ComputeThinV);
}
template <typename MatrixType, int QRPreconditioner = 0>
@ -609,6 +611,7 @@ void svd_verify_constructor_options_assert(const MatrixType& m, bool fullOnly =
svd2.singularValues();
VERIFY_RAISES_ASSERT(svd2.solve(rhs))
// Deprecated behavior.
SvdType svd3(a, ComputeFullU);
svd3.matrixU();
VERIFY_RAISES_ASSERT(svd3.matrixV())