Prev Next a_double_cond_assign_xam.m Headings

@(@\newcommand{\B}[1]{ {\bf #1} } \newcommand{\R}[1]{ {\rm #1} }@)@
Octave: a_double Conditional Assignment: Example and Test
function ok = a_double_cond_assign_xam()
     %
     % load the Cppad Swig library
     m_cppad
     %
     % initialize return variable
     ok = true;
     % -----------------------------------------------------------------------
     n_ind = 4;
     n_dep = 1;
     %
     % create ax (value of independent variables does not matter)
     x = m_cppad.vec_double(n_ind);
     x(0) = 0.0;
     x(1) = 1.0;
     x(2) = 2.0;
     x(3) = 3.0;
     ax = m_cppad.independent(x);
     %
     % arguments to conditional assignment
     left = ax(0);
     right = ax(1);
     if_true = ax(2);
     if_false = ax(3);
     %
     % assignment
     target = m_cppad.a_double();
     target.cond_assign(
          "<",
          left,
          right,
          if_true,
          if_false
     );
     %
     % f(x) = taget
     ay = m_cppad.vec_a_double(n_dep);
     ay(0) = target;
     af = m_cppad.a_fun(ax, ay);
     %
     % assignment with different independent variable values
     x(0) = 9.0; % left
     x(1) = 8.0; % right
     x(2) = 7.0; % if_true
     x(3) = 6.0; % if_false
     p = 0;
     y = af.forward(p, x);
     ok = ok && y(0) == 6.0;
     %
     return;
end

Input File: build/lib/example/octave/a_double_cond_assign_xam.m