20 #ifndef __EIGEN3_SVD_C_API_CC__
21 #define __EIGEN3_SVD_C_API_CC__
24 #if defined(__GNUC__) && !defined(__clang__)
25 # pragma GCC diagnostic ignored "-Wlogical-op"
28 #ifdef __EIGEN3_SVD_C_API_CC__
32 #include <Eigen/Dense>
37 using Eigen::JacobiSVD;
39 using Eigen::NoQRPreconditioner;
41 using Eigen::ComputeThinU;
42 using Eigen::ComputeThinV;
45 using Eigen::MatrixXf;
46 using Eigen::VectorXf;
48 using Eigen::Matrix4f;
53 unsigned int flags = (r_U ? ComputeThinU : 0) | (r_V ? ComputeThinV : 0);
56 JacobiSVD<MatrixXf, NoQRPreconditioner> svd(Map<MatrixXf>((
float *)matrix,
size,
size), flags);
59 Map<MatrixXf>(r_U,
size,
size) = svd.matrixU();
63 Map<VectorXf>(r_S,
size) = svd.singularValues();
67 Map<MatrixXf>(r_V,
size,
size) = svd.matrixV();
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void EIG_svd_square_matrix(const int size, const float *matrix, float *r_U, float *r_S, float *r_V)