Prev Next WishList

The CppAD Wish List

Atan2
The atan2 function could be made faster by adding a special operator for it.

BenderQuad
See the problem with the current BenderQuad specifications.

CondExp
Extend the conditional expressions CondExp so that they are valid for complex types by comparing real parts. In addition, use this change to extend LuRatio so that it works with complex AD types.

Computed Assignment
If the Base type is not double, the computed assignment operators do not always allow for double operands. For example, if x has type AD< AD<double> >
     
x += .5;
will slice the value .5 to an int and then convert it to an AD< AD<double> >. Hence, zero will be added to x.

Exceptions
When the function Independent is called, a new tape is created. If an exception occurs before the call to the corresponding ADFun constructor or Dependent , the tape recording will never stop. Thus, there should be a way to abort a tape recording.

Operation Sequence
It is possible to detect if the AD of Base operation sequence does not depend on any of the independent variable values. This could be returned as an extra SeqProperty .

Optimization
A single RevSparseJac sweep could be used to determine which parts of the operation sequence in an ADFun object can be removed.

Software Guidelines

Boost
The following is a list of some software guidelines taken from boost . These guidelines are not followed by the current CppAD source code, but perhaps they should be:
  1. Names (except as noted below) should be all lowercase, with words separated by underscores. For example, acronyms should be treated as ordinary names (xml_parser instead of XML_parser).
  2. Template parameter names should begin with an uppercase letter.
  3. Use spaces rather than tabs.


Member Variables
Change private member variables names (not part of the user interface) so that they all end with an underscore. (This has been done for the AD and VecAD template class, but not yet for the other classes.)

Vector Element Type
Change cross references from elements of a specified type to value_type .

Tracing
Add forward and reverse mode operation tracing to the developer documentation (perhaps it will eventually become part of the user interface and documentation).

VecAD
Make assignment operation in VecAD like assignment in ad_copy . This will fix slicing to int when assigning from double to VecAD< AD<double> >::reference object.
Input File: omh/wish_list.omh