void btLemkeAlgorithm::GaussJordanEliminationStep(btMatrixXu& A, int pivotRowIndex, int pivotColumnIndex, const btAlignedObjectArray<int>& basis) { btScalar a = -1 / A(pivotRowIndex, pivotColumnIndex); #ifdef BT_DEBUG_OSTREAM cout << A << std::endl; #endif for (int i = 0; i < A.rows(); i++) { if (i != pivotRowIndex) { for (int j = 0; j < A.cols(); j++) { if (j != pivotColumnIndex) { btScalar v = A(i, j); v += A(pivotRowIndex, j) * A(i, pivotColumnIndex) * a; A.setElem(i, j, v); } } } } #ifdef BT_DEBUG_OSTREAM cout << A << std::endl; #endif //BT_DEBUG_OSTREAM for (int i = 0; i < A.cols(); i++) { A.mulElem(pivotRowIndex, i,-a); } #ifdef BT_DEBUG_OSTREAM cout << A << std::endl; #endif //#ifdef BT_DEBUG_OSTREAM for (int i = 0; i < A.rows(); i++) { if (i != pivotRowIndex) { A.setElem(i, pivotColumnIndex,0); } } #ifdef BT_DEBUG_OSTREAM cout << A << std::endl; #endif //#ifdef BT_DEBUG_OSTREAM }