------------------------------------------------- lines 6-293 of file: appendix/whats_new/2010.xrst ------------------------------------------------- {xrst_begin 2010 app} {xrst_spell blas ifdef lagragian libcppad libipopt linpack makefile retape src wshadow } Release Notes for 2010 ###################### mm-dd ***** 12-31 ===== #. Add specifications for the CppAD :ref:`pkgconfig-name` files. #. Update the CppAD README file. #. Move most all CppAD development shell scripts to the ``bin`` subdirectory of the distribution directory. #. 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 :ref:`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 :ref:`cppad_ipopt_nlp-name` did not build). This has been fixed. 09-22 ===== Promote :ref:`cppad_ipopt_nlp-name` from an example to a library that gets installed (provided that the :ref:`configure@ipopt_dir` is specified on the ``configure`` command line). 08-21 ===== Fix problems with linking of :ref:`cppad_ipopt_nlp-name` 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 :ref:`configure@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 :ref:`configure@ipopt_dir` ), but newer versions will be located in *ipopt_dir* / ``lib/coin-or/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 :ref:`Faq@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 :ref:`mul_level.cpp-name` and :ref:`mul_level_adolc.cpp-name` to be more efficient. 04-26 ===== Include Blas and Linpack libraries in makefile links for :ref:`cppad_ipopt_nlp-name` 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`` | |tab| ``arg`` [1] < ``i_z`` | ``at line 337 in the file`` | |tab| .../ ``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 :ref:`speed_utility-name` 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 :ref:`reverse_any-name` example was moved to :ref:`reverse_three.cpp-name` , the old checkpoint example is now the general case reverse example, and a better ``checkpoint.cpp/`` example was created. 03-10 ===== The :ref:`optimize-name` routine would mistakenly remove some expressions that depended on the independent variables and that affected the result of certain :ref:`CondExp-name` operations. This has been fixed. 03-09 ===== Extend :ref:`reverse_any-name` so that it can be used for :ref:`checkpointing` ; i.e., splitting reverse mode calculations at function composition points. 03-03 ===== Fixed a bug in handling :ref:`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 :ref:`speed_main@Link Routines` , 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 :ref:`2010@mm-dd@02-05` change whereby the ``make`` command tried to build the ``libcppad_ipopt.a`` library even if ``IPOPT_DIR`` was not specified on the :ref:`configure@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 :ref:`optimize-name` bug fixed on ``02-05`` . (Automatic checking for :ref:`PrintFor-name` bug was added on ``02-05`` .) 02-05 ===== #. Simplify running all the tests by adding the ``make test`` command. #. Simplify the :ref:`configure@Configure` command by removing need for: ``--with-Speed`` , ``--with-Introduction`` , ``--with-Example`` , ``--with-TestMore`` , and ``--with-PrintFor`` . #. Add files that were missing in the Microsoft Visual Studio projects. #. Fix two significant bugs. One in the :ref:`optimize-name` command and the other in the :ref:`PrintFor-name` command. 02-03 ===== Fix a mistakes in the test :ref:`bender_quad.cpp-name` . In addition, the :ref:`optimize-name` routine was used to reduce the tape before doing the calculations. The routine :ref:`opt_val_hes-name` was added as an alternative to :ref:`BenderQuad-name` . 01-26 ===== Another speed improvement was made to :ref:`cppad_ipopt_nlp-name` . 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 :ref:`cppad_ipopt_nlp-name` , 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 :math:`r_k (u)` depends on the value of :math:`\ell` in the expression .. math:: r_k \circ [ J_{k, \ell} \otimes n ] (x) (even when the value of :math:`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 :ref:`cppad_ipopt_nlp-name` . 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 :ref:`cppad_ipopt_nlp-name` examples (speed tests). 01-04 ===== The following items have been fulfilled and hence were removed for the :ref:`wish_list-name` : #. If an exception occurs before the call to the corresponding :ref:`ADFun-name` constructor or :ref:`Dependent-name` , the tape recording can be stopped using :ref:`abort_recording-name` . #. A speed test for :ref:`cppad_ipopt_nlp-name` was added; see ``ipopt_ode_speed.cpp`` . #. The :ref:`optimize-name` command uses hash coding to check when an expression is already in the tape and can be reused. #. The :ref:`optimize-name` command removes operations that are not used by any of the dependent variables. #. The :ref:`ad_in_c.cpp-name` example demonstrates how to connect CppAD to an arbitrary scripting language. #. The vector of sets option has been added to sparsity calculations; see :ref:`glossary@Sparsity Pattern` . {xrst_end 2010}