cpp_sparse_rc#

View page source

Sparsity Patterns#

Syntax#

cppad_py::sparse_rc pattern;
pattern.resize ( nr , nc , nnz )
nr = pattern.nr ()
nc = pattern.nc ()
nnz = pattern.nnz ()
pattern.put ( k , r , c )
row = pattern.row ()
col = pattern.col ()
row_major = pattern.row_major ()
col_major = pattern.col_major ()

pattern#

This result has prototype

      sparse_rc pattern

It is used to hold a sparsity pattern for a matrix. The sparsity pattern is const except during the resize and put operations.

nr#

This argument has prototype

      int nr

is non-negative, and specifies the number of rows in the sparsity pattern. The function nr() returns the value of nr in the previous resize operation.

nc#

This argument has prototype

      int nc

is non-negative, and specifies the number of columns in the sparsity pattern. The function nc() returns the value of nc in the previous resize operation.

nnz#

This argument and result has prototype

      int nnz

It is the number of possibly non-zero index pairs in the sparsity pattern. The function nnz() returns the value of nnz in the previous resize operation.

resize#

The current sparsity pattern is lost and a new one is started with the specified parameters. After each resize , the elements in the row and col vectors should be assigned using put .

put#

This function sets the values

      row [ k ] = r
      col [ k ] = c

(The name set is used by CppAD, but not used here, because set it is a built-in name in Python.)

k#

This argument has type

      int k

is non-negative, and must be less than nnz .

r#

This argument has type

      int r

is non-negative, and must be less than nr . It specifies the value assigned to row [ k ] and must

c#

This argument has type

      int c

It specifies the value assigned to col [ k ] and must be less than nc .

row#

This result has type

      vec_int row

and its size is nnz . For k = 0, … , nnz -1 , row [ k ] is the row index for the k-th possibly non-zero entry in the matrix.

col#

This result has type

      vec_int col

and its size is nnz . For k = 0, … , nnz -1 , col [ k ] is the column index for the k-th possibly non-zero entry in the matrix.

row_major#

This vector has prototype

      vec_int row_major

and its size nnz . It sorts the sparsity pattern in row-major order. To be specific,

      col [ row_major [ k ] ] <= col [ row_major [ k +1] ]

and if col [ row_major [ k ] ] == col [ row_major [ k +1] ] ,

      row [ row_major [ k ] ] < row [ row_major [ k +1] ]

This routine generates an assert if there are two entries with the same row and column values (if NDEBUG is not defined).

col_major#

This vector has prototype

      vec_int col_major

and its size nnz . It sorts the sparsity pattern in column-major order. To be specific,

      row [ col_major [ k ] ] <= row [ col_major [ k +1] ]

and if row [ col_major [ k ] ] == row [ col_major [ k +1] ] ,

      col [ col_major [ k ] ] < col [ col_major [ k +1] ]

This routine generates an assert if there are two entries with the same row and column values (if NDEBUG is not defined).

Example#

sparse_rc_xam.cpp