|
Prev | Next | sparse_rcv_xam.pm | Headings |
package sparse_rcv_xam;
sub sparse_rcv_xam() {
# check for standard perl programming conventions
use strict;
use warnings;
#
# load the Cppad Swig library
use pm_cppad;
#
# initilaize return variable
my $ok = 1;
# ---------------------------------------------------------------------
#
# create sparsity pattern for n by n identity matrix
my $pattern = new pm_cppad::sparse_rc();
my $n = 5;
$pattern->resize($n, $n, $n);
for(my $k = 0; $k < $n; $k++) {
$pattern->put($k, $k, $k);
}
#
# create n by n sparse representation of identity matrix
my $matrix = new pm_cppad::sparse_rcv($pattern);
for(my $k = 0; $k < $n; $k++) {
$matrix->put($k, 1.0);
}
#
# row, column indices
my $row = $matrix->row();
my $col = $matrix->col();
my $val = $matrix->val();
#
# check results
for(my $k = 0; $k < $n; $k++) {
$ok = $ok && $row->get($k) == $k;
$ok = $ok && $col->get($k) == $k;
$ok = $ok && $val->get($k) == 1.0;
}
#
# For this case, row_major and col_major order are same as original order
my $row_major = $matrix->row_major();
my $col_major = $matrix->col_major();
for(my $k = 0; $k < $n; $k++) {
$ok = $ok && $row_major->get($k) == $k;
$ok = $ok && $col_major->get($k) == $k;
}
#
return( $ok );
}