\(\newcommand{\W}[1]{ \; #1 \; }\) \(\newcommand{\R}[1]{ {\rm #1} }\) \(\newcommand{\B}[1]{ {\bf #1} }\) \(\newcommand{\D}[2]{ \frac{\partial #1}{\partial #2} }\) \(\newcommand{\DD}[3]{ \frac{\partial^2 #1}{\partial #2 \partial #3} }\) \(\newcommand{\Dpow}[2]{ \frac{\partial^{#1}}{\partial {#2}^{#1}} }\) \(\newcommand{\dpow}[2]{ \frac{ {\rm d}^{#1}}{{\rm d}\, {#2}^{#1}} }\)
2009¶
View page sourceRelease Notes for 2009¶
mm-dd¶
12-23¶
The
ADFun
Assignment Operator
was changed so that it now copies forward mode
Taylor coefficients and sparsity pattern information.
(This assignment operator was added on 10-24 .)
You can use capacity_order to delete the Taylor coefficients
before copying them.
Two new functions were added so that you can query and delete the
forward mode sparsity information;
see
size_forward_bool and
size_forward_set .
12-22¶
Convert the optimization of a sequence of additions from multiple operators to one operator with a varying number of arguments. This improved the speed for forward and reverse mode computations of an optimized tape.
12-18¶
It turns out that detection of a sequence of additions makes the optimization longer. This was simplified and makes slightly faster by converting two jointly recursive routines to one non-recursive routine that uses a stack for the necessary information. More work is planned to make this optimization faster.
12-12¶
Detection of a sequence of additions that can be converted to one variable during the optimize process. This leads to a significant improvement in the tape size and speed.
12-04¶
Change hash coding of parameter values as part of operators during the optimize process. This should leads to more detection and removal of duplicate operations.
12-02¶
Fix minor grammatical error in the Purpose heading for conditional expressions .
Add the following functions: size_op , size_op_arg , and size_op_seq . In addition, improve and extend the fun_property.cpp example.
11-28¶
Fix bug in tape optimization with VecAD objects.
11-27¶
Remove duplicate expressions for the commutative binary operators; i.e., addition and multiplication.
11-26¶
Improve optimize command so that it removes some duplicate expressions from the tape (more of this is planned).
10-30¶
Make program that check Ipopt ODE example correctness
a separate file ipopt_nlp_ode_check.cpp
Split out Ipopt driver for ODE example ipopt_nlp_ode_run.hpp
.
Add the speed testing problem ipopt_cppad/ipopt_ode_speed.cpp
.
10-29¶
Split out the
ode inverse problem,
its simple representation,
and
its fast representation,
as a separate files; to be specific,
ipopt_nlp_ode_problem.hpp
,
ipopt_nlp_ode_simple.hpp
,
ipopt_nlp_ode_fast.hpp
,
and
ipopt_nlp_ode_check.cpp
.
10-28¶
Improve the documentation for ipopt_nlp_ode_simple
and
ipopt_nlp_ode_fast
.
10-27¶
Moved old ipopt_cppad_simple.cpp
to ipopt_nlp_get_started.cpp
,
created the example ipopt_nlp_ode_simple.hpp
,
and split and ipopt_cppad_ode.cpp
into ipopt_nlp_ode_fast.hpp
and ipopt_nlp_ode_check.cpp
.
10-24¶
Added the Assignment Operator
to the ADFun
object class.
This makes a copy of the entire operation sequence in another
function object.
The intention is that the two functions objects can do calculations in
parallel.
In addition,
CppAD now check for the ADFun
Copy Constructor
and generates an error message if it is used.
10-23¶
The sparse_hessian routine was extended so the user can now choose between vectors of sets and boolean vectors for representing sparsity patterns .
10-21¶
The CheckSimpleVector function was extended so that
it can check simple vectors where the elements of the vector
can not be assigned to integer values.
This was done by adding the x, y
arguments to CheckSimpleVector
.
10-16¶
The sparse_jacobian routine was extended so the user can now choose between vectors of sets and boolean vectors for representing sparsity patterns .
10-14¶
The packed parameter for the sparsity routines
ForSparseJac , RevSparseJac , and RevSparseHes
(introduced on 09-26 ) has been removed.
It has been replaced by changing the argument and return values
to be more versatile.
To be specific, they can now represent sparsity
using vectors of std::set<size_t>
instead of just as vectors of bool
(see sparsity patterns ).
10-03¶
The Microsoft Visual Studio project files for examples and testing and for more correctness testing were not including some new tests in their builds. This has been fixed.
09-30¶
Added the cppad_sparse_jacobian.cpp speed test and increased the sizes used by link_sparse_hessian . Some mistakes were fixed in the documentation for speed tests link_sparse_hessian and sparse_hes_fun .
09-29¶
The documentation definition of the function \(H(x)\) in RevSparseHes was missing a factor of \(R\). This has been fixed.
09-28¶
Changed RevSparseHes so that it uses a sparse
representation when the corresponding call to
ForSparseJac used a sparse representation.
This should have been included with the change on 09-26
because Hessian sparsity patters after ForSparseJac
with packed did not work.
Thus, this could be considered a bug fix.
09-26¶
Added the packed
parameter to
ForSparseJac and RevSparseJac .
If packed is false,
a sparse instead of packed representation is used
during the calculations of sparsity patterns.
The sparse representation
should be faster, and use less memory, for very large sparse Jacobians.
The functions ForSparseJac
and RevSparseJac
return packed representations.
The plan is to eventually provide new member functions that return
sparse representations.
09-20¶
Fixed a bug in the Hessian Sparsity calculations that included use of VecAD objects.
09-19¶
Some more memory allocation improvements (related to those on 09-18) were made.
09-18¶
A bug was found in all the sparsity_pattern calculations. The result was that eight times the necessary memory was being used during these calculations. This has been fixed.
08-25¶
Add ad_fun.cpp an example of how to create your own interface to an ADFun object.
08-14¶
Add ad_in_c.cpp an example of how to link CppAD to other languages.
08_13¶
Add an option to optimize an operation sequence.
These changes come from the directory branches/optimize
in the CppAD subversion repository.
The dates below represent when the correspond change was made.
08-13: An automatic check of the forward_zero results was added after each call to f.optimize() (this check is skipped when
NDEBUG
is defined). In addition, all of thespeed/cppad/
* .cpp
tests now check and use the speed test optimize flag.08-11: Change the speed test main program so that it uses a list of options instead of a boolean flag for each option. This will make it possible to add options in the future with out having to change all the existing tests because the options are now global variables instead of arguments to the speed test routines; for example, see
retape
speed test option.08-10: The routine for optimizing the operation sequence has been added has been further tested using
test_more/optimize.cpp
. Some bugs have been fix and the routine can now be trusted to work correctly.The function size_VecAD function was added so that the user could see the
VecAD
vectors and elements corresponding to an operation sequence.08-09: A routine for optimizing the operation sequence has been added. This is a preliminary version and needs more testing before it can be trusted to work correctly.
08-06¶
Add hash table coding to reduce the number of copies of the same parameter value necessary in a tape recording. In addition, add the function size_par was added so that the user could see the number of parameters corresponding to an operation sequence.
08-02¶
Fix bug in new version of how ForSparseJac handles VecAD objects.
Fix bug in overnight build where HTML version and entire documentation as one page versions of documentation were not being built.
Fix missing new line under Using Value heading for simple vector documentation.
08-01¶
Fix bug in reverse mode Jacobian sparsity for VecAD objects.
07-31¶
The forward and reverse sparse Jacobian routines have been improved so the resulting sparsity patterns are valid for all values of the independent variables (even if you use CondExp or VecAD ).
07-26¶
Convert developer documentation from forward and reverse mode sweep routines from OMhelp to doxygen.
07-25¶
Add developer documentation for PrintFor operations.
07-24¶
Add developer documentation for Discrete operations.
07-23¶
Add developer documentation for tape evaluation of VecAD store operations. (a store operation changes the value of a VecAD element).
Improve the vec_ad.cpp user example.
07-06¶
Fixed a bug in second or higher order reverse mode calculations
that used VecAD .
This bug was demonstrated by the test case SecondOrderReverse
in the file test_more/vec_ad.cpp
.
Add developer documentation for tape evaluation of the VecAD load operations (a load operation accesses an element of the vector but does not change it.)
Fix isnan
undefined in example/cond_exp.cpp
error
introduced on 07-04 change.
07-04¶
Add developer documentation for the
CompareChange operations during tape evaluation.
These changes come from the directory branches/sweep
in the CppAD subversion repository.
The dates below represent when the correspond change was made.
07-04: Fixed a bug in second or higher order reverse mode calculations that included conditional expressions . This bug was demonstrated by the test case
SecondOrderReverse
in the filetest_more/cond_exp.cpp
.A simpler and useful example was provided for conditional expressions ; see cond_exp.cpp .
07-03: Some minor improvements were made to the documentation for CondExp . To be specific, a newer OMhelp option was used to change the formatting of the syntax, some of the argument names were changed to be more descriptive.
07-02: Add developer doxygen documentation of tape evaluation for power (exponentiation) operators.
07-01: Fix an example indexing error in
introduction/exp_apx/exp_eps_for2.cpp
(found by valgrind).Add developer doxygen documentation of tape evaluation for multiplication and division operators.
06-30: Add developer doxygen documentation of tape evaluation for addition and subtraction operators.
06-29: Add developer doxygen documentation of tape evaluation for sin, sinh, cos, and cosh.
06-28: Add developer doxygen documentation of tape evaluation for atan, asin, acos, sqrt, log.
06-25¶
The tarball for most recent release (of the subversion trunk for CppAD) was not being placed in the download directory. This has been fixed.
06-22¶
Fix compiler warnings during the openmp/run.sh
test.
Changed speed_example.cpp to omit the speed_test
from
the correctness result.
In stead, a message is printed explaining that timing tests need
to be run without a lot of other demands on the system.
06-21¶
The configure instructions for ipopt_dir
had the wrong path for IpIpoptApplication.hpp
.
This has been fixed.
06-20¶
Upgrade to from autoconf 2.61 to 2.63, and from automake 1.10.1 to 1.11.
Fix conflict between CppAD’s use of config.h preprocessor symbols and other packages use of the same symbol names.
06-06¶
Using complex of an AD type (instead of AD of complex) was not working correctly in
not_complex_ad.cpp
because the default constructor for an AD object has an unspecified value. This has been fixed for the complex type by changing the default constructor to use value zero. (Thenot_complex_ad.cpp
example has been removed; see complex FAQ .)Fixing the
not_complex_ad.cpp
problem above also fixed a warning generated by valgrind. Nowvalgrind
runs the CppADexample/example
program with out any warning or error messages. In addition, a minor initialization error was fixed in thetest_more/jacobian.cpp
routine so nowvalgrind
also runs the CppADtest_more/test_more
program with out any warnings or error messages.
05-20¶
A change was make to the trunk on 05-19 (svn revision 1361) that broke the Unix install procedure. This was has been fixed (revision 1362).
03-24¶
Added cross references in
the examples to occurrence of the following tokens:
AD ,
ADFun ,
CPPAD_TEST_VECTOR
,
Forward ,
Independent ,
Jacobian
NearEqual ,
Reverse .
02-20¶
Demonstrate using AD to compute the derivative of the solution of an ODE with respect to a parameter (in the runge_45.cpp example).
02-15¶
Change the distribution compressed tar file to only contain one copy of the documentation. Link to the current Internet documentation for the other three copies.
02-01¶
Move the Prev
and Next
buttons at the top of the documentation
to the beginning so that their position does not change between sections.
This makes it easier to repeatedly select this links.
01-31¶
Modify cppad/local/op_code.hpp
to avoid incorrect warning by
g++ version 4.3.2 when building pycppad
(a python interface to CppAD).
01-18¶
Sometimes an error occurs while taping AD operations. The abort_recording function has been added to make it easier to recover in such cases.
Previously, CppAD speed and comparison tests used Adolc-1.10.2. The version used in the tests has been upgraded to Adolc-2.0.0.
A discussion has been added to the documentation for Jacobian about its use of Forward or Reverse mode depending on which it estimates is more efficient.
A minor typo has been fixed in the description of
W(t, u)
in reverse_any .
To be specific,
\(o ( t^{p-1} ) * t^{1-p} \rightarrow 0\)
has been replaced by
\(o ( t^{p-1} ) / t^{1-p} \rightarrow 0\).
01-06¶
Made some minor improvements to the documentation in fun_construct .