----------------------------------------------------- lines 9-126 of file: include/cppad/core/print_for.hpp ----------------------------------------------------- {xrst_begin PrintFor} {xrst_spell notpos } Printing AD Values During Forward Mode ###################################### Syntax ****** | *f* . ``Forward`` (0, *x* ) | *f* . ``Forward`` (0, *x* , *s* ) | ``PrintFor`` ( *before* , *value* ) | ``PrintFor`` ( *notpos* , *before* , *value* , *after* ) See Also ******** :ref:`ad_output-name` Purpose ******* The :ref:`zero order forward` mode command *f* . ``Forward`` (0, *x* ) sets the :ref:`glossary@Tape@Independent Variable` vector equal to *x* . It then computes a value for all of the dependent variables in the :ref:`operation sequence` corresponding to *f* . Putting a ``PrintFor`` in the operation sequence, prints *value* , corresponding to *x* , to be printed during zero order forward operations. f.Forward(0, x) *************** The objects *f* , *x* , and the purpose for this operation, are documented in :ref:`Forward-name` . notpos ****** If present, the argument *notpos* has one of the following prototypes | |tab| ``const AD`` < *Base* >& *notpos* | |tab| ``const VecAD`` < *Base* >:: ``reference&`` *notpos* In this case the text and *value* will be printed if and only if *notpos* is not positive (greater than zero) and a finite number. before ****** The argument *before* has prototype ``const char`` * *before* This text is written to ``std::cout`` before *value* . value ***** The argument *value* has one of the following prototypes | |tab| ``const AD`` < *Base* >& *value* | |tab| ``const VecAD`` < *Base* >:: ``reference&`` *value* The *value* , that corresponds to *x* , is written to ``std::cout`` during the execution of *f* . ``Forward`` (0, *x* ) Note that *value* may be a :ref:`glossary@Variable` or :ref:`glossary@Parameter` . If a parameter is :ref:`glossary@Parameter@Dynamic` its value will depend on the previous call to :ref:`new_dynamic-name` . after ***** The argument *after* has prototype ``const char`` * *after* This text is written to ``std::cout`` after *value* . s * You can redirect this output to any standard output stream using the syntax *f* . ``Forward`` (0, *x* , *s* ) see :ref:`forward_zero@s` in the zero order forward mode documentation. Discussion ********** This is helpful for understanding why tape evaluations have trouble. For example, if one of the operations in *f* is ``log`` ( *value* ) and *value* < 0 , the corresponding result will :ref:`nan-name` . Example ******* {xrst_toc_hidden example/print_for/print_for.cpp example/general/print_for.cpp } The program :ref:`print_for_cout.cpp-name` is an example and test that prints to standard output. The output of this program states the conditions for passing and failing the test. The function :ref:`print_for_string.cpp-name` is an example and test that prints to an standard string stream. This function automatically check for correct output. {xrst_end PrintFor}