2024

View page source

Release Notes for 2024

mm-dd

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.