\(\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}} }\)
2022¶
View page sourceRelease Notes for 2022¶
mm-dd¶
12-25¶
The column widths of some of the documentation tables were set to be equal instead of adjusting to best fit the columns. This has been fixed.
Fix two tables that were not converted to sphinx correctly. To be specific, the table below Matrix Dimension in atomic_three_mat_mul.hpp and atomic_two_eigen_mat_mul.hpp .
12-23¶
Add documentation for the binary operation Zero Special Cases . In addition fix a bug in these special cases when zero was multiplied by or divided by nan.
12-16¶
Finish conversion of CppAD documentation from omhelp to the sphinx xrst wrapper. The following is a link to the old documentation .
11-05¶
Fix a conversion error during the tests by extending the zdouble
constructor
to zdouble
( i ) where i is long
.
08-30¶
The optimize operations was not handeling comparison operators that only had parameters, with at least one dynamic parameter. This has been fixed.
07-16¶
Add the option to configure eigen using eigen_prefix
,
as well as with include_eigen
.
The eigen_prefix
option was removed on
2024-08-05 .
The include_eigen
options was removed on
2024-10-02 .
07-14¶
There was a mistake in the implementation of the explicit
AD
< Base > constructor. To be specific, the value was converted todouble
before being converted toAD
< Base > . This has been fixed and the ad_ctor documentation has been improved to note which result are always constant parameters.API Change : It was necessary (due to the fix above) to add the int constructor and double constructor to the base_require . (Defining a base class is an advanced topic and only for experts).
07-12¶
The CMake Command was not properly determining when posix threads could be used (when using a C compiler other than gcc). This suppressed the running of the corresponding examples; e.g., a11c_pthread.cpp .
07-10¶
Add the cmake_needs_dot_slash symbol to the cmake command line. This has since been removed; see 2023 for 06-01.
Change the test case in
speed/example/speed_program.cpp
because some compilers have gotten smarter and do not calculate values that are not used. This lead to an the repeat count overflowing and then an infinite loop. The speed_test and SpeedTest routines now check for an overflow of the repeat counter and abort.Suppress the Microsoft compiler divide by zero warning, C4723.
07-08¶
Change github actions: run on pushes to the master and stable branches, and run on all pull requests.
07-05¶
Merge in pull_155 branch.
This enabled the use of binary operators with Eigen matrices of
type AD
< Base > and type Base ;
see ScalarBinaryOpTraits
in cppad_eigen.hpp
.
06-23¶
Change x to u in the
to_csrc
operation and add specifications as the position of the independent dynamic parameters and variables in u .Add the jit_dynamic.cpp and jit_compile.cpp examples.
Remove some remaining uses of
CPPAD_TEST_VECTOR
.Deprecate use of the following symbols:
CPPAD_
packageVECTOR
for package equal toCPPAD
,STD
,BOOST
,EIGEN
.Add the cmake_defined_ok symbol to the cmake command line. This enables one to run cmake with a
CMakeCache.txt
file.
06-22¶
Modify the msys2 and Visual Studio install suggestions.
Split the JIT function type type _
forward_zero
intojit_
type for JIT Functions , andatomic_
type for Atomic Callbacks .Add the jit_atomic.cpp example.
The
CPPAD_TEST_VECTOR
macro was removed (it was deprecated on 2012-07-03).Remove the following symbols from the testvector documentation:
CPPAD_
packageVECTOR
for package equal toCPPAD
,STD
,BOOST
,EIGEN
.
06-21¶
Change the visual C++ JIT compile flag /Tc
to the flag /TC
,
so that the C source file need not follow directly after in the compile
command. This fixed a test failure when using that compiler.
06-20¶
JIT C source code generation, compilation, and linking were added using the following new features, examples, and speed tests:
to_csrc |
|
create_dll_lib |
|
link_dll_lib |
|
example_jit |
|
cppad_jit_det_minor.cpp |
The following improvements were made to existing features:
Fix a clang++ compiler warning in the file check_for_nan.hpp.
05-27¶
Add the theory, but not implementation, for the atomic linear ODE second order reverse mode; see atomic_four_lin_ode_reverse_2 .
05-26¶
The atomic linear ODE maximum step size was not being enforced during the reverse mode Simpson’s Rule integral approximation. This has been fixed.
Make extend_ode a separate function in the atomic linear ODE example.
05-20¶
Merge in the pull_144 branch. This fixed some problems with the windows visual studio build; see the corresponding pull request.
05-19¶
The atomic four
base_lin_ode
function was changed to base_solver . In addition, a maximum step size was added to this atomic linear ODE solver.Fix setting of debug and release flags in
test_more/debug_rel/CMakeLists.txt
.
05-17¶
The atomic_four_lin_ode_rev_depend.hpp example was added. In addition, remove the Under Construction headings from the atomic_four_lin_ode sections (it is ready for use).
05-16¶
The ident_zero_x argument was added to the atomic four Hessian sparsity callback. The previous version of this callback still works but is deprecated.
Add Var2Par set in the
cppad_eigen.hpp
std Definitions of the AD versions ofisinf
andisnan
.Change the atomic four example Hessian sparsity callbacks to use the ident_zero_x . In the special case of atomic_four_norm_sq.cpp , do not include ident_zero_x and mention that this version of the callback is deprecated.
05-15¶
Merge in the pull_140 branch. This extended CppAD base_limits and numeric_limits to include
infinity()
. In addition,cppad_eigen.hpp
addedisinf
andisnan
for AD types to the std namespace; see std Definitions .Fix a long standing bug in the for_hes_sparsity routine. For example, the function called
case_seven
intest_more/general/hes_sparsity.cpp/
tests a case where this bug occurred.Add the atomic_four_lin_ode_hes_sparsity.hpp example.
05-13¶
The code_gen_fun examples were not being built even when include_cppadcg was specified on the cmake command line. This has been fixed.
05-12¶
The cmake script cmake/compile_source_test.cmake
was not
working properly on Darwin systems which resulted in the following warning:
warning:
'tmpnam'
is deprecated:
…file_name
= tmpnam
( nullptr
);This has been fixed.
05-11¶
A mathematical Theory was added to the linear ODE Jacobian sparsity pattern example. In addition, the corresponding code was changed to match the theory. This may, or may not, have fixed some bugs in the previous version of this routine.
05-10¶
The ident_zero_x argument was added to the atomic four Jacobian sparsity callback. The previous version of this callback still works but is deprecated.
05-09¶
Add a theory section to the linear ODE for_type section. In addition more the linear ODE theory for forward and reverse mode to the corresponding forward and reverse sections.
Back out an incorrect change on 04-15 to the meaning of select_x and select_y in the atomic four Jacobian sparsity documentation.
Add the specification that the atomic four for_type callback will be called once for each atomic function call and before any other of the callbacks for the atomic function call.
05-07¶
Add the base2vec_ad.cpp example demonstrating that base2ad does not convert VecAD operations as might be expected. Add a link to this example in both the base2ad and VecAD documentation and a base2ad wish_list item about this.
05-06¶
There was a bug in combining the Discrete functions with the
base2ad operation.
To be specific, if a discrete function was used during the recording of
f and af = f . base2ad
() , the following assert
would happen during forward mode calculations using the af function:
error from unknown source
Error detected by false result for
index < List
(). size
()at line 325 in the file
discrete.hpp
This bug has been fixed.
04-21¶
Modify atomic_four_lin_ode_set.hpp and atomic_four_lin_ode_get.hpp to re-use sparsity patterns instead of creating a new one for every call. This makes use of set_row_major to speed up checking for equality of sparsity patterns.
In the atomic_four_lin_ode_implement files, change
assert
to CPPAD_ASSERT_UNKNOWN .
04-20¶
Add the
set_row_major ,
get_row_major ,
set_col_major ,
get_col_major ,
functions to the sparse_rc
template class.
04-19¶
Change the ODE solver in atomic_four_lin_ode from Runge45 to Rosen34 .
04-15¶
Add atomic_four_lin_ode an example of making the solution of an ODE an atomic operation. As with the other atomic four examples, the
AD
< Base > version of the derivative calculations a done using atomic operations.Add the Equality operator to the sparsity pattern template class.
03-29¶
Add the atomic_four_lin_ode example which is not yet complete.
03-26¶
Change y(nx)
to y(ny)
in
atomic_four_mat_mul_forward.cpp .
03-25¶
Fix atomic_four_mat_mul by changing it’s base class from
atomic_four<double>
toatomic_four
< Base > ; see atomic_four_mat_mul.hpp .Remove under construction warning from atomic_four_mat_mul .
Change
atomic_vector
to atomic_four_vector .
03-24¶
Fix atomic_four_vector by changing it’s base class
from atomic_four<double>
to atomic_four
< Base > .
Make some other similar corrections in atomic_four_vector.hpp .
03-23¶
Improve error detection and message when both cmake_build_type and cppad_debug_which are chosen during the install procedure.
02-21¶
Extend the json graph representation to include Atomic Four functions. For example, see json_atom4_op.cpp .
02-19¶
Extend the C++ graph representation to include atomic four atomic functions . For example, see graph_atom4_op.cpp .
02-18¶
Fixed the value of after [ i ] in the
print_graph_op documentation.
To be specific, - 2
was changed to - 1
.
02-17¶
Add identical_zero
to the possible
ad_type values in
the atomic four for_type
function.
See atomic_four_vector_for_type.hpp ,
atomic_four_mat_mul_for_type.hpp , and
atomic_four_mat_mul_identical_zero.cpp
for an examples using this feature.
02-16¶
Use the atomic_four_norm_sq.cpp overrides as examples for the virtual functions in the atomic_four base class.
02-13¶
The atomic_four_mat_mul example class was added.
The atomic_four_vector include path has changed to
#
include <cppad/example/atomic_four/vector.hpp>
02-12¶
Add the push_back and
output stream (see os ) operations
to the sparse_rc
template class.
02-11¶
The value of Libs:
in the cppad.pc
pkgconfig file
was not being set correctly for some cases. This has been fixed.
02-01¶
Fix a possible integer overflow in the to_string.cpp example (might cause the test to fail).
01-27¶
Convert atomic_four_forward.cpp from an atomic_three to an atomic_four example.
01-25¶
Convert atomic_four_dynamic.cpp from an atomic_three to an atomic_four example.
01-23¶
Add atomic_four , a simpler interface to atomic functions. This has the optional call_id argument which can be used to attach extra information to an atomic function call.
The atomic_four_vector is a good example that uses call_id to specify which element by element operator is being called; see call_id .
Remove element-by-element atomic operations from wish_list (completed by the atomic_vector class).
01-19¶
Edit wish_list cppad_lib Requirement item. Add an Atomic Functions item to the optimization wish list.
01-15¶
Fix some conversion warnings generated by the clang compiler for the atomic_four_vector example.
Correct the order of p, q in function calls in atomic_four_vector_forward_op.hpp .
01-06¶
Fix the
[]
operator using CppAD vector iterators . In addition it was extended to includesize_t
indices.Add reverse mode to the atomic_four_vector , mul, div, operators and fix some warning used
size_t
iterator indices.
01-04¶
Add the neg operator to atomic_four_vector .
Add reverse mode to the atomic_vector, add, sub, and neg operators.
01-01¶
The example/atomic_three/vector_op.cpp
example
(see atomic_four_vector ) was split into multiple files and moved into the
example/atomic_vector
directory.