CppAD: A C++ Algorithmic Differentiation Package  20171217
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
CppAD::ADFun< Base > Class Template Reference

Class used to hold function objects. More...

Public Member Functions

void abs_normal_fun (ADFun &g, ADFun &a) const
 
 ADFun (const ADFun &g)
 copy constructor More...
 
 ADFun (void)
 default constructor More...
 
template<typename ADvector >
 ADFun (const ADvector &x, const ADvector &y)
 sequence constructor More...
 
template<typename VectorAD >
 ADFun (const VectorAD &x, const VectorAD &y)
 ADFun constructor from an operation sequence. More...
 
void capacity_order (size_t c)
 set number of orders currently allocated (user API) More...
 
void capacity_order (size_t c, size_t r)
 set number of orders and directions currently allocated More...
 
void capacity_taylor (size_t per_var)
 Deprecated: set number of orders currently allocated (per variable,direction) More...
 
void check_for_nan (bool value)
 set check_for_nan More...
 
bool check_for_nan (void) const
 get check_for_nan More...
 
void compare_change_count (size_t count)
 count as which to store operator index More...
 
size_t compare_change_number (void) const
 number of comparison operations that changed More...
 
size_t compare_change_op_index (void) const
 operator index for the count-th comparison change More...
 
size_t CompareChange (void) const
 Deprecated: number of comparison operations that changed for the previous zero order forward (than when function was recorded) More...
 
template<typename ADvector >
void Dependent (const ADvector &x, const ADvector &y)
 assign a new operation sequence More...
 
template<typename ADvector >
void Dependent (const ADvector &y)
 deprecated: assign a new operation sequence More...
 
size_t Domain (void) const
 number of independent variables More...
 
template<typename BoolVector , typename SizeVector >
void for_hes_sparsity (const BoolVector &select_domain, const BoolVector &select_range, bool internal_bool, sparse_rc< SizeVector > &pattern_out)
 Forward Hessian sparsity patterns. More...
 
template<typename SizeVector >
void for_jac_sparsity (const sparse_rc< SizeVector > &pattern_in, bool transpose, bool dependency, bool internal_bool, sparse_rc< SizeVector > &pattern_out)
 Forward Jacobian sparsity patterns. More...
 
template<typename Vector >
Vector ForOne (const Vector &x, size_t j)
 
template<typename VectorBase >
VectorBase ForOne (const VectorBase &x, size_t j)
 forward mode calculation of partial w.r.t one domain component More...
 
template<typename VectorSet >
VectorSet ForSparseHes (const VectorSet &r, const VectorSet &s)
 User API for Hessian sparsity patterns using reverse mode. More...
 
void ForSparseHesCheckpoint (vector< bool > &r, vector< bool > &s, local::sparse_list &h)
 
template<typename VectorSet >
VectorSet ForSparseJac (size_t q, const VectorSet &r, bool transpose=false, bool dependency=false)
 User API for Jacobian sparsity patterns using forward mode. More...
 
void ForSparseJacCheckpoint (size_t q, const local::sparse_list &r, bool transpose, bool dependency, local::sparse_list &s)
 Forward mode Jacobian sparsity calculation used by checkpoint functions. More...
 
template<typename VectorBase , typename VectorSize_t >
VectorBase ForTwo (const VectorBase &x, const VectorSize_t &J, const VectorSize_t &K)
 forward mode calculation of a subset of second order partials More...
 
template<typename VectorBase >
VectorBase Forward (size_t q, size_t r, const VectorBase &x)
 forward mode user API, one order multiple directions. More...
 
template<typename VectorBase >
VectorBase Forward (size_t q, const VectorBase &x, std::ostream &s=std::cout)
 forward mode user API, multiple directions one order. More...
 
template<typename Vector >
Vector Hessian (const Vector &x, size_t l)
 
template<typename Vector >
Vector Hessian (const Vector &x, const Vector &w)
 
template<typename VectorBase >
VectorBase Hessian (const VectorBase &x, const VectorBase &w)
 calculate Hessian for one component of f More...
 
template<typename VectorBase >
VectorBase Hessian (const VectorBase &x, size_t i)
 
template<typename Vector >
Vector Jacobian (const Vector &x)
 
template<typename VectorBase >
VectorBase Jacobian (const VectorBase &x)
 calculate entire Jacobian More...
 
size_t Memory (void) const
 Deprecated: amount of memory for this object Note that an approximation is used for the std::set<size_t> memory. More...
 
size_t number_skip (void)
 number of variables in conditional expressions that can be skipped More...
 
void operator= (const ADFun &f)
 ADFun assignment operator. More...
 
void optimize (const std::string &options="")
 Optimize a player object operation sequence. More...
 
size_t Order (void) const
 Deprecated: # taylor_ coefficients currently stored (per variable,direction) More...
 
bool Parameter (size_t i)
 is variable a parameter More...
 
size_t Range (void) const
 number of dependent variables More...
 
template<typename BoolVector , typename SizeVector >
void rev_hes_sparsity (const BoolVector &select_range, bool transpose, bool internal_bool, sparse_rc< SizeVector > &pattern_out)
 Reverse Hessian sparsity patterns. More...
 
template<typename SizeVector >
void rev_jac_sparsity (const sparse_rc< SizeVector > &pattern_in, bool transpose, bool dependency, bool internal_bool, sparse_rc< SizeVector > &pattern_out)
 Reverse Jacobian sparsity patterns. More...
 
template<typename VectorBase >
VectorBase Reverse (size_t p, const VectorBase &v)
 reverse mode sweep More...
 
template<typename Vector >
Vector RevOne (const Vector &x, size_t i)
 
template<typename VectorBase >
VectorBase RevOne (const VectorBase &x, size_t i)
 reverse mode calculation of derivative of one range component More...
 
template<typename VectorSet >
VectorSet RevSparseHes (size_t q, const VectorSet &s, bool transpose=false)
 User API for Hessian sparsity patterns using reverse mode. More...
 
void RevSparseHesCheckpoint (size_t q, vector< bool > &s, bool transpose, local::sparse_list &h)
 Hessian sparsity patterns calculation used by checkpoint functions. More...
 
template<typename VectorSet >
VectorSet RevSparseJac (size_t q, const VectorSet &s, bool transpose=false, bool dependency=false)
 User API for Jacobian sparsity patterns using reverse mode. More...
 
void RevSparseJacCheckpoint (size_t q, const local::sparse_list &r, bool transpose, bool dependency, local::sparse_list &s)
 Reverse mode Jacobian sparsity calculation used by checkpoint functions. More...
 
template<typename VectorBase , typename VectorSize_t >
VectorBase RevTwo (const VectorBase &x, const VectorSize_t &I, const VectorSize_t &J)
 reverse mode calculation of a subset of second order partials More...
 
size_t Size (void) const
 Deprecated: number of variables in opertion sequence. More...
 
size_t size_direction (void) const
 number taylor coefficient directions calculated More...
 
size_t size_forward_bool (void) const
 amount of memory used for boolean Jacobain sparsity pattern More...
 
void size_forward_bool (size_t zero)
 free memory used for Jacobain sparsity pattern More...
 
size_t size_forward_set (void) const
 amount of memory used for vector of set Jacobain sparsity pattern More...
 
void size_forward_set (size_t zero)
 free memory used for Jacobain sparsity pattern More...
 
size_t size_op (void) const
 number of operators in the operation sequence More...
 
size_t size_op_arg (void) const
 number of operator arguments in the operation sequence More...
 
size_t size_op_seq (void) const
 amount of memory required for the operation sequence More...
 
size_t size_order (void) const
 number taylor coefficient orders calculated More...
 
size_t size_par (void) const
 number of parameters in the operation sequence More...
 
size_t size_taylor (void) const
 Deprecated: # taylor_ coefficient orders calculated (per variable,direction) More...
 
size_t size_text (void) const
 number of characters in the operation sequence More...
 
size_t size_var (void) const
 number of variables in opertion sequence More...
 
size_t size_VecAD (void) const
 number of VecAD indices in the operation sequence More...
 
template<typename SizeVector , typename BaseVector >
size_t sparse_hes (const BaseVector &x, const BaseVector &w, sparse_rcv< SizeVector, BaseVector > &subset, const sparse_rc< SizeVector > &pattern, const std::string &coloring, sparse_hes_work &work)
 Calculate sparse Hessians using forward mode. More...
 
template<typename SizeVector , typename BaseVector >
size_t sparse_jac_for (size_t group_max, const BaseVector &x, sparse_rcv< SizeVector, BaseVector > &subset, const sparse_rc< SizeVector > &pattern, const std::string &coloring, sparse_jac_work &work)
 Calculate sparse Jacobains using forward mode. More...
 
template<typename SizeVector , typename BaseVector >
size_t sparse_jac_rev (const BaseVector &x, sparse_rcv< SizeVector, BaseVector > &subset, const sparse_rc< SizeVector > &pattern, const std::string &coloring, sparse_jac_work &work)
 Calculate sparse Jacobains using reverse mode. More...
 
template<typename VectorBase >
VectorBase SparseHessian (const VectorBase &x, const VectorBase &w)
 calculate sparse Hessians More...
 
template<typename VectorBase , typename VectorBool >
VectorBase SparseHessian (const VectorBase &x, const VectorBase &w, const VectorBool &p)
 
template<class VectorBase , class VectorSet , class VectorSize >
size_t SparseHessian (const VectorBase &x, const VectorBase &w, const VectorSet &p, const VectorSize &r, const VectorSize &c, VectorBase &hes, sparse_hessian_work &work)
 Compute user specified subset of a sparse Hessian. More...
 
template<class VectorBase , class VectorSet >
VectorBase SparseHessian (const VectorBase &x, const VectorBase &w, const VectorSet &p)
 Compute a sparse Hessian. More...
 
template<typename VectorBase >
VectorBase SparseJacobian (const VectorBase &x)
 calculate sparse Jacobians More...
 
template<typename VectorBase , typename VectorSet >
VectorBase SparseJacobian (const VectorBase &x, const VectorSet &p)
 Compute a sparse Jacobian. More...
 
template<class VectorBase , class VectorSet , class VectorSize >
size_t SparseJacobianForward (const VectorBase &x, const VectorSet &p, const VectorSize &r, const VectorSize &c, VectorBase &jac, sparse_jacobian_work &work)
 Compute user specified subset of a sparse Jacobian using forward mode. More...
 
template<class VectorBase , class VectorSet , class VectorSize >
size_t SparseJacobianReverse (const VectorBase &x, const VectorSet &p, const VectorSize &r, const VectorSize &c, VectorBase &jac, sparse_jacobian_work &work)
 Compute user specified subset of a sparse Jacobian using forward mode. More...
 
template<typename SizeVector , typename BaseVector >
void subgraph_jac_rev (const BaseVector &x, sparse_rcv< SizeVector, BaseVector > &subset)
 Subgraph sparsity patterns. More...
 
template<typename BoolVector , typename SizeVector , typename BaseVector >
void subgraph_jac_rev (const BoolVector &select_domain, const BoolVector &select_range, const BaseVector &x, sparse_rcv< SizeVector, BaseVector > &matrix_out)
 
template<typename VectorBool >
void subgraph_reverse (const VectorBool &select_domain)
 Initialize reverse mode derivative computation on subgraphs. More...
 
template<typename VectorBase , typename SizeVector >
void subgraph_reverse (size_t q, size_t ell, SizeVector &col, VectorBase &dw)
 Use reverse mode to compute derivative of Taylor coefficients on a subgraph. More...
 
template<typename BoolVector , typename SizeVector >
void subgraph_sparsity (const BoolVector &select_domain, const BoolVector &select_range, bool transpose, sparse_rc< SizeVector > &pattern_out)
 Subgraph sparsity patterns. More...
 
size_t taylor_size (void) const
 Deprecated: # taylor_ coefficient orderss stored (per variable,direction) More...
 
bool use_VecAD (void) const
 Deprecated: Does this AD operation sequence use VecAD<Base>::reference operands. More...
 
 ~ADFun (void)
 destructor More...
 

Private Member Functions

template<typename ADvector >
void Dependent (local::ADTape< Base > *tape, const ADvector &y)
 change the operation sequence corresponding to this object More...
 
template<class VectorSet >
void ForSparseHesCase (bool set_type, const VectorSet &r, const VectorSet &s, VectorSet &h)
 Private helper function for ForSparseHes(q, s) bool sparsity. More...
 
template<class VectorSet >
void ForSparseHesCase (const std::set< size_t > &set_type, const VectorSet &r, const VectorSet &s, VectorSet &h)
 Private helper function for ForSparseHes(q, s) set sparsity. More...
 
template<class VectorSet >
void ForSparseJacCase (bool set_type, bool transpose, bool dependency, size_t q, const VectorSet &r, VectorSet &s)
 Private helper function for ForSparseJac(q, r) boolean sparsity patterns. More...
 
template<class VectorSet >
void ForSparseJacCase (const std::set< size_t > &set_type, bool transpose, bool dependency, size_t q, const VectorSet &r, VectorSet &s)
 Private helper function for ForSparseJac(q, r) set sparsity. More...
 
template<class VectorSet >
void RevSparseHesCase (bool set_type, bool transpose, size_t q, const VectorSet &s, VectorSet &h)
 Private helper function for RevSparseHes(q, s) bool sparsity. More...
 
template<class VectorSet >
void RevSparseHesCase (const std::set< size_t > &set_type, bool transpose, size_t q, const VectorSet &s, VectorSet &h)
 Private helper function for RevSparseHes(q, s) set sparsity. More...
 
template<class VectorSet >
void RevSparseJacCase (bool set_type, bool transpose, bool dependency, size_t p, const VectorSet &s, VectorSet &r)
 Private helper function for RevSparseJac(q, r, transpose) boolean sparsity. More...
 
template<class VectorSet >
void RevSparseJacCase (const std::set< size_t > &set_type, bool transpose, bool dependency, size_t p, const VectorSet &s, VectorSet &r)
 Private helper function for RevSparseJac(q, r, transpose) set sparsity. More...
 
template<class VectorBase , class VectorSet , class VectorSize >
size_t SparseHessianCompute (const VectorBase &x, const VectorBase &w, VectorSet &sparsity, const VectorSize &row, const VectorSize &col, VectorBase &hes, sparse_hessian_work &work)
 Private helper function that does computation for all Sparse Hessian cases. More...
 
template<class VectorBase , class VectorSet , class VectorSize >
size_t SparseJacobianFor (const VectorBase &x, VectorSet &p_transpose, const VectorSize &row, const VectorSize &col, VectorBase &jac, sparse_jacobian_work &work)
 Private helper function forward mode cases. More...
 
template<class VectorBase , class VectorSet , class VectorSize >
size_t SparseJacobianRev (const VectorBase &x, VectorSet &p, const VectorSize &row, const VectorSize &col, VectorBase &jac, sparse_jacobian_work &work)
 Private helper function for reverse mode cases. More...
 

Private Attributes

size_t cap_order_taylor_
 maximum number of orders that will fit in taylor_ More...
 
bool check_for_nan_
 Check for nan's and report message to user (default value is true). More...
 
size_t compare_change_count_
 If zero, ignoring comparison operators. Otherwise is the compare change count at which to store the operator index. More...
 
size_t compare_change_number_
 If compare_change_count_ is zero, compare_change_number_ is also zero. Otherwise, it is set to the number of comparison operations that had a different result during the subsequent zero order forward. More...
 
size_t compare_change_op_index_
 
If compare_change_count is zero, compare_change_op_index_ is also

zero. Otherwise it is the operator index for the comparison operator / that corresponded to the number changing from count-1 to count. More...

 
local::pod_vector< bool > cskip_op_
 which operations can be conditionally skipped Set during forward pass of order zero More...
 
CppAD::vector< bool > dep_parameter_
 which dependent variables are actually parameters More...
 
CppAD::vector< size_t > dep_taddr_
 tape address and parameter flag for the dependent variables More...
 
local::sparse_pack for_jac_sparse_pack_
 Packed results of the forward mode Jacobian sparsity calculations. for_jac_sparse_pack_.n_set() != 0 implies other sparsity results are empty. More...
 
local::sparse_list for_jac_sparse_set_
 Set results of the forward mode Jacobian sparsity calculations for_jac_sparse_set_.n_set() != 0 implies for_sparse_pack_ is empty. More...
 
bool has_been_optimized_
 Has this ADFun object been optmized. More...
 
CppAD::vector< size_t > ind_taddr_
 tape address for the independent variables More...
 
local::pod_vector< addr_tload_op_
 Variable on the tape corresponding to each vecad load operation (if zero, the operation corresponds to a parameter). More...
 
size_t num_direction_taylor_
 number of directions stored in taylor_ More...
 
size_t num_order_taylor_
 number of orders stored in taylor_ More...
 
size_t num_var_tape_
 number of variables in the recording (play_) More...
 
local::player< Base > play_
 the operation sequence corresponding to this object More...
 
local::subgraph::subgraph_info subgraph_info_
 subgraph information for this object More...
 
local::pod_vector< Base > subgraph_partial_
 Memory used for subgraph reverse mode calculations. Declared here to avoid reallocation for each call to subgraph_reverse. Not in subgraph_info_ because it depends on Base. More...
 
local::pod_vector< Base > taylor_
 results of the forward mode calculations More...
 

Detailed Description

template<class Base>
class CppAD::ADFun< Base >

Class used to hold function objects.

Template Parameters
BaseA function object has a recording of AD<Base> operations. It does it calculations using Base operations.

Definition at line 69 of file ad_fun.hpp.


The documentation for this class was generated from the following files: