CppAD: A C++ Algorithmic Differentiation Package
20171217
|
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_t > | load_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... | |
Class used to hold function objects.
Base | A 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.