/* * SPQRUtil.cpp * * Created on: Jul 1, 2010 * Author: nikai * Description: the utility functions for SPQR */ #include #include "SPQRUtil.h" using namespace std; #ifdef GT_USE_LAPACK namespace gtsam { /* ************************************************************************* */ long* MakeStairs(Matrix& A) { const long m = A.size1(); const long n = A.size2(); // record the starting pointer of each row double* a[m]; a[0] = A.data().begin(); for(int i=1; i i_zeros, i_nonzeros, i_all; map i2vi; for(int i = i0; i < m; i++) { i_all.push_back(i); i2vi.insert(make_pair(i, i-i0)); if (*(a[i]) == 0) i_zeros.push_back(i); else i_nonzeros.push_back(i); } // resort the rows from i_all to i_target vector& i_target = i_nonzeros; i_target.insert(i_nonzeros.end(), i_zeros.begin(), i_zeros.end()); sizeOfRow = (n - j) * sizeof(double); for (int vi=0; vi(m, n, npiv, tol, ntol, fchunk, a, Stair, Rdead, Tau, W, &wscale, &wssq, &cc); long k0 = 0; long j0; memset(A.data().begin(), 0, m*n*sizeof(double)); for(long j=0; j