\(\newcommand{\W}[1]{ \; #1 \; }\) \(\newcommand{\R}[1]{ {\rm #1} }\) \(\newcommand{\B}[1]{ {\bf #1} }\) \(\newcommand{\D}[2]{ \frac{\partial #1}{\partial #2} }\) \(\newcommand{\DD}[3]{ \frac{\partial^2 #1}{\partial #2 \partial #3} }\) \(\newcommand{\Dpow}[2]{ \frac{\partial^{#1}}{\partial {#2}^{#1}} }\) \(\newcommand{\dpow}[2]{ \frac{ {\rm d}^{#1}}{{\rm d}\, {#2}^{#1}} }\)
atomic_four_call
Calling an Atomic Function
Syntax
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 .