Atomic Function Constructor
Keywords: atomic function constructor syntax atomic_user ctor_arg_list afun implementation atomic_base restrictions base name sparsity examples define use

| Prev | Next |  |  |  |  |  | atomic_ctor |

Atomic Function Constructor
Syntax
`atomic_user afun(ctor_arg_list)
` `atomic_base<Base>(name, sparsity)
`
atomic_user
ctor_arg_list
Is a list of arguments for the `atomic_user` constructor.
afun
The object `afun` must stay in scope for as long as the corresponding atomic function is used. This includes use by any ADFun<Base> that has this `atomic_user` operation in its operation sequence .
Implementation
The user defined `atomic_user` class is a publicly derived class of `atomic_base<Base>` . It should be declared as follows: `
class atomic_user : public CppAD::atomic_base<Base> {
public:
atomic_user(ctor_arg_list) : atomic_base<Base>(name, sparsity)
...
};
` where `...` denotes the rest of the implementation of the derived class. This includes completing the constructor and all the virtual functions that have their `atomic_base` implementations replaced by `atomic_user` implementations.
atomic_base
Restrictions
The `atomic_base` constructor cannot be called in parallel mode.
Base
The template parameter determines the `Base` type for this `AD<Base>` atomic operation.
name
This `atomic_base` constructor argument has the following prototype `
const std::string& name
` It is the name for this atomic function and is used for error reporting. The suggested value for `name` is `afun` or `atomic_user` , i.e., the name of the corresponding atomic object or class.
sparsity
This `atomic_base` constructor argument has prototype `
atomic_base<Base>::option_enum sparsity
` The current `sparsity` for an `atomic_base` object determines which type of sparsity patterns it uses and its value is one of the following:

`sparsity` | sparsity patterns
`atomic_base<Base>::pack_sparsity_enum` `` | vectorBool
`atomic_base<Base>::bool_sparsity_enum` `` | vector `<bool>`
`atomic_base<Base>::set_sparsity_enum` `` | vector `<std::set<std::size_t> >`

There is a default value for `sparsity` if it is not included in the constructor (which may be either the bool or set option).
Examples
Define Constructor
The following are links to user atomic function constructor definitions: get_started.cpp , norm_sq.cpp , reciprocal.cpp , tangent.cpp , matrix_mul.hpp .
Use Constructor
The following are links to user atomic function constructor uses: get_started.cpp , norm_sq.cpp , reciprocal.cpp , tangent.cpp , mat_mul.cpp .

Input File: cppad/local/atomic_base.hpp