MCPcopy Create free account
hub / github.com/coin-or/CppAD / sparse_map2vec

Function sparse_map2vec

cppad_ipopt/src/sparse_map2vec.cpp:50–86  ·  view source on GitHub ↗

! Create a two vector sparsity representation from a vector of maps. \param sparse Is a vector of maps representation of sparsity as well as the index in the two vector representation. To be specific; \verbatim for(i = 0; i < sparse.size(); i++) { for(itr = sparse[i].begin(); itr != sparse[i].end(); itr++) { j = itr->first; // (i, j) is a possibly non-zero entry in sparsity pattern

Source from the content-addressed store, hash-verified

48 k-th possibly non-zero entry.
49*/
50void sparse_map2vec(
51 const CppAD::vector< std::map<size_t, size_t> > sparse,
52 size_t& n_nz ,
53 CppAD::vector<size_t>& i_row ,
54 CppAD::vector<size_t>& j_col )
55{
56 size_t i, j, k, m;
57
58 // number of rows in sparse
59 m = sparse.size();
60
61 // itererator for one row
62 std::map<size_t, size_t>::const_iterator itr;
63
64 // count the number of possibly non-zeros in sparse
65 n_nz = 0;
66 for(i = 0; i < m; i++)
67 for(itr = sparse[i].begin(); itr != sparse[i].end(); itr++)
68 ++n_nz;
69
70 // resize the return vectors to accommodate n_nz entries
71 i_row.resize(n_nz);
72 j_col.resize(n_nz);
73
74 // set the row and column indices and check assumptions on sparse
75 k = 0;
76 for(i = 0; i < m; i++)
77 { for(itr = sparse[i].begin(); itr != sparse[i].end(); itr++)
78 { j = itr->first;
79 CPPAD_ASSERT_UNKNOWN( k == itr->second );
80 i_row[k] = i;
81 j_col[k] = j;
82 ++k;
83 }
84 }
85 return;
86}
87
88// ---------------------------------------------------------------------------
89} // end namespace cppad_ipopt

Callers 1

cppad_ipopt_nlpMethod · 0.85

Calls 4

sizeMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
resizeMethod · 0.45

Tested by

no test coverage detected