16 #ifndef BT_KRYLOV_SOLVER_H
17 #define BT_KRYLOV_SOLVER_H
26 template <
class MatrixX>
51 for (
int i = 0; i <
a.size(); ++i)
66 for (
int i = 0; i <
a.size(); ++i)
68 for (
int d = 0; d < 3; ++d)
79 for (
int i = 0; i <
a.size(); ++i)
80 ans +=
a[i].
dot(
b[i]);
88 for (
int i = 0; i <
a.size(); ++i)
97 for (
int i = 0; i <
a.size(); ++i)
SIMD_FORCE_INLINE const T & btMax(const T &a, const T &b)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
SIMD_FORCE_INLINE btScalar btFabs(btScalar x)
#define SIMD_FORCE_INLINE
virtual ~btKrylovSolver()
virtual SIMD_FORCE_INLINE TVStack sub(const TVStack &a, const TVStack &b)
virtual int solve(MatrixX &A, TVStack &x, const TVStack &b, bool verbose=false)=0
virtual SIMD_FORCE_INLINE TVStack multAndAdd(btScalar s, const TVStack &a, const TVStack &b)
virtual SIMD_FORCE_INLINE void setTolerance(btScalar tolerance)
virtual void reinitialize(const TVStack &b)=0
btKrylovSolver(int maxIterations, btScalar tolerance)
virtual SIMD_FORCE_INLINE btScalar norm(const TVStack &a)
virtual SIMD_FORCE_INLINE btScalar squaredNorm(const TVStack &a)
virtual SIMD_FORCE_INLINE btScalar dot(const TVStack &a, const TVStack &b)
virtual SIMD_FORCE_INLINE void multAndAddTo(btScalar s, const TVStack &a, TVStack &result)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)