lines 8-95 of file: include/cppad/core/atomic/four/call.hpp {xrst_begin atomic_four_call} Calling an Atomic Function ########################## Syntax ****** | *afun* ( *ax* , *ay* ) | *ay* = *afun* ( *call_id* , *ax* , *ay* ) Prototype ********* {xrst_literal // BEGIN_PROTOTYPE // END_PROTOTYPE } Purpose ******* Given *ax* , this call computes the corresponding value of *ay* . If ``AD`` < *Base* > operations are being recorded, it enters the computation as an atomic operation in the recording; see :ref:`Independent@Start Recording` . Base **** This is the :ref:`atomic_four_ctor@atomic_four@Base` in the *afun* constructor. It is also the *Base* type of the elements of *ax* and *ay* in the atomic function call. To be specific, the elements of *ax* and *ay* have type ``AD`` < ``Base`` > . ADVector ******** The type *ADVector* must be a :ref:`simple vector class` with elements of type ``AD`` < *Base* > . afun **** is a :ref:`atomic_four_ctor@atomic_user` object and this *afun* function call is implemented by the :ref:`atomic_four_ctor@atomic_four` class. ax ** The size of this vector determines *n* . It specifies vector :math:`x \in \B{R}^n` at which an ``AD`` < *Base* > version of :math:`y = g(x)` is to be evaluated. ay ** The size of this vector determines *m* . The input values of its elements are not specified (must not matter). Upon return, it is an ``AD`` < *Base* > version of :math:`y = g(x)`. call_id ******* This optional argument has default value zero. It can be used to specify additional information about this call to *afun* . For example, it could specify the index in vector of structures in the *afun* object where the actual information is placed. for_type ******** The :ref:`for_type` routine will be called once, for each call to an atomic function, before any other callbacks corresponding to the atomic function call. This enables you to store, during the ``for_type`` routine, the values in :ref:`atomic_four_for_type@type_x` and or :ref:`atomic_four_for_type@type_y` corresponding to this atomic function call. Restriction =========== The value of *call_id* must be less than or equal ``std::numeric_limits<`` *cppad_tape_id_type* >:: ``max`` () see :ref:`cmake@cppad_tape_id_type` . {xrst_end atomic_four_call}