atomic_two

View page source

Defining Atomic Functions: Second Generation

Deprecated 2019-01-01

Using the atomic_base class has been deprecated. Use atomic_three instead.

Syntax

atomic_user afun ( ctor_arg_list )
afun ( ax , ay )
ok = afun . forward ( p , q , vx , vy , tx , ty )
ok = afun . reverse ( q , tx , ty , px , py )
ok = afun . for_sparse_jac ( q , r , s , x )
ok = afun . rev_sparse_jac ( q , r , s , x )
ok = afun . for_sparse_hes ( vx , r , s , h , x )
ok = afun . rev_sparse_hes ( vx , s , t , q , r , u , v , x )
atomic_base < Base >:: clear ()

See Also

checkpoint

Purpose

Speed

In some cases, the user knows how to compute derivatives of a function

\[y = f(x) \; {\rm where} \; f : \B{R}^n \rightarrow \B{R}^m\]

more efficiently than by coding it using AD < Base > atomic_base operations and letting CppAD do the rest. In this case atomic_base < Base > can use the user code for \(f(x)\), and its derivatives, as AD < Base > atomic operations.

Reduce Memory

If the function \(f(x)\) is used often, using an atomic version of \(f(x)\) remove the need for repeated copies of the corresponding AD < Base > operations.

Virtual Functions

User defined derivatives are implemented by defining the following virtual functions in the atomic_base class: forward , reverse , for_sparse_jac , rev_sparse_jac , and rev_sparse_hes . These virtual functions have a default implementation that returns ok == false . The forward function, for the case q == 0 , must be implemented. Otherwise, only those functions required by the your calculations need to be implemented. For example, forward for the case q == 2 can just return ok == false unless you require forward mode calculation of second derivatives.

Examples

See atomic_two_example .

Contents

Name

Title

atomic_two_ctor

Atomic Function Constructor

atomic_two_option

Set Atomic Function Options

atomic_two_afun

Using AD Version of Atomic Function

atomic_two_forward

Atomic Forward Mode

atomic_two_reverse

Atomic Reverse Mode

atomic_two_for_sparse_jac

Atomic Forward Jacobian Sparsity Patterns

atomic_two_rev_sparse_jac

Atomic Reverse Jacobian Sparsity Patterns

atomic_two_for_sparse_hes

Atomic Forward Hessian Sparsity Patterns

atomic_two_rev_sparse_hes

Atomic Reverse Hessian Sparsity Patterns

atomic_two_clear

Free Static Variables