Prev Next sparse_rc_xam.cpp Headings

@(@\newcommand{\B}[1]{ {\bf #1} } \newcommand{\R}[1]{ {\rm #1} }@)@
C++: Sparsity Patterns: Example and Test
# 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 );
}

Input File: build/lib/example/cplusplus/sparse_rc_xam.cpp