Home | History | Annotate | Download | only in test

Lines Matching refs:SVD

21 #include <unsupported/Eigen/SVD>
25 // check if "svd" is the good image of "m"
26 template<typename MatrixType, typename SVD>
27 void svd_check_full(const MatrixType& m, const SVD& svd)
43 sigma.diagonal() = svd.singularValues().template cast<Scalar>();
44 MatrixUType u = svd.matrixU();
45 MatrixVType v = svd.matrixV();
54 template<typename MatrixType, typename SVD>
57 const SVD& referenceSvd)
64 SVD svd(m, computationOptions);
66 VERIFY_IS_APPROX(svd.singularValues(), referenceSvd.singularValues());
68 VERIFY_IS_APPROX(svd.matrixU(), referenceSvd.matrixU());
70 VERIFY_IS_APPROX(svd.matrixU(), referenceSvd.matrixU().leftCols(diagSize));
72 VERIFY_IS_APPROX(svd.matrixV(), referenceSvd.matrixV());
74 VERIFY_IS_APPROX(svd.matrixV(), referenceSvd.matrixV().leftCols(diagSize));
79 template<typename MatrixType, typename SVD>
96 SVD svd(m, computationOptions);
97 SolutionType x = svd.solve(rhs);
105 template<typename MatrixType, typename SVD>
106 void svd_test_computation_options_1(const MatrixType& m, const SVD& fullSvd)
108 svd_check_full< MatrixType, SVD >(m, fullSvd);
109 svd_solve< MatrixType, SVD >(m, ComputeFullU | ComputeFullV);
113 template<typename MatrixType, typename SVD>
114 void svd_test_computation_options_2(const MatrixType& m, const SVD& fullSvd)
116 svd_compare_to_full< MatrixType, SVD >(m, ComputeFullU, fullSvd);
117 svd_compare_to_full< MatrixType, SVD >(m, ComputeFullV, fullSvd);
118 svd_compare_to_full< MatrixType, SVD >(m, 0, fullSvd);
123 svd_compare_to_full< MatrixType, SVD >(m, ComputeFullU|ComputeThinV, fullSvd);
124 svd_compare_to_full< MatrixType, SVD >(m, ComputeThinV, fullSvd);
125 svd_compare_to_full< MatrixType, SVD >(m, ComputeThinU|ComputeFullV, fullSvd);
126 svd_compare_to_full< MatrixType, SVD >(m, ComputeThinU , fullSvd);
127 svd_compare_to_full< MatrixType, SVD >(m, ComputeThinU|ComputeThinV, fullSvd);
128 svd_solve<MatrixType, SVD>(m, ComputeFullU | ComputeThinV);
129 svd_solve<MatrixType, SVD>(m, ComputeThinU | ComputeFullV);
130 svd_solve<MatrixType, SVD>(m, ComputeThinU | ComputeThinV);
134 SVD svd(m, ComputeThinU | ComputeThinV);
135 VERIFY_IS_APPROX(m, svd.matrixU().leftCols(diagSize) * svd.singularValues().asDiagonal() * svd.matrixV().leftCols(diagSize).adjoint());
139 template<typename MatrixType, typename SVD>
154 SVD svd;
155 VERIFY_RAISES_ASSERT(svd.matrixU())
156 VERIFY_RAISES_ASSERT(svd.singularValues())
157 VERIFY_RAISES_ASSERT(svd.matrixV())
158 VERIFY_RAISES_ASSERT(svd.solve(rhs))
161 svd.compute(a, 0);
162 VERIFY_RAISES_ASSERT(svd.matrixU())
163 VERIFY_RAISES_ASSERT(svd.matrixV())
164 svd.singularValues();
165 VERIFY_RAISES_ASSERT(svd.solve(rhs))
169 svd.compute(a, ComputeThinU);
170 svd.matrixU();
171 VERIFY_RAISES_ASSERT(svd.matrixV())
172 VERIFY_RAISES_ASSERT(svd.solve(rhs))
173 svd.compute(a, ComputeThinV);
174 svd.matrixV();
175 VERIFY_RAISES_ASSERT(svd.matrixU())
176 VERIFY_RAISES_ASSERT(svd.solve(rhs))
180 VERIFY_RAISES_ASSERT(svd.compute(a, ComputeThinU))
181 VERIFY_RAISES_ASSERT(svd.compute(a, ComputeThinV))
194 template<typename MatrixType, typename SVD>
199 SVD svd;
203 svd.compute(MatrixType::Constant(10,10,some_inf), ComputeFullU | ComputeFullV);
207 svd.compute(MatrixType::Constant(10,10,some_nan), ComputeFullU | ComputeFullV);
211 svd.compute(m, ComputeFullU | ComputeFullV);
215 svd.compute(m, ComputeFullU | ComputeFullV);
219 template<typename SVD>
227 SVD svd;
229 svd.compute(m);
230 VERIFY_IS_APPROX(svd.singularValues(), v);
232 SVD svd2(3,3);
246 SVD svd3(3,3,ComputeFullU|ComputeFullV);