diff --git a/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h b/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h index 5d8c6b433..c3ca0ad54 100644 --- a/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +++ b/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h @@ -29,8 +29,6 @@ void conjugate_gradient(const MatrixType& mat, const Rhs& rhs, Dest& x, const Preconditioner& precond, Index& iters, typename Dest::RealScalar& tol_error) { - using std::sqrt; - using std::abs; typedef typename Dest::RealScalar RealScalar; typedef typename Dest::Scalar Scalar; typedef Matrix VectorType; @@ -56,7 +54,7 @@ void conjugate_gradient(const MatrixType& mat, const Rhs& rhs, Dest& x, if (residualNorm2 < threshold) { iters = 0; - tol_error = sqrt(residualNorm2 / rhsNorm2); + tol_error = numext::sqrt(residualNorm2 / rhsNorm2); return; } @@ -86,7 +84,7 @@ void conjugate_gradient(const MatrixType& mat, const Rhs& rhs, Dest& x, p = z + beta * p; // update search direction i++; } - tol_error = sqrt(residualNorm2 / rhsNorm2); + tol_error = numext::sqrt(residualNorm2 / rhsNorm2); iters = i; } diff --git a/test/vectorization_logic.cpp b/test/vectorization_logic.cpp index f5c86afd3..b5464992e 100644 --- a/test/vectorization_logic.cpp +++ b/test/vectorization_logic.cpp @@ -279,10 +279,10 @@ struct vectorization_logic_half // which causes many of these tests to fail since they don't vectorize if // EIGEN_UNALIGNED_VECTORIZE is 0 (the matrix is assumed unaligned). // Adjust the matrix sizes to account for these alignment issues. - constexpr int PacketBytes = sizeof(Scalar)*PacketSize; - constexpr int MinVSize = EIGEN_UNALIGNED_VECTORIZE ? PacketSize + enum { PacketBytes = sizeof(Scalar)*PacketSize }; + enum { MinVSize = EIGEN_UNALIGNED_VECTORIZE ? PacketSize : PacketBytes >= EIGEN_MIN_ALIGN_BYTES ? PacketSize - : (EIGEN_MIN_ALIGN_BYTES + sizeof(Scalar) - 1) / sizeof(Scalar); + : (EIGEN_MIN_ALIGN_BYTES + sizeof(Scalar) - 1) / sizeof(Scalar) }; typedef Matrix Vector1; typedef Matrix Matrix11;