10 #define TEST_ENABLE_TEMPORARY_TRACKING
13 #include <Eigen/Cholesky>
17 template<
typename MatrixType,
int UpLo>
21 return symm.cwiseAbs().colwise().sum().maxCoeff();
34 CholType<MatrixType,Lower> chollo(symmLo);
35 CholType<MatrixType,Upper> cholup(symmUp);
37 for (
int k=0; k<10; ++k)
41 symmCpy +=
sigma * vec * vec.adjoint();
44 CholType<MatrixType,Lower> chol(symmCpy);
48 chollo.rankUpdate(vec,
sigma);
51 cholup.rankUpdate(vec,
sigma);
72 SquareMatrixType
symm = a0 * a0.adjoint();
74 for (
int k=0; k<3; ++k)
84 SquareMatrixType symmUp =
symm.template triangularView<Upper>();
90 check_solverbase<VectorType, VectorType>(
symm, chollo,
rows,
rows, 1);
95 matrix_l1_norm<MatrixType, Lower>(symmLo_inverse);
99 VERIFY(rcond_est >= rcond / 10 && rcond_est <= rcond * 10);
104 vecX = cholup.
solve(vecB);
112 rcond = (
RealScalar(1) / matrix_l1_norm<MatrixType, Upper>(symmUp)) /
113 matrix_l1_norm<MatrixType, Upper>(symmUp_inverse);
114 rcond_est = cholup.
rcond();
115 VERIFY(rcond_est >= rcond / 10 && rcond_est <= rcond * 10);
130 m2 += symmLo.template selfadjointView<Lower>().llt().solve(
matB);
133 m2 -= symmLo.template selfadjointView<Lower>().llt().solve(
matB);
136 m2.noalias() += symmLo.template selfadjointView<Lower>().llt().solve(
matB);
139 m2.noalias() -= symmLo.template selfadjointView<Lower>().llt().solve(
matB);
148 int sign = internal::random<int>()%2 ? 1 : -1;
155 SquareMatrixType symmUp =
symm.template triangularView<Upper>();
162 check_solverbase<VectorType, VectorType>(
symm, ldltlo,
rows,
rows, 1);
167 matrix_l1_norm<MatrixType, Lower>(symmLo_inverse);
171 VERIFY(rcond_est >= rcond / 10 && rcond_est <= rcond * 10);
177 vecX = ldltup.
solve(vecB);
185 rcond = (
RealScalar(1) / matrix_l1_norm<MatrixType, Upper>(symmUp)) /
186 matrix_l1_norm<MatrixType, Upper>(symmUp_inverse);
187 rcond_est = ldltup.
rcond();
188 VERIFY(rcond_est >= rcond / 10 && rcond_est <= rcond * 10);
195 if(MatrixType::RowsAtCompileTime==
Dynamic)
217 SquareMatrixType
A =
symm;
219 A.bottomRightCorner(
c,
c).setZero();
226 vecX = ldltlo.
solve(vecB);
233 Index r = internal::random<Index>(1,
rows-1);
235 SquareMatrixType
A =
a *
a.adjoint();
242 vecX = ldltlo.
solve(vecB);
256 SquareMatrixType
A =
a *
d.asDiagonal() *
a.adjoint();
263 vecX = ldltlo.
solve(vecB);
301 RealMatrixType a0 = RealMatrixType::Random(
rows,
cols);
304 RealMatrixType
symm = a0 * a0.adjoint();
306 for (
int k=0; k<3; ++k)
308 RealMatrixType
a1 = RealMatrixType::Random(
rows,
cols);
318 check_solverbase<VectorType, VectorType>(
symm, chollo,
rows,
rows, 1);
324 int sign = internal::random<int>()%2 ? 1 : -1;
337 check_solverbase<VectorType, VectorType>(
symm, ldltlo,
rows,
rows, 1);
422 #if (!EIGEN_ARCH_i386) || defined(EIGEN_VECTORIZE_SSE2)
426 -3, -8.9999999999999999999, 1,
445 mat << 0.1, 0, -0.1, 0, 0, 0, 1, 0,
446 0, 4.24667, 0, 2.00333, 0, 0, 0, 0,
447 -0.1, 0, 0.2, 0, -0.1, 0, 0, 0,
448 0, 2.00333, 0, 8.49333, 0, 2.00333, 0, 0,
449 0, 0, -0.1, 0, 0.1, 0, 0, 1,
450 0, 0, 0, 2.00333, 0, 4.24667, 0, 0,
451 1, 0, 0, 0, 0, 0, 0, 0,
452 0, 0, 0, 0, 1, 0, 0, 0;