![]() |
Prev | Next | a_fun_abort_xam.pm | Headings |
package a_fun_abort_xam; sub a_fun_abort_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; # --------------------------------------------------------------------- my $n_ind = 2; # # create ax my $x = new pm_cppad::vec_double($n_ind); for(my $i = 0; $i < $n_ind ; $i++) { $x->set($i, $i + 1.0); } my $ax = pm_cppad::independent($x); # # preform some a_double operations my $ax0 = $ax->get(0); my $ax1 = $ax->get(1); my $ay = $ax0 + $ax1; # # check that ay is a variable; its value depends on the value of ax $ok = $ok && $ay->variable(); # # abort this recording pm_cppad::abort_recording(); # # check that ay is now a parameter, no longer a variable. $ok = $ok && $ay->parameter(); # # since it is a parameter, we can retrieve its value my $y = $ay->value(); # # its value should be x0 + x1 $ok = $ok && $y == $x->get(0) + $x->get(1); # # an abort when not recording has no effect pm_cppad::abort_recording(); # return( $ok ); }