\(\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}} }\)
2013¶
View page sourceRelease Notes for 2013¶
mm-dd¶
12-29¶
The include file cppad_eigen.hpp now automatically includes
cppad.hpp
.There was a problem with this automation when
eigen
was used for the cppad testvector . This has been fixed.There was a problem with deprecated configure (created when optional implicit constructor from any type was added). This has been fixed by adding the
--with-implicit_ctor
option (later removed on 2017-02-10 .)
12-27¶
The constructor from an arbitrary type to AD
< Base > was
implicit, but there was no specification to this effect.
The caused problems when using CppAD with
eigen 3.2 (scheduled to be fixed in 3.3).
The default for this constructor has been changed to be
explicit .
In addition, other
implicit constructors
are now listed in the documentation.
If you get a compiler error on an constructor / assignment of the form
AD
< Base >x
= y
(that used to work) try changing the constructor call to
AD
< Base >( y )
A deprecated alternative is to make this constructor implicit using the
cmake cppad_deprecated
option during the install procedure.
12-26¶
Document fact that monthly versions of the CppAD compressed tar file last till the end of the year. This is no longer the case; see 05-20 in whats new for 2018.
12-24¶
The interface to eigen defined a function
NumTraits< CppAD::AD<
Base > >::dummy_epsilon
()
that should have been named dummy_precision()
.
This has been fixed.
11-27¶
11-13¶
It used to be that one had to define the std::set
version of
atomic_two_rev_sparse_jac for each atomic function that was
part of an ADFun object that was optimized .
Now the current
atomic_sparsity setting is used
to determine if the bool
or std::set
version of
rev_sparse_jac
is used by the optimization process.
11-12¶
Error detection and reporting (when NDEBUG
is not defined)
has been added for the following case:
Using optimize
with atomic_two functions that have not defined
rev_sparse_jac .
10-29¶
The optimization now handles nested conditional expressions. For example, give the code
x = CondExpLt(left_x, right_x, true_x, false_x)
y = CondExpGt(left_y, right_y, true_y, false_y)
z = CondExpEq(left_z, right_z, x, y)
only two of the conditional expressions will be evaluated
(one will be skipped depending on the result of left_z == right_z
).
For more details, see optimize_nest_conditional.cpp .
10-23¶
Fix a bug in the optimization of calls to atomic functions. This bug existed before recent change to optimizing conditional expressions. This required adding the dependency argument to the reverse Jacobian sparsity pattern calculation.
Fix the deprecated autotools install (see configure ) which was broken by the changes on 10-22. To be specific, the example for number_skip was not being included.
10-22¶
Add optimization of conditional expressions; see CondExp .
Add a phantom argument at the beginning of the operations sequence; size_op_arg and fun_property.cpp . (This helps with the optimization mentioned above.)
Add the function number_skip to measure how much optimization of the conditional expressions there is.
10-16¶
10-15¶
The documentation for the class vectorBool was improved.
10-14¶
The script get_adolc.sh was added
(for downloading and installing
ADOL-C) in the
build
directory.
Note that this local install of Adolc requires ColPack; see
get_colpack.sh .
In addition, the requirement that ColPack and Adolc are installed
with the same prefix was added.
10-13¶
Make sure that all of the
preprocessor symbols
that are not part of the CppAD API, are undefined when the
<cppad/cppad.hpp>
file concludes.
10-12¶
Change
get_eigen.sh
so that it will reuse install information when it is present. In addition document reuse forget_eigen.sh
, get_ipopt.sh , and get_sacado.sh .Fix following
g++
error on OSX system:error: no match for 'operator|=' (operand types are 'std::vector<bool>::reference {aka std::_Bit_reference}' and 'bool') Check[i * n + j] |= F2[i * n + k] & r[ k * n + j]; ^
09-20¶
Add lines for atomic_two function documentation to both the definition and use of each operation. This required adding sub-headings in the example usages corresponding to the function documentation sections. For example; see atomic forward examples.
Improve the documentation for atomic_two_clear and remove its use from the atomic_base examples (because it is not needed).
09-19¶
Add links from the atomic_two functions documentation to the corresponding examples. This required adding headings in the examples that correspond to the function documentation sections. For example; see atomic forward examples.
09-18¶
A segmentation fault would occur if an ADFun object used an atomic function that had been deleted. This has been fixed so that when
NDEBUG
is not defined, an error message is generated.A mistake in the documentation for Memory and Parallel Mode has been fixed. This corresponds to the change in the specifications for CppAD::vector::resize made on 2012-07-30
There was a bug during the checking for nan during Reverse mode. This has been fixed.
It appears, from inspecting the Ipopt source file
Ipopt/src/Algorithm/IpIpoptAlg.cpp
that the optionsb
toyes
suppress the printing of the Ipopt banner. The Ipopt examples and tests have been changed to use this option (although it is not in the ipopt documentation).Fix the a typo in the documentation for
ipopt_solve
Integer options (Numeric
was changed toInteger
).
09-07¶
There was a bug in the cumulative sum operator
(which is used by optimize )
for Forward orders greater than zero.
This was detected by the checkpoint tests
when optimize
was used to make the
checkpoint functions faster.
The bug has been fixed and the checkpoint functions now use
optimize (and hence should be faster).
08-12¶
The ability to turn on and off checking for nan in Forward mode results has been added; see check_for_nan .
Use this option to remove the need to handel
nan
as a special case in checkpoint functions that Atomic Functions in within another function is optimized.Check reverse mode results when check_for_nan is true. (It used to be the case that only forward results were checked for
nan
.)
08-11¶
If an atomic function had arguments that did not affect
the final dependent variables in f ,
f.optimize() would fail.
This has been fixed.
In addition, documentation about using optimize
with Atomic Functions has been added.
08-06¶
Fix a case where the test test_more/num_limits.cpp
failed because
double inf = std::numeric_limits<double>::infinity();
double check = std::complex<double>(inf) / std::complex<float>(1.)
can result in the imaginary part of check
being - nan
.
07-26¶
Allow for use of const::string&
as a possible type for
name in the atomic_base
constructor.
05-28¶
Remove ok return flag from checkpoint algo and checkpoint atom_fun .
05-21¶
Deprecate the atomic_one interface and replace it by the atomic_two and checkpoint interfaces.
There was a problem with the cmake command if the cppad_cxx_flags was not specified. This has been fixed.
05-17¶
Add the transpose option to ForSparseJac .
Add the transpose option to RevSparseHes .
05-15¶
Change RevSparseJac parameter names to be closer to the ForSparseJac names so the difference is clearer.
05-14¶
The checkpoint class has been added. This is a much easier way to do checkpointing than the old checkpoint example. The old checkpointing example is now the rev_checkpoint.cpp example.
Fix bug in RevSparseJac for case when q was not equal to m (range dimension) and sparsity pattern was a vector of
bool
.Add the transpose option to RevSparseJac .
05-12¶
The sparse hessian example in old_reciprocal.cpp was not being run. This has been fixed.
05-11¶
The atomic_one examples
names were all changed to begin with user
.
05-04¶
The option to compute Multiple Orders was added. The old_usead_2.cpp example shows the need for this. The problem is that a new atomic function interface needs to be designed with checkpointing as a particular application. Multiple order forward mode is the first step in this direction.
04-28¶
The scripts
get_eigen.sh
and get_sacado.sh were added. If you are using Unix, and you do not have Eigen or Sacado installed on your system, you can use the corresponding script to download and install a local copy for use when testing CppAD.The code
std::cout <<
X , would generate a compile error when X was an Eigen matrix withCppAD::AD<
Base > elements. This has been fixed.
04-27¶
There was a problem using the output operator <<
with
and eigen matrix of AD
elements.
This has been fixed using a template partial specialization of
template <class Scalar, bool IsInteger>
struct significant_decimals_default_impl
because the original template requires definition of a implicit conversion
from the scalar type to an int
and this is dangerous for AD types
(note that Integer is used for explicit conversions).
04-26¶
The example old_usead_2.cpp was completed. This is a more realistic, but also more complicated, example of using AD to computed derivatives inside an atomic function.
The script get_fadbad.sh has been added. If you are using Unix, and you do not have FADBAD installed on your system, you can use this script to download and install a local copy for use when testing CppAD.