return a value in a degenerate svd case

re-disable svd by default
This commit is contained in:
Erwin Coumans
2019-10-29 20:40:57 -07:00
parent 7bffbb2351
commit 938ac51da7

View File

@@ -571,17 +571,18 @@ inline void singularValueDecomposition(
*/ */
inline btScalar wilkinsonShift(const btScalar a1, const btScalar b1, const btScalar a2) inline btScalar wilkinsonShift(const btScalar a1, const btScalar b1, const btScalar a2)
{ {
btScalar d = (btScalar)0.5 * (a1 - a2); btScalar d = (btScalar)0.5 * (a1 - a2);
btScalar bs = b1 * b1; btScalar bs = b1 * b1;
btScalar val = d * d + bs; btScalar val = d * d + bs;
if (val>SIMD_EPSILON) if (val>SIMD_EPSILON)
{ {
btScalar denom = btFabs(d) + btSqrt(val); btScalar denom = btFabs(d) + btSqrt(val);
btScalar mu = a2 - copySign(bs / (denom), d); btScalar mu = a2 - copySign(bs / (denom), d);
// T mu = a2 - bs / ( d + sign_d*sqrt (d*d + bs)); // T mu = a2 - bs / ( d + sign_d*sqrt (d*d + bs));
return mu; return mu;
} }
return a2;
} }
/** /**