Changes and Additions to CppAD During 2007
Keywords: changes additions to cppad during 2007 introduction 12-29 12-25 12-21 12-08 12-05 12-04 12-03 12-02 11-29 11-23 11-18 11-06 11-05 11-04 11-03 11-02 11-01 10-30 10-27 10-23 10-22 10-16 10-13 10-05 10-02 09-06 08-09 08-07 07-30 07-29 07-28 07-26 07-25 07-23 07-22 07-21 07-20 07-19 07-18 07-14 07-13 06-22 06-20 06-14 05-26 05-25 05-24 05-22 05-08 05-05 04-19 04-17 04-14 04-11 04-10 04-07 04-06 04-05 03-31 03-30 03-29 03-20 03-15 03-14 03-13 03-09 03-28 02-27 02-22 02-17 02-16 02-15 02-06 02-04 02-03 02-02 02-01 01-29

| Prev | Next |  |  |  |  |  | whats_new_07 |

Changes and Additions to CppAD During 2007
Introduction
This section contains a list of the changes to CppAD during 2007 (in reverse order by date). The purpose of this section is to assist you in learning about changes between various versions of CppAD.
12-29
License conversions missed the copyright message at the top in the following special cases: `makefile.am`, `makefile.in`, and `omh/license.omh`.
12-25
The install instructions have been improved.
12-21
The --with-Documentation option on the `configure` command line caused an error on some systems because it attempted to copy to many files. This has been fixed by copying the directory instead of the individual files.
12-08
By mistake, the documentation License statement for the GPL distribution was the same as for the CPL distribution. This has been fixed.
12-05
Change the name of the spec file from `cppad-yyyymmdd.spec` to `cppad.spec`.
12-04
Add the capability for the RPM spec file to use a different prefix directory.
12-03
This is the first version with the rpm spec file `cppad.spec`.
12-02
Add the `DESTDIR=directory` option on the make install command line.
11-29
The unary_standard_math function `sqrt` did not link properly when `Base` was `AD<double>`. This has been fixed.
11-23
The routines `nan` and `isnan` were failing for some systems because they use `nan` and or `isnan` as preprocessor symbols. This has been fixed; see macros . In addition, the example and test nan.cpp has been added.
11-18
Speed tests for `tape_values` branch were not better than trunk, so the good parts of that branch (but not all) were merged into the trunk. `
` The interface specifications for base type requirements have been changed so that CppAD would compile with `gcc 4.1.1` (which requires more definitions before use in template functions). This changed of requirements is demonstrated by the base_complex.hpp and base_adolc.hpp examples. `
` The problem with newer C++ compilers requiring more definitions before use also required the user to know about `float` and `double` definitions for the standard math functions in the CppAD namespace; see base_std_math . `
` The `example/test_one.sh` and `test_more/test_one.sh` scripts were modified so that one only need specify the test file name (does not also need the test routine name). Some of the test routine declarations were changed from `name()` to `name(void)` to make this possible. `
` The program `test_more/test_more` was changed to always report the memory leak test results (same as `example/example`). `
` The PrintFor function was putting an unused variable in the tape. This has been fixed.
11-06
Added the `-DRAD_EQ_ALIAS` compiler flag to the Sacado speed tests . In addition, compiler flag documentation was included for Sacado and all the other speed tests.
11-05
MS project files have been added for running the cppad and double speed tests.
11-04
The `cppad/config.h` file was not compatible with the Windows install procedure and the Windows project's could not find a certain include file. This has been fixed. `
` The unix install procedure has been modified so that the one configure flag `--with-Speed` builds all the possible executables related to the speed testing.
11-03
Improve the speed_main documentation and output (as well as the title for other sections under speed ). `
` The subversion copy of the configure script was not executable. This has been fixed.
11-02
The instructions for downloading the current version using subversion have changed. The user should now directly edit the file `

         trunk/configure

` in order to set the correct date for the installation and to build the corresponding documentation. `
` The speed section has been slightly reorganized (the main program and utilities have been separated). `
` Add speed_double for testing the speed of evaluating functions in `double` as apposed to gradients using AD types.
11-01
The instructions for downloading the current version using subversion have changed. The user must now execute the command `

         ./build.sh version

` in order to set the correct version number for her (or his) installation. `
` Add the return status for all the correctness tests to the documentation; see `make test`.
10-30
The download instructions did not update current version number and this broke the links to the current tarballs. This has been fixed. `
` The documentation for det_by_minor and det_by_lu has been improved. The order of the elements in det_of_minor has been corrected (they were transposed but this did not really matter because determinants of transposes are equal). `
` The makefiles in the distribution have been changed so that one can run configure from a directory other than the distribution directory.
10-27
A subversion method for downloading CppAD has been added. `
` The installation was broken on some systems because the configure command tried to run the `autoconf` and `automake` programs. This has been fixed by adding `AM_MAINTAINER_MODE` to the `autoconf` input file. `
` Extend the subversion methods to include a full installation and old versions.
10-23
The cxx_flags environment variable has been changed from `CPP_ERROR_WARN` to `CXX_FLAGS`. `
` The command `configure --help` now prints a description of the environment variables `ADOLC_DIR`, `FADBAD_DIR`, `SACADO_DIR`, `BOOST_DIR`, and `CXX_FLAGS`. In addition, if the environment variables `POSTFIX_DIR` or `CPP_ERROR_WARN` are used, an message is printed saying that are not longer valid.
10-22
The correctness checks and speed test wrappers were moved from the individual package directories to speed_main . This way they do not have to be reproduced for each package. This makes it easier to add a new package, but it requires the prototype for `compute_test_name` to be the same for all packages. `
` The Sacado package was added to the list of speed tests. In addition, the discussion about how to run each of the speed tests was corrected to include the `seed` argument. `
` The `postfix_dir` option was removed on 2006-12-05 but it was not removed from the configure documentation. This has been fixed. `
` The routine CheckSimpleVector was changed. It used to require conversion of the form `
Scalar(i)
` where `i` was `0` or `1`. This does not work with when `Scalar` is `Sacado::Tay::Taylor<double>`. This requirement has been changed (see restrictions ) to support of `
x = i
` where `x` has type `Scalar` and `i` has type `int`. `
` Fix include directives in speed_fadbad programs `det_lu`, `det_minor`, and `poly`, to use `FADBAD++` instead of `Fadbad++` directory. `
` Add `ADOLC_DIR`, `FADBAD_DIR`, `SACADO_DIR`, and `BOOST_DIR` to the configure help string.
10-16
Add `seed` argument and improve speed_main documentation.
10-13
Fix the title in adolc_det_lu.cpp . Add the package name to each test case result printed by speed_main .
10-05
Added and example using complex calculations for a function that is not complex differentiable `not_complex_ad.cpp`. (This example has been removed; see complex FAQ .)
10-02
Extend the pow function to work for any case where one argument is `AD<Base>` and the other is `double` (as do the binary operators).
09-06
If the method.step function returned `nan` (not a number), it was possible for OdeErrControl to drop into an infinite loop. This has been fixed.
08-09
Let user detect and handel the case where an ODE initial vector `xi` contains not a number `nan` (see Runge45 , Rosen34 , and OdeErrControl ). `
` Use the `||` operation instead of `|` operator in the `nan` function (The Ginac library seems to use an alias for the type `bool` and does not have `|` defined for this alias). `
` The file `test_more/ode_err_control.cpp` was using the wrong include file name since the change on 08/07. This has been fixed.
08-07
Sometimes an ODE solver takes to large a step and this results in invalid values for the variables being integrated. The ODE solvers Runge45 and Rosen34 have been modified to abort and return nan when it is returned by the differential equation evaluation. The solver OdeErrControl have been modified to try smaller steps when this happens. `
` Fix an Sequence Constructor referenced to `Dependent` in documentation (was using the FunDeprecated one argument syntax). `
` Add comment about mixing debug and non-debug versions of CppAD in TrackDelVec error message.
07-30 `
CppADCreateBinaryBool` and `CppADCreateUnaryBool` have been replaced by `CPPAD_BOOL_BINARY` and `CPPAD_BOOL_UNARY` respectively. In addition, the wish_list item for conversion of all preprocessor macros to upper case been completed and removed.
07-29
The preprocessor macros `CppADUsageError` and `CppADUnknownError` have been replaced by `CPPAD_ASSERT_KNOWN` and `CPPAD_ASSERT_UNKNOWN` respectively. The meaning for these macros has been included in the cppad_assert section. In addition, the `known` argument to ErrorHandler was wrong for the unknown case. `
` The wish_list item for conversion of all preprocessor macros to upper case has been changes (to an item that was previous missing).
07-28
The preprocessor macro `CPPAD_DISCRETE_FUNCTIOIN` was defined as a replacement for `CppADCreateDiscrete` which has been deprecated.
07-26
Merge in changes made in `branches/test_vector`.
07-26
Change all occurrences of `CppADvector`, in the files `test_more/*.cpp` and `speed/*/*.cpp` , where changed to `CPPAD_TEST_VECTOR`. All occurrences of the `CppADvector` in the documentation were edited to reflect that fact that it has been deprecated. The documentation index and search for deprecated items has been improved.
07-25
Deprecate the preprocessor symbol `CppADvector` and start changing it to CPPAD_TEST_VECTOR . `
` Change all occurrences of `CppADvector`, in the `example/*.cpp` files, to `CPPAD_TEST_VECTOR`.
07-23
The TrackNewDel macros `CppADTrackNewVec`, `CppADTrackDelVec`, and `CppADTrackExtend` have been deprecated. The new macros names to use are `CPPAD_TRACK_NEW_VEC`, `CPPAD_TRACK_DEL_VEC`, and `CPPAD_TRACK_EXTEND` respectively. This item has been removed from the software guidelines section of the wish list. `
` The member variable software guideline wish list item has be brought up to date.
07-22
Minor improvements to the mul_level_adolc_ode.cpp example.
07-21

1. The `openmp/run.sh` example programs `example_a11c.cpp`, `openmp_newton_example.cpp`, and `sum_i_inv.cpp` have been changed so that they run on more systems (are C++ standard compliant).
2. base_require : The `IdenticalEqual` function, in the base_require specification, was changed to `IdenticalEqualPar` (note the API warning in the `Base` requirement specifications).
3. Implementation of the base requirements for complex types were moved into the base_complex.hpp example.

07-20
The download for CppAD was still broken. It turned out that the copyright message was missing from the file base_adolc.hpp and this stopped the creation of the download files. This has been fixed. In addition, the automated testing procedure has been modified so that missing copyright messages and test program failures will be more obvious in the test log.
07-19
The download for CppAD has been broken since the example `mul_level_adolc_ode.cpp` was added because the `example/example` program was failing. This has been fixed.
07-18
A realistic example using Adolc with CppAD mul_level_adolc_ode.cpp was added. The documentation for TrackNewDel was improved.
07-14
Add a discussion at the beginning of mul_level_ode.cpp example (and improve the notation used in the example).
07-13
Separate the include file base_adolc.hpp from the mul_level_adolc.cpp example so that it can be used by other examples.
06-22
Add mul_level_adolc.cpp , an example that demonstrates using `adouble` and for the Base type. `
` The get_started.cpp example did not build when the `--with-Introduction` and `BOOST_DIR` options were included on the configure command line. In fact, some of the speed tests also had compilation errors when `BOOST_DIR` was include in the configure command. This has been fixed. `
` There was a namespace reference missing in the files that could have caused compilation errors in the files `speed/cppad/det_minor.cpp` and `speed/cppad/det_lu.cpp`. This has been fixed.
06-20
The MS project `test_more/test_more.vcproj` would not build because the file `test_more/fun_check.cpp` was missing; this has been fixed. In addition, fix warnings generated by the MS compiler when compiling the `test_more/test_more.cpp` file. `
` Add a section defining the Base type requirements . Remove the `Base` type restrictions from the Faq . Make all the prototype for the default Base types agree with the specifications in the Base type requirements. `
` Fix the description of the `tan` function in unary_standard_math .
06-14
The routine Rosen34 ( Runge45 ) had a division of a `size_t` ( `int` ) by a `Scalar` , where `Scalar` was any NumericType . Such an operation may not be valid for a particular numeric type. This has been fixed by explicitly converting the `size_t` to an `int`, then converting the `int` to a `Scalar` , and then preforming the division. (The conversion of an `int` to any numeric type must be valid.)
05-26
If the `Base` type is not `double`, the computed assignment operators did not always allow for `double` operands. For example, if `x` had type `AD< AD<double> >` `
x += .5;
` would slice the value `.5` to an `int` and then convert it to an `AD< AD<double> >`. This has been fixed. `
` This slicing has also been fixed in the assignment operation. In addition, the assignment and copy operations have been grouped together in the documentation; see ad_ctor and ad_assign .
05-25
Document usage of `double` with binary arithmetic operators, and combine all those operators into one section (ad_binary ). `
` The documentation for all the computed assignment operators has been grouped together. In addition, a computed assignment wish list item has been added (it was completed and removed with the 05-26 update.)
05-24
Suppose that `op` is a binary operation and we have `
left op right
` where one of the operands was `AD< AD<double> >` and the other operand was `double`. There was a bug in this case that caused the `double` operand to be converted to `int` before being converted to `AD< AD<double> >`. This has been fixed.
05-22
The Microsoft examples and testing project file `example/example.vcproj` was missing a reference to the source code file `example/reverse_two.cpp`. This has been fixed.
05-08
Reverse mode does not work with the pow function when the base is less than or equal zero and the exponent is an integer. For this reason, the pow_int function is no longer deprecated (and is used by CppAD when the exponent has type `int`).
05-05
Third and fourth order derivatives were included in the routine `test_more/sqrt.cpp` that tests square roots. `
` The return value descriptions were improved for the introduction examples: exp_2_for1 , exp_2_for2 , exp_eps_for1 , and exp_eps_for2 . `
` The summation index in sqrt_reverse was changed from k to ℓ to make partial differentiation with respect to z ( k ) easier to understand. In addition, a sign error was corrected near the end of sqrt_reverse . `
` The dimension for the notation X in reverse_identity was corrected. `
` The word mega was added to the spelling exception list for `openmp/run.sh`.
04-19
Improve connection from reverse_identity theorem to reverse_any calculations. `
` Improve the `openmp/run.sh` script. It now runs all the test cases at once in addition to including multiple number of thread cases for each test. `
` Add the `sum_i_inv_time.cpp` OpenMP example case. `
` There was a typo in the second order discussion (found by Kipp Martin). It has been fixed.
04-17
Add a paragraph to reverse_identity explaining how it relates to reverse_any calculations. Add description of first and second order results in reverse_any .
04-14
Simplify the Reverse mode documentation by creating a separate reverse_two section for second order reverse, making major changes to the description in reverse_any , and creating a third order example reverse_any.cpp for reverse mode calculations. `
` Improve the reverse_identity proof.
04-11
Merge in changes made in `branches/intro`.
04-11
Add exp_eps_rev2 and its verification routine exp_eps_rev2.cpp .
04-10
Finished off exp_2_rev2 and added exp_2_rev2.cpp which verifies its calculations. Added second order calculations to exp_2_cppad . Added exp_eps_for2 and its verification routine.
04-07
Added a preliminary version of exp_2_rev2 (does not yet have verification or exercises).
04-06
Fixed a problem with the Microsoft Visual Studio project file `introduction/exp_apx/exp_apx.vcproj` (it did not track the file name changes of the form `exp_apx/exp_2_for` to `exp_apx/exp_2_for1` on 04-05). `
` Added exp_2_for2 to introduction.
04-05
Use order expansions in introduction; e.g., the second order expansion for the exp_2 example.
03-31
Merge in changes made in `branches/intro` and remove the corresponding Introduction item from the wish list:
03-31
Create the a simpler exponential approximation in the introduction called exp_2 which has a different program variable for each variable in the operation sequence. `
` Simplify the exp_eps approximation using the v 1 , … , v 7 notation so that variables directly correspond to index in operation sequence (as with the exp_2 example).
03-30
The Microsoft project file `introduction/exp_apx/exp_apx.vcproj` was referencing `exp_apx_ad.cpp` which no longer exists. It has been changed to reference `exp_apx_cppad.cpp` which is the new name for that file.
03-29
Fixed entries in this file where the year was mistakenly used for the month. To be more specific, `07-dd` was changed to `03-dd` for some of the entries directly below. `
` Corrected some places where `CppAD` was used in stead of `Adolc` in the adolc_poly.cpp documentation. `
` Added an Introduction and Tracing entry to the wish list. (The Introduction item was completed on 03-31 .)
03-20
Example A.1.1c, `example_a11c.cpp`, from the OpenMP 2.5 standards document, was added to the tests that can be run using `openmp/run.sh`.
03-15
Included the changes from openmp branch so that so CppAD does not use the OpenMP `threadprivate` command (some systems do not support this command).
03-15
Add command line arguments to `openmp_newton_example.cpp`, and modified `openmp/run.sh` to allow for more flexible testing.
03-14
Fixed some Microsoft compiler warnings by explicitly converting from `size_t` to `int`. `
` In the Microsoft compiler case, the `cppad/config.h` file had the wrong setting of `GETTIMEOFDAY`. The setting is now overridden (and always false) when the `_MSC_VER` preprocessor symbol is defined. `
` Some minor changes were made in an effort to speed up the multi-threading case.
03-13
Started a new openmp branch and created a version of CppAD that does not use the OpenMP `threadprivate` command (not supported on some systems).
03-09
Included the changes from openmp branch so that OpenMP can be used with CppAD, see omp_max_thread . The changes dated between 02-15 and 03-28 below were made in the openmp branch and transferred to the trunk on 03-09.
03-28
The conditional include commands were missing on some include files; for example `

         # ifndef CPPAD_BENDER_QUAD_HPP
         # define CPPAD_BENDER_QUAD_HPP

` was missing at the beginning of the BenderQuad include file. This has been fixed. `
` The `speed_test` routines timing was changed to use `gettimeofday` if it is available. (`gettimeofday` measures wall clock time which is better in a multi-threading environment). `
` Added the user multi-threading interface omp_max_thread along with its examples which are distributed in the directory `openmp`. `
` The `speed/*.hpp` files have been moved to `cppad/speed/*.hpp` and the corresponding wish list item has been removed. `
` The multiple tapes with the same base type wish list item have been removed (it's purpose was multi-threading which has been implemented).
02-27
The speed include files are currently being distributed above the `cppad` include directory. A fix this wish list item has been added. `
` Multiple active tapes required a lot of multi-threading access management for the tapes. This was made simpler (and faster) by having at most one tape per thread.
02-22
The include command in the speed_test documentation was `

         # include <speed/speed_test.hpp>

` but it should have been `

         # include <cppad/speed_test.hpp>

` This has been fixed.
02-17
An entry about optimizing the operation sequence in an ADFun object was added to the wish_list . `
` Change the argument syntax for Dependent and deprecate the old Dependent syntax .
02-16
Added `VecAD<Base>` as a valid argument type for the Parameter and Variable functions. In addition, size_t indexing is was extended to be allowed during taping so long as the VecAD object is a parameter.
02-15
Fixed the `example/test_one.sh` script (it was using its old name `one_test`).
02-06
The BenderQuad documentation was improved by adding the fact that the `x` and `y` arguments to the `f.dy` member function are equal to the `x` and `y` arguments to `BenderQuad`. Hence values depending on them can be stored as private objects in `f` and need not be recalculated.
02-04
The method for distributing the documentation needed to be changed in the top level `makefile.am` in order to be compatible with automake version 1.10.
02-03
The change on 02-01 had a new, saved as a static pointer, with no corresponding delete. This was not a bug, but it has been changed to avoid an error message when using CppAD with valgrind . `
` The change to the `pow` function on 06-12-10 did not include the necessary changes to the Sparsity calculations. This has been fixed.
02-02
Fix minor errors and improve profiling documentation. Also change the problem sizes used for the speed tests.
02-01
There seems to be a bug in the cygwin version of g++ version 3.4.4 with the -O2 flag whereby some static variables in static member functions sometimes do not get constructed before being used. This has been avoided by using a static pointer and the new operator in cppad/local/ad.hpp.
01-29
The copyright message was missing from some of the distribution files for some new files added on 06-12-15 . This resulted in the tarballs `*.tgz` and `*.zip` not existing for a period of time. The automated tests have been extended so that this should not happen again.

Input File: omh/whats_new/whats_new_07.omh