35 std::sort(_elements.begin(),_elements.end());
37 size_t ln = _elements.size();
47 for (
size_t k=0 ;
k< ln ; ++
k )
49 if(_elements.at(
k).value != 0.0)
54 int rse = _elements.at(
k).i;
55 while( rse > actualRow )
58 if( rse == actualRow )
76 std::sort(_elements.begin(),_elements.end());
78 size_t ln = _elements.size();
79 N = _elements.at(ln-1).j;
87 for (
size_t k=0 ;
k< ln ; ++
k )
89 if(_elements.at(
k).value != 0.0)
94 int rse = _elements.at(
k).i;
95 while( rse > actualRow )
98 if( rse == actualRow )
115 int col, rowEnd, rowBeg;
117 memset(y,0,
N*
sizeof(
double));
120 for(
int i = 0;
i<
N;
i++)
130 for(
int j = rowBeg;
j < rowEnd ;
j++)
145 for(
int i =0 ;
i<
N ;
i++)
147 for(
int j =0;
j<
N ;
j++)
168 for(
int i = rowBeg;
i < rowEnd ;
i++)
186 for(
int row = 0; row < Nelems ; ++row){
187 int firstElemRow = 0;
190 for(
int k = 0;
k < Nelems ; ++
k ){
199 if(firstElemRow == 0)
200 firstElemRow = nnzY +1;
239 for(
int i = nnz-1;
i >= 0 ; --
i)
244 if(until ==
i &&
i > 0){
261 fhIn.open(fn.c_str());
265 double dobVecSize, auxDob;
268 vectorSize = (int)dobVecSize ;
270 std::vector<SparseElement> elems(vectorSize);
271 for(
int i =0;
i< vectorSize; ++
i){
273 elems.at(
i).i = (int) auxDob -1;
276 elems.at(
i).j = (int) auxDob -1;
278 fhIn >> elems.at(
i).value;
void resize(size_t Ndim, size_t Zdim, size_t Ydim, size_t Xdim, bool copy=true)
friend std::ostream & operator<<(std::ostream &out, const SparseMatrix2D &X)
Shows the dense Matrix associated.
MultidimArray< double > values
List of values.
#define REPORT_ERROR(nerr, ErrormMsg)
void resizeNoCopy(const MultidimArray< T1 > &v)
void multMM(const SparseMatrix2D &X, SparseMatrix2D &Y)
Computes Y=this*X.
ql0001_ & k(htemp+1),(cvec+1),(atemp+1),(bj+1),(bl+1),(bu+1),(x+1),(clamda+1), &iout, infoqp, &zero,(w+1), &lenw,(iw+1), &leniw, &glob_grd.epsmac
void multMMDiagonal(const MultidimArray< double > &D, SparseMatrix2D &Y)
Computes y=SparseMatrixThis*SparseMatrix.
void sparseMatrix2DFromVector(std::vector< SparseElement > &_elements)
Fill the sparse matrix A with the elements of the vector.
MultidimArray< int > iIdx
List of i positions.
#define DIRECT_MULTIDIM_ELEM(v, n)
File or directory does not exist.
SparseMatrix2D(std::vector< SparseElement > &_elements, int _Nelements)
int nrows() const
Y size of the matrix.
void sort(struct DCEL_T *dcel)
int N
The matrix is of size NxN.
void multMv(double *x, double *y)
void loadMatrix(const FileName &fn)
void initZeros(const MultidimArray< T1 > &op)
MultidimArray< int > jIdx
List of j positions.
double getElemIJ(int row, int col) const