Prev Next whats_new_22

@(@\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}} }@)@ This is cppad-20221105 documentation. Here is a link to its current documentation .
Changes and Additions to CppAD During 2022

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 .

07-14
  1. There was a mistake in the implementation of the explicit AD<Base> constructor. To be specific, the value was converted to double before being converted to AD<Base> . This has been fixed and the ad_ctor documentation has been improved to note which result are always constant parameters.
  2. 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
  1. Add the cmake_needs_dot_slash symbol to the cmake command line.
  2. 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.
  3. 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
  1. Change x to u in the to_csrc operation and add specifications as the position of the independent dynamic parameters and variables in u .
  2. Add the jit_dynamic.cpp and jit_compile.cpp examples.
  3. Remove some remaining uses of CPPAD_TEST_VECTOR.
  4. Deprecate use of the following symbols: CPPAD_packageVECTOR for package equal to CPPAD, STD, BOOST, EIGEN.
  5. Add the cmake_defined_ok symbol to the cmake command line. This enables one to run cmake with a CMakeCache.txt file.


06-22
  1. Modify the msys2 and visual studio install suggestions.
  2. Split the JIT function type type_forward_zero into jit_type for JIT functions , and atomic_type for atomic callbacks .
  3. Add the jit_atomic.cpp example.
  4. The CPPAD_TEST_VECTOR macro was removed (it was deprecated on 2012-07-03).
  5. Remove the following symbols from the testvector documentation: CPPAD_packageVECTOR for package equal to CPPAD, 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 C Source Code Corresponding to an ADFun Object
create_dll_lib Create a Dynamic Link Library
link_dll_lib Link a Dynamic Link Library
example_jit JIT Creation, Compilation, and Linking of C Source Code
cppad_jit_det_minor.cpp cppad_jit Speed: Gradient of Determinant by Minor Expansion
The following improvements were made to existing features:
  1. 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
  1. The atomic linear ODE maximum step size was not being enforced during the reverse mode Simpson's rule integral approximation. This has been fixed.
  2. 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
  1. 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.
  2. 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
  1. 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.
  2. Add Var2Par set in the cppad_eigen.hpp std Definitions of the AD versions of isinf and isnan.
  3. 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
  1. Merge in the pull_140 branch. This extended CppAD base_limits and numeric_limits to include infinity(). In addition, cppad_eigen.hpp added isinf and isnan for AD types to the std namespace; see std Definitions .
  2. Fix a long standing bug in the for_hes_sparsity routine. For example, the function called case_seven in test_more/general/hes_sparsity.cpp/ tests a case where this bug occurred.
  3. 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
  1. 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.
  2. Back out an incorrect change on 04-15 to the meaning of select_x and select_y in the atomic four Jacobian sparsity documentation.
  3. 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
  1. 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.
  2. 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
  1. 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.
  2. 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
  1. Fix atomic_four_mat_mul by changing it's base class from atomic_four<double> to atomic_four<Base> ; see atomic_four_mat_mul.hpp .
  2. Remove under construction warning from atomic_four_mat_mul .
  3. 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
  1. The atomic_four_mat_mul example class was added.
  2. 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
  1. 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.
  2. 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 .
  3. 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
  1. Fix some conversion warnings generated by the clang compiler for the atomic_four_vector example.
  2. Correct the order of p, q in function calls in atomic_four_vector_forward_op.hpp .


01-06
  1. Fix the [] operator using CppAD vector iterators . In addition it was extended to include size_t indices.
  2. Add reverse mode to the atomic_four_vector , mul, div, operators and fix some warning used size_t iterator indices.


01-04
  1. Add the neg operator to atomic_four_vector .
  2. 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.
Input File: omh/appendix/whats_new/22.omh