atomic_four_call

View page source

Calling an Atomic Function

Syntax

afun ( ax , ay )
ay = afun ( call_id , ax , ay )

Prototype

template <class Base> template <class ADVector>
void atomic_four<Base>::operator()(
   size_t           call_id ,
   const ADVector&  ax      ,
   ADVector&        ay      )

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 Start Recording .

Base

This is the 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 simple vector class with elements of type AD < Base > .

afun

is a atomic_user object and this afun function call is implemented by the atomic_four class.

ax

This vector is const and passed by reference and its size determines n . It specifies vector \(x \in \B{R}^n\) at which an AD < Base > version of \(y = g(x)\) is to be evaluated.

ay

This vector is passed by reference and its size determines m . The input values of its elements are not specified (must not matter). Upon return, it is an AD < Base > version of \(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 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 type_x and or 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 cppad_tape_id_type .