16#ifndef BT_KRYLOV_SOLVER_H
17#define BT_KRYLOV_SOLVER_H
26template <
class MatrixX>
41 virtual int solve(MatrixX&
A, TVStack&
x,
const TVStack&
b,
bool verbose =
false) = 0;
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)
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
SIMD_FORCE_INLINE int size() const
return the number of elements in the array
SIMD_FORCE_INLINE void resize(int newsize, const T &fillData=T())
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)