mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-07-22 04:44:25 +08:00
Fix Yade high precision Real compilation
This commit is contained in:
parent
14db78c53b
commit
0dd9643ad5
@ -605,7 +605,8 @@ template<typename SolverType> struct direct_selfadjoint_eigenvalues<SolverType,3
|
|||||||
EIGEN_DEVICE_FUNC
|
EIGEN_DEVICE_FUNC
|
||||||
static inline bool extract_kernel(MatrixType& mat, Ref<VectorType> res, Ref<VectorType> representative)
|
static inline bool extract_kernel(MatrixType& mat, Ref<VectorType> res, Ref<VectorType> representative)
|
||||||
{
|
{
|
||||||
using std::abs;
|
EIGEN_USING_STD_MATH(sqrt)
|
||||||
|
EIGEN_USING_STD_MATH(abs)
|
||||||
Index i0;
|
Index i0;
|
||||||
// Find non-zero column i0 (by construction, there must exist a non zero coefficient on the diagonal):
|
// Find non-zero column i0 (by construction, there must exist a non zero coefficient on the diagonal):
|
||||||
mat.diagonal().cwiseAbs().maxCoeff(&i0);
|
mat.diagonal().cwiseAbs().maxCoeff(&i0);
|
||||||
@ -616,8 +617,8 @@ template<typename SolverType> struct direct_selfadjoint_eigenvalues<SolverType,3
|
|||||||
VectorType c0, c1;
|
VectorType c0, c1;
|
||||||
n0 = (c0 = representative.cross(mat.col((i0+1)%3))).squaredNorm();
|
n0 = (c0 = representative.cross(mat.col((i0+1)%3))).squaredNorm();
|
||||||
n1 = (c1 = representative.cross(mat.col((i0+2)%3))).squaredNorm();
|
n1 = (c1 = representative.cross(mat.col((i0+2)%3))).squaredNorm();
|
||||||
if(n0>n1) res = c0/std::sqrt(n0);
|
if(n0>n1) res = c0/sqrt(n0);
|
||||||
else res = c1/std::sqrt(n1);
|
else res = c1/sqrt(n1);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user