25#ifdef BT_DEBUG_OSTREAM
91 if ((*
this)[
ix] != 0.0)
297 printf(
"%s ---------------------\n",
msg);
298 for (
int i=0;i<
rows();i++)
303 printf(
"%2.1f\t",(*
this)(i,
j));
306 printf(
"\n---------------------\n");
314 for (
int i=0;i<
rows();i++)
319 if ((*
this)(i,
j)!=0.f)
331 for (
int i=0;i<
m_cols;i++)
352 for (
int j=0;
j <
res.cols(); ++
j)
355 for (
int i=0; i <
res.rows(); ++i)
364 for (
int v=0;v<
rows();v++)
472 for (
int i=0;i<
rows();i++)
492#ifdef BT_DEBUG_OSTREAM
499 for (
int i=0;i<
mat.rows();i++)
501 for (
int j=0;
j<
mat.cols();
j++)
503 os << std::setw(12) <<
mat(i,
j);
506 os << std::endl <<
" ";
519 for (
int i=0;i<
mat.rows();i++)
521 os << std::setw(12) <<
mat[i];
523 os << std::endl <<
" ";
544#ifdef BT_USE_DOUBLE_PRECISION
545 #define btVectorXu btVectorXd
546 #define btMatrixXu btMatrixXd
548 #define btVectorXu btVectorXf
549 #define btMatrixXu btMatrixXf
btVectorX< double > btVectorXd
btMatrixX< double > btMatrixXd
btVectorX< float > btVectorXf
btMatrixX< float > btMatrixXf
void setElem(btMatrixXd &mat, int row, int col, double val)
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...
void btSetZero(T *a, int n)
btScalar btFabs(btScalar x)
static T sum(const btAlignedObjectArray< T > &items)
The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods It...
void resize(int newsize, const T &fillData=T())
void push_back(const T &_Val)
original version written by Erwin Coumans, October 2013
bool operator()(const int &a, const int &b) const
void rowComputeNonZeroElements() const
btAlignedObjectArray< T > m_storage
btMatrixX transpose() const
btMatrixX operator*(const btMatrixX &other)
void setSubMatrix(int rowstart, int colstart, int rowend, int colend, const T value)
void mulElem(int row, int col, T val)
btMatrixX(int rows, int cols)
void setSubMatrix(int rowstart, int colstart, int rowend, int colend, const btMatrixX &block)
void addElem(int row, int col, T val)
we don't want this read/write operator(), because we cannot keep track of non-zero elements,...
const T * getBufferPointer() const
void multiply2_p8r(const btScalar *B, const btScalar *C, int numRows, int numRowsOther, int row, int col)
void printMatrix(const char *msg)
void copyLowerToUpperTriangle()
T * getBufferPointerWritable()
void multiplyAdd2_p8r(const btScalar *B, const btScalar *C, int numRows, int numRowsOther, int row, int col)
const T & operator()(int row, int col) const
void resize(int rows, int cols)
btAlignedObjectArray< btAlignedObjectArray< int > > m_rowNonZeroElements1
void setElem(int row, int col, T val)
void setSubMatrix(int rowstart, int colstart, int rowend, int colend, const btVectorX< T > &block)
btAlignedObjectArray< T > m_storage
const T & operator[](int index) const
const T * getBufferPointer() const
T * getBufferPointerWritable()