![]() |
Prev | Next | a_fun_optimize_xam.pm | Headings |
package a_fun_optimize_xam; sub a_fun_optimize_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 = 1; # number of independent variables my $n_dep = 1; # number of dependent variables my $n_var = 1; # phantom variable at address 0 my $n_op = 1; # special operator at beginning # # dimension some vectors my $x = new pm_cppad::vec_double($n_ind); my $ay = new pm_cppad::vec_a_double($n_dep); # # independent variables $x->set(0, 1.0); my $ax = pm_cppad::independent($x); $n_var = $n_var + $n_ind; # one for each indpendent $n_op = $n_op + $n_ind; # # accumulate summation my $ax0 = $ax->get(0); my $csum = new pm_cppad::a_double(0.0); $csum = $ax0 + $ax0 + $ax0 + $ax0; $n_var = $n_var + 3; # one per + operator $n_op = $n_op + 3; # # define f(x) = y_0 = csum $ay->set(0, $csum); my $af = new pm_cppad::a_fun($ax, $ay); $n_op = $n_op + 1; # speical operator at end # # check number of variables and operators $ok = $ok && $af->size_var() == $n_var; $ok = $ok && $af->size_op() == $n_op; # # optimize $af->optimize(); # # number of variables and operators has decreased by two $ok = $ok && $af->size_var() == $n_var-2; $ok = $ok && $af->size_op() == $n_op-2; # return( $ok ); }