|
Prev | Next | sparse_rc_xam.cpp | Headings |
# include <cstdio>
# include <string>
# include <cppad/swig/cppad_swig.hpp>
bool sparse_rc_xam(void) {
using cppad_swig::a_double;
using cppad_swig::vec_bool;
using cppad_swig::vec_int;
using cppad_swig::vec_double;
using cppad_swig::vec_a_double;
using cppad_swig::a_fun;
using cppad_swig::sparse_rc;
using cppad_swig::sparse_rcv;
using cppad_swig::sparse_jac_work;
using cppad_swig::sparse_hes_work;
using std::string;
//
// initialize return variable
bool ok = true;
//------------------------------------------------------------------------
//
// create a sparsity pattern
sparse_rc pattern = cppad_swig::sparse_rc();
//
int nr = 6;
int nc = 5;
int nnz = 4;
//
// resize
pattern.resize(nr, nc, nnz);
//
ok = ok && pattern.nr() == nr ;
ok = ok && pattern.nc() == nc ;
ok = ok && pattern.nnz() == nnz ;
//
// indices corresponding to upper-diagonal
for(int k = 0; k < nnz; k++) {
pattern.put(k, k, k+1);
}
//
// row and column indices
vec_int row = pattern.row();
vec_int col = pattern.col();
//
// check row and column indices
for(int k = 0; k < nnz; k++) {
ok = ok && row[k] == k;
ok = ok && col[k] == k+1;
}
//
// For this case, row_major and col_major order are same as original order
vec_int row_major = pattern.row_major();
vec_int col_major = pattern.col_major();
for(int k = 0; k < nnz; k++) {
ok = ok && row_major[k] == k;
ok = ok && col_major[k] == k;
}
//
return( ok );
}