\(\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}} }\)
2016¶
View page sourceRelease Notes for 2016¶
mm-dd¶
12-23¶
Added a way for the user to determine what tests options are available; see make check .
12-20¶
Change the optimize Examples to use
NearEqual for floating point tests (instead of exactly equal).
There were some other exactly equal floating point tests that were
failing on a mingw
system. Theses have also been fixed.
12-18¶
Add the no_print_for_op to the optimize routine.
12-13¶
Fix a bug in ForSparseHes . To be more specific, there was a bug in handling the cumulative summations operator in this routine. This could only come up when used an optimized f ,
Add the nest_conditional.cpp example.
12-11¶
Improve the optimize documentation. This includes making examples that demonstrate specific aspects of the optimization; see forward_active.cpp , reverse_active.cpp , compare_op.cpp , conditional_skip.cpp , cumulative_sum.cpp .
12-09¶
The options argument was added to the optimize routine.
11-18¶
Move classes and functions that are part of the user API from the
cppad/local
directory to the cppad/core
directory.
The remaining symbols, in the cppad/local
directory, are now
in the CppAD::local
namespace.
Note that a class in the CppAD
name space, may have a member
function that is not part of the user API.
11-14¶
Increase the speed of the sparse_pack
class.
This improves the speed for
vector of boolean
sparsity pattern calculations.
11-13¶
Merged in the sparse
branch which has const_iterator
,
instead of next_element
for the
sparse_list
and sparse_pack
classes.
These classes are not part of the CppAD API and hence their specifications
can change (as in this case).
They can be used to get more efficient representations of
sparsity patterns .
10-27¶
The optional optimize option was added to the checkpoint functions.
10-12¶
Change elapsed_seconds to use
std::chrono::steady_clock
instead ofstd::chrono::high_resolution_clock
.The test for C++11 features was failing on a Mac system because the elapsed time was returning as zero (between two events). This test has been made more robust by add a one millisecond sleep between the two clock accesses.
09-29¶
The multiple directions version of forward was missing erf function in the case where C++ 2011 was supported; see issue 16. This has been fixed.
09-27¶
Change the implementation of atomic_two_eigen_cholesky.hpp so that the computation of \(M_k\) exactly agrees with the corresponding theory .
09-26¶
A possible bug in the optimize command was fixed. To be specific, a warning of the form indentations;
warning: this
'if'
clause does not guard...
[-Wmisleading-indentation
]using the gcc-6.2.1 compiler, was fixed and it may have fixed a bug.
There was a problem with the sacado where the symbol
HAS_C99_TR1_CMATH
was being defined twice. This has been fixed by leaving it up to the sacado install to determine if this symbol should be defined.
09-16¶
Fix a problem using the
colpack option to the
speed_cppad
program.
(There was a problem whereby the speed_cppad
program did not properly detect when colpack
was available.)
09-13¶
Test third order and fix bug in atomic_two_eigen_cholesky.hpp for orders greater than or equal to three.
08-30¶
Add the atomic_two_eigen_cholesky.cpp example.
08-25¶
Fix some missing include files in
optimize.hpp
andset_union.hpp
(when compiling with MS Visual Studio 2015).Fix a warning in
atanh.hpp
(when compiling with MS Visual Studio 14).Fix a typo in the Reverse section of the
eigen_mat_inv.hpp
example.
07-17¶
Add documentation for only needing to compute a Column Subset of the sparsity pattern when computing a subset of a sparse Hessians. In addition, improve the corresponding example sparse_sub_hes.cpp .
07-14¶
Correct title in ForSparseHes (change Reverse to Forward).
06-30¶
Change the atomic_two_mat_mul.cpp
example so that on atomic object
works for matrices of any size.
(This has since been changed to the atomic_three_mat_mul.cpp example.)
06-29¶
Change the atomic_two examples so they do no longer use the
deprecated interfaces to
for_sparse_jac
, rev_sparse_jac
,
for_sparse_hes
, and rev_sparse_hes
.
06-27¶
Improve the atomic_two_eigen_mat_mul.hpp and atomic_two_eigen_mat_inv.hpp examples. Most importantly, one atomic object now works for matrices of any size.
Add the vector x , that contains the parameters in an atomic function call to the user following atomic functions: for_sparse_jac , rev_sparse_jac , for_sparse_hes , rev_sparse_hes . This enables one to pass parameter information to these functions; e.g., the dimensions of matrices that the function operates on.
06-25¶
Add more entries to the optimization wish_list .
06-10¶
Add a check_finite wish list item.
05-05¶
Add documentation for redirecting output using:ref:PrintFor@s in the
PrintFor
function.Change distributed version to build examples as debug instead of release version. (Was changed to release version while checking for compiler warnings; see
04-17
below).
04-17¶
Fix all some compiler warnings that occurred when compiling the examples with NDEBUG defined.
03-27¶
Fix a bug in the calculation of the atomic_two_eigen_mat_inv.hpp reverse example.
Use a very simple method (that over estimates variables) for calculating vy in the atomic_two_eigen_mat_inv.hpp forward example.
03-26¶
Implement and test the atomic_two_eigen_mat_inv.cpp reverse is implemented.
Fix a bug in the calculation of vy in the atomic_two_eigen_mat_inv.hpp forward example.
03-25¶
Start construction of the atomic_two_eigen_mat_inv.cpp example, currently only forward is implemented and tested.
More improvements to atomic_two_eigen_mat_mul.cpp example.
03-24¶
Fix build of
example/atomic.cpp
when eigen is not available (bug introduced when atomic_two_eigen_mat_mul.cpp was added).Extend atomic_two_eigen_mat_mul.cpp example to include for_sparse_jac , rev_sparse_jac , for_sparse_hes , rev_sparse_hes .
Fix a bug in the ForSparseHes routine.
Edit atomic_two_rev_sparse_hes documentation.
03-23¶
Fix bug in autotools file
example/atomic/makefile.am
(introduced on 03-22).Improve the atomic_two_eigen_mat_mul.cpp example and extend it to include reverse mode.
03-22¶
Start construction of the atomic_two_eigen_mat_mul.cpp example.
change
atomic_ode.cpp
tochkpoint_one_ode.cpp
andatomic_extended_ode.cpp
tochkpoint_one_extended_ode.cpp
.
03-21¶
Change the atomic_three_mat_mul.hpp class name from mat_mul
to atomic_mat_mul
. This example use of the name mat_mul
in the atomic_two_mat_mul.cpp
example / test.
(This has since been changed to the atomic_three_mat_mul.cpp example.)
03-20¶
Include the sub-directory name to the include guards in * .
hpp
files. For example,# ifndef CPPAD_UTILITY_VECTOR_HPP # define CPPAD_UTILITY_VECTOR_HPP
appears in the file
cppad/utility/vector.hpp
. This makes it easier to avoid conflicts when choosing addon names.Add the set_union utility and use it to simplify the atomic examples that use Vector of Sets sparsity patterns.
03-19¶
Move
atomic_two_mat_mul.cpp
toatomic_mat_mul_xam.cpp
(moved back on 03-21 .Move
atomic_matrix_mul.hpp
to atomic_three_mat_mul.hpp .
03-17¶
Add the
atomic_ode.cpp
and atomic_extended_ode.cpp
examples.
03-12¶
Move the example
reverse_any.cpp
to rev_checkpoint.cpp .Add the
chkpoint_one_mul_level.cpp
example.
03-05¶
The following atomic function examples were added
These examples are for a specific atomic operation.
In addition, the domain and range dimensions for these examples
are not one and not equal to each other:
atomic_two_forward.cpp
,
atomic_two_reverse.cpp
,
atomic_two_for_sparse_jac.cpp
,
atomic_two_rev_sparse_jac.cpp
,
atomic_two_for_sparse_hes.cpp
,
atomic_two_rev_sparse_hes.cpp
.
03-01¶
Improve documentation of implementation requirements for the atomic rev_sparse_jac .
Make some corrections to the atomic_two_for_sparse_hes documentation. and fix a bug in how CppAD used these functions.
02-29¶
Merged sparse into master branch. This makes the ForSparseHes routine available for use.
Changed the Global Options in the speed test main program to use one global variable with prototype
extern std::map<std::string, bool> global_option;
02-28¶
Fix a mistake in the old atomic
example/sparsity/sparsity.cpp
example.
This example has since been changed to
atomic_two_set_sparsity.cpp
.
02-27¶
The --with-sparse_set
and --with-sparse_set
options
were removed from the configure install procedure.
02-26¶
The condition that the operation sequence in f is Independent of the independent variables was added to the statement about the validity of the sparsity patterns; see x in ForSparseJac , RevSparseJac , and RevSparseHes .
02-25¶
The cmake command line argument cppad_sparse_list
has been removed (because it is so much better than the other option).
02-23¶
A new version of the
cppad_sparse_list
class (not part of user API) uses
reference counters to reduce the number of copies of sets that are equal.
This improved the speed of sparsity pattern computations that use
the Vector of Sets
representation.
For example, the results for the
cppad_sparse_hessian.cpp test compare as follows:
sparse_hessian_size = [ 100, 400, 900, 1600, 2500 ]
sparse_hessian_rate_old = [ 1480, 265.21, 93.33, 41.93, 0.86 ]
sparse_hessian_rate_new = [ 1328, 241.61, 92.99, 40.51, 3.80 ]
Note that the improvement is only for large problems. In fact, for large problems, preliminary testing indicates that the new vector of sets representation preforms better than the vector of boolean representation.
01-21¶
Fix a valgrind
warning about use of uninitialized memory
in the test test_more/chkpoint_one.cpp
(the problem was in the test).
01-20¶
Fix a
valgrind
warning about use of uninitialized memory when using the adouble base type. This required an optional base_hash function and the special adouble hash_code implementation.The
adouble
to_string functions required a special implementation; see adouble to_string .Add the to_string and hash_code examples to the
base_alloc.hpp
example.
01-18¶
Fix ambiguity between
CppAD::sin
andstd::sin
, and other standard math functions, when usingusing namespace std; using namespace CppAD;
This is OK for simple programs, but not generally recommended. See
double
version of base class definitions for Unary Standard Math for more details.Change Eigen array example eigen_array.cpp to use member function version of
sin
function (as per Eigen’s array class documentation).