Changes and Additions to CppAD During 2010
Keywords: changes additions to cppad during 2010 introduction 12-31 11-27 09-26 09-22 08-21 07-14 07-11 06-01 04-28 04-26 04-24 04-01 03-11 03-10 03-09 03-03 02-11 02-08 02-06 02-05 02-03 01-26 01-24 01-23 01-20 01-18 01-04

| Prev | Next |  |  |  |  |  | whats_new_10 |

Changes and Additions to CppAD During 2010
Introduction
This section contains a list of the changes to CppAD during 2010 (in reverse order by date). The purpose of this section is to assist you in learning about changes between various versions of CppAD.
12-31

1. Add specifications for the CppAD pkgconfig files.
2. Update the CppAD README file.
3. Move most all CppAD development shell scripts to the `bin` subdirectory of the distribution directory.
4. Fix warnings generated by the `g++` compiler option `-Wshadow`; for example, `sparse_pack.hpp:101:2: warning: declaration of 'end' shadows a member of 'this'`

11-27
If `NDEBUB` was defined, the default CppAD error handler would return because its `assert` had no effect in this case. This has been fixed by placing a call to `std::exit(1)` after its assert.
09-26
There was a bug (introduced on 09-22) in `make test` when the `configure` command was executed from a directory other than the distribution directory (the cppad_ipopt_nlp did not build). This has been fixed.
09-22
Promote cppad_ipopt_nlp from an example to a library that gets installed (provided that the ipopt_dir is specified on the `configure` command line).
08-21
Fix problems with linking of cppad_ipopt_nlp test with both older and newer versions of `ipopt`.
07-14
The new versions of ipopt use `pkg-config` to record the location where its necessary libraries are stored on the system. The cppad configure command has been improved so that it can work both with versions of ipopt that use `pkg-config` and ones that don't.
07-11
Old versions of the ipopt library were located in `ipopt_dir/lib/libipopt.*` (see ipopt_dir ), but newer versions will be located in `ipopt_dir/lib/coin/libipopt.*` . The directory `ipopt_dir/lib/coin` has been added to the library search path so that the cppad_ipopt_nlp examples work with both old and new versions of ipopt.
06-01
In the case where the preprocessor symbol `NDEBUG` was defined (see speed ), the function `
CheckSimpleVector(const Scalar& x, const Scalar& y)
` was not defined; see bug report . This has been fixed.
04-28
Change the multi-level taping examples mul_level.cpp and mul_level_adolc.cpp to be more efficient.
04-26
Include Blas and Linpack libraries in makefile links for cppad_ipopt_nlp examples. This removes the need to use get.Blas when building Ipopt. `
` The speed test in `cppad_ipopt/speed` was missing a link to the library `../src/libcppad_ipopt.a`. This has been fixed.
04-24
There was a bug in the error checking done by `cppad/local/sub_op.hpp` that caused the following improper abort: `
Error detected by false result for
arg[1] < i_z
at line 337 in the file
.../include/cppad/local/sub_op.hpp
` This was fixed in the trunk. It was also fixed in the release with version number `20100101.3` which can be downloaded from the CppAD download directory .
04-01
Some of the speed_utility library (in `speed/src`) was being compiled for debugging. This has been changed and they are now compiled with debugging off and optimization on.
03-11
The old reverse_any example was moved to reverse_three.cpp , the old checkpoint example is now the general case reverse example, and a better `checkpoint.cpp/` example was created.
03-10
The optimize routine would mistakenly remove some expressions that depended on the independent variables and that affected the result of certain CondExp operations. This has been fixed.
03-09
Extend reverse_any so that it can be used for checkpointing ; i.e., splitting reverse mode calculations at function composition points.
03-03
Fixed a bug in handling vector of boolean sparsity patterns. (when the number of elements per set was a multiple of `sizeof(size_t))`.
02-11
The `speed` directory has been reorganized and the common part of the link functions , as well as the microsoft_timer , have been moved to the subdirectory `speed/src` where a library is built.
02-08
A bug was introduced in the 02-05 change whereby the `make` command tried to build the `libcppad_ipopt.a` library even if `IPOPT_DIR` was not specified on the configure command line. This has been fixed.
02-06
The Microsoft project files for the speed tests were extended so that the worked properly for the Release (as well as the Debug) configuration. (This required conversion from Visual Studio Version 7 to Visual Studio 2008 format.) `
` Add an automated check for optimize bug fixed on `02-05`. (Automatic checking for PrintFor bug was added on `02-05`.)
02-05

1. Simplify running all the tests by adding the `make test` command.
2. Simplify the configure command by removing need for: `--with-Speed`, `--with-Introduction`, `--with-Example`, `--with-TestMore`, and `--with-PrintFor`.
3. Add files that were missing in the Microsoft Visual Studio projects.
4. Fix two significant bugs. One in the optimize command and the other in the PrintFor command.

02-03
Fix a mistakes in the test bender_quad.cpp . In addition, the optimize routine was used to reduce the tape before doing the calculations. `
` The routine opt_val_hes was added as an alternative to BenderQuad .
01-26
Another speed improvement was made to cppad_ipopt_nlp . To be specific, the Lagragian multipliers where checked and components that were zero were excluded form the Hessian evaluation.
01-24
It appears that in cppad_ipopt_nlp , when `retape[k]` was true, and `L[k] > 1`, it was possible to use the wrong operation sequence in the calculations (though a test case that demonstrated this could not be produced). This is because the argument value to r k ( u ) depends on the value of ℓ in the expression r k ∘ [ J k , ℓ ⊗ n ] ( x ) (even when the value of x does not change). `
` There was a bug in the ipopt_nlp_ode_check.cpp program, for a long time, that did not show up until now. Basically, the check had code of the was using an undefined value. This has been fixed.
01-23
Improve the sparsity patterns and reduce the amount of memory required for large sparse problems using cppad_ipopt_nlp . The speed test `cppad_ipopt/speed` showed significant improvement.
01-20
We plan to split up the `ipopt_cppad/src/ipopt_cppad_nlp.hpp` include file. In preparation, the example `ipopt_cppad` has been changed to `cppad_ipopt`. This will facilitate using `CPPAD_IPOPT_*` for the `# ifdef` commands in the new include files (note that they must begin with `CPPAD`).
01-18
The `ipopt_cppad` subdirectory of the distribution has been split into an `src`, `example`, and `speed` subdirectories. The `example` (`speed`) subdirectory is where one builds the ipopt_cppad_nlp examples (speed tests ).
01-04
The following items have been fulfilled and hence were removed for the wish_list :

1. If an exception occurs before the call to the corresponding ADFun constructor or Dependent , the tape recording can be stopped using abort_recording .
2. A speed test for ipopt_cppad_nlp was added; see ipopt_ode_speed.cpp .
3. The optimize command uses hash coding to check when an expression is already in the tape and can be reused.
4. The optimize command removes operations that are not used by any of the dependent variables.
5. The ad_in_c.cpp example demonstrates how to connect CppAD to an arbitrary scripting language.
6. The vector of sets option has been added to sparsity calculations; see sparsity pattern .

Input File: omh/whats_new/whats_new_10.omh