---------------------------------------------------------------- lines 8-80 of file: include/cppad/core/atomic/three/for_type.hpp ---------------------------------------------------------------- {xrst_begin atomic_three_for_type} Atomic Function Forward Type Calculation ######################################## Syntax ****** | *ok* = *afun* . ``for_type`` ( *parameter_x* , *type_x* , *type_y* ) Prototype ========= {xrst_literal // BEGIN_PROTOTYPE // END_PROTOTYPE } Dependency Analysis ******************* This calculation is sometimes referred to as a forward dependency analysis. Usage ***** This syntax and prototype are used by *afun* ( *ax* , *ay* ) where :ref:`atomic_three_ctor@atomic_user@afun` is a user defined atomic function. Implementation ************** This virtual function must be defined by the :ref:`atomic_three_ctor@atomic_user` class. Base **** See :ref:`atomic_three_define@Base` . parameter_x *********** See :ref:`atomic_three_define@parameter_x` . type_x ****** See :ref:`atomic_three_define@type_x` . type_y ****** This vector has size equal to the number of results for this atomic function; i.e. *m* = *ay* . ``size`` () . The input values of the elements of *type_y* are not specified (must not matter). Upon return, for :math:`i = 0 , \ldots , m-1`, *type_y* [ *i* ] is set to one of the following values: #. It is ``constant_enum`` if *ay* [ *i* ] only depends on the arguments that are constants. #. It is ``dynamic_enum`` if *ay* [ *i* ] depends on a dynamic parameter and does not depend on any variables. #. It is ``variable_enum`` if *ay* [ *i* ] depends on a variable. ok ** If this calculation succeeded, *ok* is true. Otherwise, it is false. Example ******* The following is an example of a atomic function ``for_type`` definition: :ref:`get_started.cpp` . {xrst_end atomic_three_for_type}