2024

View page source

Release Notes for 2024

mm-dd

12-14

Add a separate true_or_false paragraph to describe true_or_false in the cmake command.

12-09

An option to build a local copy of the user or developer documentation was added to the install procedure; see include_doc . This also affects the cmake_install_docdir option.

11-23

In the atomic_four_norm_sq.cpp example, remove dead code in its forward routine. To be specific, remove:

// Assume we are not using forward mode with order > 1
assert( ! ok );
return ok;

Also in its reverse routine, improve the comment about the relation between G and H; to be specific:

// H( {x_j^k} ) = G[ F( {x_j^k} ), {x_j^k} ]

11-19

Fix the –with-clang and –with-verbose-make options did not have any effect in the configure script. This has been fixed.

11-16

The for_hes_sparsity and ForSparseHes routines did not handle the cumulative summation operators properly. These operators sum more than two variables or dynamic parameters at a time and may be created during ADFun optimization .

11-13

The for_hes_sparsity and ForSparseHes routines did not handle the VecAD load and store operations properly. This has been fixed.

11-12

Remove extra unintended white space below Syntax headings that was introduced when the CppAD documentation was converted from omhelp to sphinx; see 2022-12-16 . For example:

Old Syntax

atomic_user a_square_root

a_square_root ( au , ay )

New Syntax
atomic_user a_square_root
a_square_root ( au , ay )

10-04

The jit_compile.cpp example line was missing CPPAD_C_COMPILER_CMD in the line (this has been fixed):

const char* cmd = CPPAD_C_COMPILER_CMD " --version > temp";

10-02

  1. The include_eigen argument was removed from the cmake command because Eigen is available using most package managers; see Eigen .

  2. Remove boost_dir and eigen_dir from configure (they no longer have any effect).

09-28

Fix some conversion warnings between size_t , int , and short in the speed_adolc examples / tests.

09-24

Convert the bitwise operators & and | , when used with bool operands, to the logical operations && and ||; see bin/no_bitwise.sh (this fixes many warnings). In addition, fix some other warnings and put some exceptions on bin/check_all.sh for some warnings that seem to be incorrect.

09-13

  1. Make all of the get_optional.sh routines now works on MacOS with homebrew, see MacOS with Homebrew . Do not test colpack_prefix on MacOS (there seems to be a problem with the ColPack install on that system).

  2. The –with-verbose-make option was added to the configure script. In addition, configure was mistakenly requiring that ColPack was installed; see colpack_prefix. This has been fixed.

09-11

  1. The Source Directory was changed from external/Ipopt-version to external/Ipopt,git .

  2. Advance get_ipopt Version from 3.13.2 to 3.14.16.

09-09

  1. The Visual Studio instructions were improved.

  2. CppAD was added before isnan , see the discussion of std::isnan .

08-10

There was a problem with Iterators that caused the sort test in cppad_vector.cpp to fail when using Visual C++ on Windows or Xcode C++ on MacOS. To be specific, this was the case where the iterator needs to be const , even though the value it points to is not const . This has been fixed.

08-09

  1. Suppress the testing of sort using CppAD vector iterators on MacOs with the Xcode C++ compiler; search for CPPAD_CXX_IS_XCODE in cppad_vector.cpp .

  2. The jit_compile.cpp example was hanging on some Windows systems because they do not support writing to the``nul`` device. This has been fixed by writing to temporary files.

08-08

Add the dos_build.bat install example.

08-05

The cmake -D eigen_prefix option was removed and PKG_CONFIG_PATH requirements were added for include_eigen (and the other packages).

08-04

Standard threading was added to the multi-threading examples; see a11c_sthread.cpp , sthread_get_started.cpp , sthread_get_started.cpp , team_sthread.cpp .

05-12

A bug in the use of base types that are not ordered (e.g., complex ) was introduced on 08-10 of 2023, when the val_graph branch was merged in the master branch. This has been fixed by requiring such base types to define the ordering compare operations as resulting in an error; see Not Ordered .

04-25

The configure script was changed to detect when the eigen package is requested and the compiler is not c++14 or greater. The configure and cmake scripts were changed to detect when the sacado package is requested and the compiler is not c++17 or greater.

04-20

The # include commands were missing at the top of some of the valvector examples. This has been fixed; e.g., see ref:valvector_get_started-name .

04-04

The file example/multi_thread/bthread/get_started.cpp had an error when CPPAD_TESTVECTOR was std::vector (The elements of a standard vectors of bool may a single bits instead of a boolean value). The has been fixed.

04-03

  1. Add the valvector_llsq_obj.cpp example.

  2. Add the valvector_sum.cpp member function.

  3. Fix the titles Example and Test of Summing a valvector and valvector_ad_join.cpp .

  4. Add the following to valvector_base_require.cpp :

       x   = valvector( {0.0, 0.0} );
       ok &= CppAD::IdenticalZero(x);
    

03-28

Change the get_eigen.sh version from 3.3.7 to the master branch on 2024-03-24; see issue 200 . Note that the new version of eigen requires c++14 or higher.

03-23

  1. Change the upper case one letter variable names in the interp_onetape.cpp example; to be specific, X -> ax and Y -> ay , A -> ax_grid , F -> af_grid , I -> ay_linear .

  2. Add the atomic_four_bilinear.cpp example.

03-19

Fix broken links found using --external_links option to the xrst documentation generator.

03-16

The ADFun constructor was changed to use ax instead of x , and ay instead of y , for AD values. In addition, the Sequence Constructor discussion was improved.

03-15

  1. The user’s choice of in_parallel routine was not being called properly in some cases. This has been fixed. This would cause CppAD to not properly report some usage errors during parallel execution.

  2. Fixing the problem above exposed the fact that, when mixing debug and release builds, CheckSimpleVector must be defined. This has also been fixed.

  3. The discussion, in the multi-threading get_started examples, about the ADFun Constructor was improved.

  4. The parallel_ad routine has been improved so that it initializes CheckSimpleVector for more cases; see CheckSimpleVector .

03-13

The bthread_get_started.cpp and pthread_get_started.cpp examples were made simpler by directly using the threading system instead of going through the team_thread.hpp interface.

03-12

The openmp_get_started.cpp example was made simpler by directly using openmp instead of going through the team_thread.hpp interface.

03-11

The multi-threading simple_ad examples where changed to get_started ; see openmp_get_started.cpp , pthread_get_started.cpp , bthread_get_started.cpp .

03-09

The number of CheckSimpleVector cases called by parallel_ad<Base>() was increased to include the following:

CheckSimpleVector< bool, CppAD::vectorBool >()
CheckSimpleVector< size_t, CppAD::vector<size_t> >()
CheckSimpleVector< Base, std::vector<Base> >()
CheckSimpleVector< AD<Base>, std::vector< AD<Base> > >()

In addition, the CheckSimpleVector Parallel Mode documentation and error message has been improved.

03-06

  1. The to_csrc parameters nu and u were denoted by nx and x in the generated source code. This has been changed an now the generated source uses nu and u for these parameters.

  2. The to_csrc documentation was changed to use atomic_name for the name of the atomic (instead of reusing function_name which has another purpose). In addition, jit_atomic.cpp was also changed to use atomic_name .

03-02

Add the valvector_ad_split and valvector_ad_join examples.

03-01

Fix bug in the optimizer val_graph option. To be more specific, the following assert could occur during the optimization:

vector: index greater than or equal vector size

02-29

Add the Ordered Operators to the valvector class. This is needed to optimize tapes where the base type is valvector.

02-28

Add the valvector example base class.

02-27

The omhelp package is not longer used by CppAD ( see 12-16 ) so the links to its documentation were removed. In addition, the instructions for Building Documentation were out of date and have been fixed.

02-26

  1. Correct some errors in the numeric type Operators table. Also the table under Purpose on the conditional expression documentation. (These were errors in the automatic conversion from omhelp to sphinx.)

  2. The <= operator was removed from the base type requirements Bool Operators .

02-23

Include more of the example drivers in the documentation; see example_driver . In addition, remove unnecessary includes for iostream and cassert from these drivers.

02-22

  1. The shebang in the configure script was changed from #! /bin/bash to #! /usr/bin/env bash . This should make it work on more systems.

  2. The configure script eigen_dir , fadbad_dir , and sacado_dir directories were not being passed to the cmake . This has been fixed.

  3. The configure --help option for using boost vectors was corrected from --with-bostvector to --with-boostvector .

02-21

For each year, change the web page name whats_new_yy to yyyy where yy and yyyy identify the year. In addition, change the title for these pages to Release Notes for the corresponding year. This breaks old links to these web pages. For example, the old link to the heading directly below was:

https://cppad.readthedocs.io/latest/whats_new_24.html#whats-new-24-mm-dd-02-14

Its new link, which is much shorter, is:

https://cppad.readthedocs.io/latest/2024.html#mm-dd-02-14

02-14

The optimize routine could crash when checking if an operator with the same hash code was a match with the argument order switched (for add and multiply). This problem occurred during speed.py , which is an example and test of dismod_at, which uses CppAD. This crash required a very special (and improbable) case that we were unable to reproduce in an automated regression test; see comment that starts with 2024-02-14 in include/cppad/local/optimize/match_op.hpp .

01-16

fix dll linking of jit code by changing cppad_c_compiler_path to cppad_c_compiler_cmd (spaces in the path were making commands fail).

01-12

  1. There were some problems using the cmake C compiler for the examples and tests of jit compilation, so that has been backed out for now.

  2. There was a mistake in detecting if size_t is the same as cppad_tape_addr_type. This could cause a compile error in op_hash_table.hpp and has been fixed.

01-11

Use the cppad_c_compiler_path detected by cmake to run the C compiler for the Clang and GNU cases; see the create_dll_lib` defaults for compile and link .

01-10

  1. Fix some problems with the install on 32 bit systems. To be specific, the thread_alloc memory allocator was not properly aligning doubles.

  2. Suppress the test of the svec_setvec class. (The class has a bug and is not currently being used.)

01-08

On some systems unsigned int and size_t are the same type and this would cause a compile error in vector.hpp and vector_bool.hpp . This has been fixed.

01-07

The forward_two Syntax was corrected. To be specific, Forward (1, x2 ) was changed to Forward (2, x2 ) . In addition, some other minor improvements were made to the forward_two documentation page.

01-03

  1. The change on 12-24 2023, when cppad_debug_and_release was implemented, was not done properly and might cause a mistaken assertion. This has been fixed.

  2. Each file_name in the latest documentation was moved (this is important if you have links to previous web pages):

    Old Location

    https://cppad.readthedocs.io/file_name

    New Location

    https://cppad.readthedocs.io/latest/file_name

01-02

  1. The compare_change.cpp example/test would sometimes fail when cppad_debug_which was debug_even or debug_odd (because it was compiled for debugging and including a release version of a utility). This has been fixed by making this example/test a separate program.

  2. The vectorBool constructor would generate a warning when called with an int for the size of the vector (on some compilers). This has been fixed.