CppAD: A C++ Algorithmic Differentiation Package  20171217
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
template<class Base >
void CppAD::local::optimize::usage_cexp_result2arg ( const player< Base > *  play,
bool  sum_result,
size_t  i_result,
size_t  i_arg,
vector< struct_opt_op_info > &  opt_op_info,
sparse_list &  cexp_set 
)
inline

Increarse argument usage and propagate cexp_set from result to argument.

Parameters
playis the player for the old operation sequence.
sum_resultis result an addition or subtraction operator (passed for speed so do not need to call add_or_subtract for result).
i_resultis the operator index for the result operator.
i_argis the operator index for the argument to the result operator.
opt_op_infostructure that holds the information for each of the operators. The output value of opt_op_info[i_arg].usage is increased; to be specific, If sum_result is true and the input value of opt_op_info[i_arg].usage is no_usage, its output value is csum_usage. Otherwise, the output value of opt_op_info[i_arg].usage is yes_usage.
cexp_setThis is a vector of sets with one set for each operator. We denote the i-th set by set[i].
  • In the special case where cexp_set.n_set() is zero, cexp_set is not changed.
  • If cexp_set.n_set() != 0 and opt_op_info[i_arg].usage == no_usage, the input value of set[i_arg] must be empty. In this case the output value if set[i_arg] is equal to set[i_result] (which may also be empty).
  • If cexp_set.n_set() != 0 and opt_op_info[i_arg].usage != no_usage, the output value of set[i_arg] is the intersection of its input value and set[i_result].

Definition at line 91 of file get_opt_op_info.hpp.

Referenced by get_opt_op_info().