# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
# SPDX-FileCopyrightText: Bradley M. Bell <bradbell@seanet.com>
# SPDX-FileContributor: 2003-23 Bradley M. Bell
# ----------------------------------------------------------------------------

{xrst_begin whats_new_06 app}
{xrst_spell
   aclocal
   apx
   autoconf
   automake
   avector
   delem
   determinants
   dw
   generalizing
   gprof
   kasper
   kristensen
   lagrangian
   macros
   makefile
   memcheck
   of of
   omh
   operands
   postfix
   recalculation
   romberg
   rpm
   speedtest
   subgroups
   tautschnig
   underquoted
   uninitialized
   usr
   valgrind
   yy
   yyyymmdd
}

Changes and Additions to CppAD During 2006
##########################################

mm-dd
*****

12-24
=====
Move ``exp_eps_ad`` to ``exp_eps_cppad`` and
add exercises to the following sections:
:ref:`exp_eps_rev1-name` ,
:ref:`exp_eps_cppad-name` .

Add operation sequence indices to help track operations in
:ref:`exp_eps_for0-name` ,
:ref:`exp_eps_for1-name` ,
:ref:`exp_eps_rev1-name` .

12-23
=====
Add exercises to the following sections:
:ref:`get_started.cpp-name` ,
:ref:`exp_eps-name` ,
:ref:`exp_eps_for0-name` , and
:ref:`exp_eps_for1-name` .

12-22
=====
Move :ref:`get_started.cpp-name` below the :ref:`introduction-name` directory.

Move the exponential example to the subdirectory
``introduction/exp_apx`` and change the
``--with-Introduction``
unix configure option
to build both the :ref:`get_started.cpp-name` and :ref:`exp_apx.cpp-name`
example programs.
(The ``--with-GetStarted`` configure command line option has been removed.)

12-21
=====
Add the :ref:`source code for Poly<poly.hpp-name>` to the documentation
and include :ref:`Poly-name` in the in the :ref:`speed_utility-name` section.

The :ref:`get_started.cpp-name` section has been moved
into the :ref:`Introduction-name` and
:ref:`get_started.cpp@Exercises` were added to that section.
In addition some sections has switched position between
the top level :ref:`user_guide-name` and the :ref:`appendix-name` .

12-19
=====
Reorganize so that the source code is below the corresponding routine
in the documentation tree (instead of at the same level) for the
following routines:
:ref:`det_by_minor-name` ,
:ref:`det_grad_33-name` ,
:ref:`uniform_01-name` ,
:ref:`det_of_minor-name` ,
:ref:`det_by_lu-name` ,
:ref:`LuInvert-name` ,
:ref:`LuFactor-name` ,
:ref:`LuSolve-name` .

Separate the specifications for the source in
:ref:`speed_utility-name` and add cross reference to the following routine
specification and implementations:
:ref:`det_by_minor-name` ,
:ref:`det_grad_33-name` ,
:ref:`uniform_01-name` ,
:ref:`det_of_minor-name` ,
:ref:`det_by_lu-name` ,
:ref:`LuInvert-name` ,
:ref:`LuFactor-name` ,
:ref:`LuSolve-name` .

12-18
=====
Make the :ref:`speed-name` source code easier to read.

Change the speed test output name ``det_poly`` to ``poly``
(as it should have been).

12-17
=====
The speed test :ref:`det_grad_33-name` was missing its documentation
(this has been fixed).
In addition, the titles and indexing for the speed test documentation
has been improved.

Add to the specifications that each repeated test corresponds to a
different matrix in
:ref:`det_lu<link_det_lu-name>` and
:ref:`det_minor<link_det_minor-name>` .
In addition, modify all the speed tests so that they abide by this rule.

Change some references from the deprecated name ``CppAD.h`` to
new name ``cppad.hpp`` .

Change :ref:`adolc_det_minor.cpp-name` and :ref:`cppad_det_minor.cpp-name`
to tape once and reuse operation sequence for each repeated
matrix in the test.

Add the :ref:`poly<link_poly-name>` speed test for all three packages.
In addition, correct a missing include in :ref:`poly-name` routine.

12-15
=====
The wish list item
to simplify and better organize the speed tests been completed:

.. csv-table::
   :widths: auto

   :ref:`speed/<speed-name>`,template functions that are speed tested
   ``speed/example``,example usage of speed template functions
   :ref:`speed/adolc<speed_adolc-name>`,Adolc drivers for the template functions
   :ref:`speed/cppad<speed_cppad-name>`,CppAD drivers for the template functions
   :ref:`speed/fadbad<speed_fadbad-name>`,Fadbad drivers for the template functions
   speed/profile,profiling version of CppAD drivers

12-13
=====
Next step for the speed wish list item:
remove ``speed_cppad`` from the documentation and replace it by
``speed/cppad`` , see :ref:`speed_cppad-name` for the new CppAD speed
test routines.

12-12
=====
Started the speed wish list item by
move the ``adolc`` director to ``speed/adolc`` and
``fadbad`` to ``speed/fadbad`` .

12-11
=====
Started the speed wish list item by
creating the ``speed/example`` directory and moving the relevant
examples from
``example/`` * . ``cpp`` and
``speed_example/`` * . ``cpp`` to
``speed/example/`` * . ``cpp`` .
In addition, the relevant include files have been moved from
``example/`` * . ``hpp`` to
``speed/`` * . ``hpp`` .

A new :ref:`speed_test-name` routine was added to the library.

12-10
=====
The :ref:`pow-name` function was changed to be a an ``AD`` < *Base* >
:ref:`atomic_base<glossary@Operation@Atomic>` operation.
This function used to return a ``nan`` if
*x* is negative because it was implemented as

   ``pow`` ( *x* , *y* ) = ``exp`` ( ``log`` ( *x* ) * *y*  )

This has been fixed so that the function and its derivatives are now
calculated properly when *x* is less than zero.
The :ref:`pow-name` documentation was improved
and the :ref:`pow.cpp-name` example was changed to
test more cases and to use the same variable
names as in the documentation.

12-09
=====
A speed wish list item was added to the wish list.

The prototype for ``int`` arguments in binary operations
(for example :ref:`addition<ad_binary-name>` ) was documented as
``const int &`` but was actually just plain ``int`` .
This has been fixed.
(Later changed to ``double`` .)

12-07
=====
Fix bug in the
subversion installation instructions; see
`bug report <http://list.coin-or.org/pipermail/cppad/2006q4/000076.html>`_.

The some of the automatically generated ``makefile.in`` files
had an improper license statement in the GPL license version.
This has been fixed.

12-05
=====
Add the unix installation
--with_Documentation option
and remove the
*postfix_dir* option.

Create a fixed
:ref:`whats_new-name` section above the section for each particular year.
Also improve the CppAD distribution ``README`` file.

12-03
=====
The include file directory ``CppAD`` was changed to be all
lower case; i.e., ``cppad`` .
If you are using a Unix system, see :ref:`include_deprecated-name` .
This completes the following :ref:`wish_list-name` items (which were removed):

#. File and directory names should only contain lowercase letters,
   numbers underscores and possibly one period.
   The leading character must be alphabetic.

#. C++ header files should have the ``.hpp`` extension.

12-02
=====
Put explanation of version numbering in the
download instructions.

Correct some file name references under the Windows heading in
:ref:`speed_cppad-name` .

12-01
=====
All of the ``Makefile.am`` and ``Makefile`` files were changed
to lower case; i.e., ``makefile.am`` and ``makefile`` .

Fix compiler warning while compiling ``cppad/RombergOne/``
(mistake occurred during :ref:`11-20<whats_new_06@mm-dd@11-29>` change).

11-30
=====
Cygwin packages, and other system packages,
should not have a dash in the version number.
See
`cygwin package file naming <http://cygwin.com/setup.html#naming>`_
or, to quote the
`rpm file naming convention <http://www.rpm.org/max-rpm/ch-rpm-file-format.html>`_
*The only restriction placed on the version is that*
*it cannot contain a dash "-".*
As per the acceptable package naming conventions for cygwin,
CppAD version numbering has be changed from
*yy* ``-`` *mm* ``-`` *dd* format to *yyyymmdd* ; i.e.
``cppad-06-11-30`` was changed to ``cppad-20061130`` .

11-29
=====
There was a problem using :ref:`RombergOne-name` with floating point
types other than ``double`` . This has been fixed.

11-28
=====
The :ref:`installation<Install-name>` download files were not being built
because ``Makefile.am`` referenced ``Doc`` when it should have
referenced ``doc`` . This has been fixed.

11-23
=====
A Version Numbering entry was added to the
:ref:`wish_list-name` (this was completed on :ref:`whats_new_06@mm-dd@11-30` ).

11-18
=====
The example routine that computes determinants using expansion
by minors ``DetOfMinor`` was changed to :ref:`det_of_minor-name` ,
in preparation for
more formal speed comparisons with other packages.
To be specific, its documentation was improved,
its dependence on the rest of CppAD was removed
(it no longer includes CppAD.h ).

11-12
=====
The
:ref:`general.cpp-name` and
``test_more/test_more.cpp``
programs were
changed to print out the number of tests that passed or failed instead
of just "All the tests passed" or "At least one of the tests failed".

The windows project files for
examples and testing
should have been changes to use lower case file names on
as part of the 11-08 change below. This has been fixed.

11-08
=====
Move the ``Example`` directory to ``example``
and change all its files to use lower case names.

11-06
=====
Move the ``TestMore`` directory to ``test_more``
and change all its files to use lower case names.

11-05
=====
Remove references in the :ref:`speed_cppad-name` tests to the
``Memory`` and ``Size`` functions because they
have been :ref:`deprecated<fun_deprecated-name>` .

Correct some references to ``var_size`` that should have been
:ref:`fun_property@size_var` .

11-04
=====
Put text written to standard output in the documentation for the
:ref:`get_started.cpp<get_started.cpp@Output>` and
``print_for.cpp`` examples.
(Now documentation can be built from a subversion checkout with out
needing to execute automake.)
The ``PrintFor.cpp`` and
``speedtest.cpp`` examples were missing in :ref:`list_all_examples-name`
(which has been fixed).

Move the ``Speed`` directory to ``speed``
and change all its files to use lower case names.

11-02
=====
The ``print_for`` directory was referenced as ``PrintFor``
in the root CppAD ``Makefile.am`` this has been fixed.

The documentation for the Adolc helper routines
``AllocVec``  and ``AllocMat`` were not being included.
This has been fixed.

Move the ``GetStarted`` directory to ``get_started``
and change all its files to use lower case names.

11-01
=====
Move the ``PrintFor`` directory to ``print_for``
and change all its files to use lower case names.

10-31
=====
Move the ``SpeedExample`` directory to ``speed_cppad_example``
and change all its files to use lower case names.

10-29
=====
Move the ``Adolc`` directory to ``adolc``
and change all its files to use lower case names.

Change all the file in the ``omh`` directory to
use lower case names.

The file ``Makefile.am`` in the distribution directory had the
CPL copyright message in the GPL version. This has been fixed.

10-28
=====
The copyright message in the script files
``example/OneTest`` and ``TestMore/OneTest`` were GPL
(in the CPL distribution).
This has been fixed by moving them to
``example/OneTest.sh`` and ``TestMore/OneTest.sh`` so that
the distribution automatically edits the copyright message.

10-27
=====
Change :ref:`hes_lagrangian.cpp-name` example so that it computes the
Lagrangian two ways. One is simpler and the other can be used
to avoid re-taping operation sequence.

10-26
=====
Change :ref:`hes_lagrangian.cpp-name` example so that it modifies
the independent variable vector between the call to
:ref:`Independent-name` and the ``ADFun`` < *Base* >
:ref:`constructor<fun_construct-name>` .

10-25
=====
A subversion install procedure was
added to the documentation.

Fix definition of preprocessor symbol
``PACKAGE_STRING`` in ``Speed/Speed.cpp``
(broken by change on 10-18).

Added the example
:ref:`hes_lagrangian.cpp-name` which computes the Hessian
of a Lagrangian.

10-18
=====
Document and fix possible conflicts for
:ref:`preprocessor symbols<preprocessor-name>`
that do not begin with ``CppAD`` or ``CPPAD_`` .

Include a default value for the file ``cppad/config.h``
in the subversion repository.

10-16
=====
Fix bug when using :ref:`OdeErrControl-name` with the type
``AD< AD<double> >`` .

10-10
=====
Add the :ref:`Var2Par-name` function so it is possible
to obtain the :ref:`Value-name` of a variable.
Move the ``Discrete.cpp`` example to :ref:`tape_index.cpp-name` .
Fix the Microsoft project file so that the Windows install
examples and testing works properly
(it was missing the :ref:`stack_machine.cpp-name` example).

09-30
=====
These changes were grouped together because it took a while for Coin-Or
to review the dual licensing version and because it was not possible to
get the nightly build changed:

#. Change shell scripts to use \*.sh extension.
#. Two versions, one with CPL and other with GPL license.
#. Change subversion version of CppAD from GPL to CPL copyright.
#. Change all files in cppad/local to use lower case and \*.hpp extension.
#. CppAD_vector.h was generating a warning on version 4 of gcc.
   This have been fixed.
#. Change the preprocessor ``# define`` commands
   in ``cppad/local/\*.hpp`` to use upper case names.
#. Add the :ref:`stack_machine.cpp-name` example.

08-17
=====
Some error message occurred while executing
::

   valgrind --tool=memcheck example/example
   valgrind --tool=memcheck TestMore/TestMore

These were not really bugs, but they have been fixed to avoid
this conflict between CppAD and `valgrind <http://valgrind.org/>`_.

07-14
=====
Make some improvements were made to the :ref:`Introduction-name` ,
:ref:`exp_eps.hpp-name` and :ref:`exp_eps_rev1-name` sections.

07-12
=====
Use a drop down menu for the navigation links, instead of a separate frame
for the navigation links, for each section in the documentation.

06-29
=====
Newer versions of the gcc compiler generated an error because
:ref:`erf-name` was using :ref:`CondExp-name` before it was defined.
This was found by Kasper Kristensen and his fix has been
included in the CppAD distribution.

06-22
=====
The :ref:`ADFun-name` operation
*f* ( *x* , *y* ) no longer executes a zero order
:ref:`Forward-name` operation when a new operation sequence is stored in
*f* .
In addition, the syntax for this operation was changed to
*f* . ``Dependent`` ( *y* ) (see :ref:`Dependent-name` ).

{xrst_comment ------------------------------------------------------ }
06-19
=====
The changes listed under 06-17 and 06-18 were made in the branches/ADFun branch
of the CppAD subversion repository. They did not get merged into the trunk
and become part of the distribution until 06-19. This accomplished the
following goal, which was removed from the :ref:`wish_list-name` :

"We would like to be able to erase the function
values so that :ref:`ADFun-name` objects use less memory.
We may even want to erase the AD operation sequence so that
:ref:`ADFun-name` objects use even less memory and can be used
for a subsequent AD operation sequence."

#. 06-17:
   Added :ref:`capacity_order-name` which can be used to control
   the amount of memory used to store :ref:`Forward-name` results.
   Also :ref:`deprecated<fun_deprecated-name>` ``taylor_size`` , and defined
   :ref:`size_order-name` in its place.

#. 06-18:
   Added the :ref:`ADFun default constructor<fun_construct-name>`
   and the ability to
   :ref:`store a new operation sequence<Dependent-name>`
   in an ``ADFun`` object with out having to use
   ``ADFun`` pointers together with ``new``
   and ``delete`` .

{xrst_comment ------------------------------------------------------ }

06-17
=====
The location where the distribution files are stored has changed
and this broke the Download Current Version links for the
unix and windows installation.
This has been fixed.

The compiling instructions for the :ref:`speed_cppad-name` routines have been improved.

The :ref:`Value-name` function has been extended to allow for
:ref:`glossary@Parameter` arguments even if the corresponding
tape is in the Recording state.

The :ref:`BenderQuad-name` documentation and example have been improved
by changing *Vector* to *BAvector* to emphasize that
it corresponds to a vector of *Base* objects.

06-15
=====
Change :ref:`BenderQuad-name` to use *Base* instead of
``AD`` < *Base* > where every possible.
This allows for more calculations to be done in the base type; i.e.,
is more efficient.

06-09
=====
Add a size check (size one) for the
:ref:`function value argument, g<BenderQuad@g>` in ``BenderQuad`` .

06-07
=====
Some major changes were made to the notation in
:ref:`get_started.cpp-name` (to make it easier to start using CppAD).

In the :ref:`Introduction-name` example,
:math:`exp_eps` was changed to :math:`{\rm exp\_eps}`.

06-05
=====
Change :ref:`BenderQuad-name`
:math:`F_y (x, y)` to :math:`H(x,y)` so applies in a more
general setting.
This was another change to the ``BenderQuad`` interface,
*fun* . ``fy`` was changed to *fun* . ``h`` .

06-02
=====
Newer versions of the gcc compiler generated a warning for possible
use of an uninitialized pointer.
This was found by Michael Tautschnig and his fix has been
included in the CppAD distribution.

05-31
=====
The interface to :ref:`BenderQuad-name` has been changed.
Now all the function evaluation routines
are member functions of one class object.
This makes it easy for them to share common data.

05-29
=====
Change statement of command syntax to
be in the same browser frame as the command documentation
(for all the commands with a syntax statement).
Now when a user links to a specific heading in
a command's documentation,
the syntax for that command is automatically included.
Before the user needed to
follow another link to see to the command syntax.

05-27
=====
Added :ref:`BenderQuad-name` for computing the Hessian of
Bender's reduced objective function.

Added special specifications for ``resize(0)``
to :ref:`CppAD_vector-name` .

05-03
=====
The g++ (GCC) 4.1.0 (Red Hat 4.1.0-3) compiler reported an error
because certain functions were used before being defined
(version 3.4.4 did not complain about this).
This has been fixed.

04-29
=====
Change all of the example and test driver programs so that they return
error codes; i.e., zero for no error and one for an error.

Add more discussion and a reference for a
``gcc 3.4.4 -O2`` bug (since been removed).

04-28
=====
Improve the :ref:`get_started.cpp-name` example and move
it so that it is visible at the too level of the documentation.

04-26
=====
The programs in :ref:`Introduction-name` have been converted to automated
test that return true or false with the driver program
:ref:`Introduction<exp_apx.cpp-name>` .

04-25
=====
Add an :ref:`Introduction-name` section to the documentation
(replaces old example that was part of the :ref:`Theory-name` section).

04-19
=====
A discussion was added near the end of the :ref:`FunCheck-name` documentation.
And the cross references to the :ref:`CompareChange-name` discussion
were changed to the FunCheck discussion.

An operation sequence entry was added to the :ref:`wish_list-name` .

04-18
=====
The new definitions for
:ref:`glossary@AD of Base`
and
:ref:`operation sequence<glossary@Operation@Sequence>`
have been used throughout the documentation.

Add the :ref:`FunCheck-name` section for checking that a sequence of
operations is as intended.

04-17
=====
The documentation for :ref:`SpeedTest-name` and :ref:`Poly-name` was improved.

Definitions were added for an atomic :ref:`glossary@Operation`
and for an operation sequence being
dependent and independent of the values of specific operands.

The definition of AD sequence of operations was made abstract
and moved to the glossary as
:ref:`Type operation sequence<glossary@Operation@Sequence>` .

04-15
=====
The :ref:`mul_level-name` example was moved from
:ref:`ADFun-name` to :ref:`General-name` .
The documentation for :ref:`SpeedTest-name` was improved.

04-14
=====
Documentation and examples were improved for the following routines:
:ref:`ForTwo-name` ,
:ref:`RevTwo-name` .
In addition, the computation in ``RevTwo`` was made more efficient
(it used to possibly calculate some first order partials that were not used).

04-13
=====
Documentation and examples were improved for the following routines:
:ref:`Jacobian-name` ,
:ref:`ForOne-name` ,
:ref:`RevOne-name` ,
and :ref:`Hessian-name` .

04-08
=====
In the case where :ref:`fun_deprecated@use_VecAD` is true,
the :ref:`ForSparseJac-name` calculation in only for the current
independent variable values.
In this case, the sparsity pattern can be (and has been)
made more efficient; i.e., fewer true values
(because it only applies to the current :ref:`forward_zero-name` ).

The conversion from
:ref:`VecAD@VecAD\<Base>::reference`
to :ref:`AD-name` gave a compile error (this has been fixed).
Code example for this fix
::

   VecAD<double> V(1);
   AD<double> zero = 0;
   V[zero] = 1.;
   static_cast< AD<double> > ( V[zero] );

04-06
=====
The :ref:`ForSparseJac-name` , :ref:`RevSparseJac-name` , :ref:`RevSparseHes-name`
sparsity results are now valid for
all independent variable values
(if the AD operation sequence does no use any
``VecAD`` < *Base* > operands).
In addition, the
``ForSparseJac`` , :ref:`RevSparseJac-name` and :ref:`RevSparseHes-name`
documentation and examples were improved.

The :ref:`useVecAD<fun_deprecated@use_VecAD>`
member function was added to :ref:`ADFun-name` objects.

The ``var_size`` member function was changed to
:ref:`fun_property@size_var`
(this is not backward compatible, but ``var_size`` was just added on
:ref:`whats_new_06@mm-dd@04-03` ).

04-05
=====
The documentation and example for :ref:`CompareChange-name` were
improved and moved to be part of the :ref:`Forward-name` section.

04-04
=====
The documentation and examples for :ref:`Reverse-name` were
improved and split into :ref:`reverse_one-name` and :ref:`reverse_any-name` .

04-03
=====
Create separate sections for the
:ref:`zero<forward_zero-name>` and :ref:`forward_one-name` first order case
of :ref:`Forward-name` mode.

The ADFun :ref:`fun_deprecated@Size` member function
has been deprecated (use :ref:`size_order-name` instead).

The :ref:`Reverse-name` member function is now declared,
and documented as, ``const`` ; i.e.,
it does not effect the state of the ADFun object.

Change the examples that use :ref:`Reverse-name` to use the same
return value notation as the documentation; i.e., ``dw`` .

04-02
=====
The member functions of :ref:`ADFun-name` that return properties of
AD of *Base*
:ref:`operation sequence<glossary@Operation@Sequence>`
have been grouped into the :ref:`fun_property-name` section.
In addition, the :ref:`fun_property.cpp-name` example has been added.

The :ref:`CompareChange-name` function documentation was improved
and moved to a separate section.

Group the documentation for the :ref:`ADFun-name` member functions that
evaluate functions and derivative values.
This organization has since been changed.

Remove the old ``Fun.cpp`` example and extend
:ref:`independent.cpp-name` so that it demonstrates using different
choices for the :ref:`SimpleVector-name` type.

04-01
=====
Move the :ref:`ADFun Constructor<fun_construct-name>` to its own separate
section, improve its documentation, and use :ref:`independent.cpp-name`
for its example.

The following member functions of :ref:`ADFun-name` have been
:ref:`deprecated<fun_deprecated-name>` :
``Order`` , ``Memory`` .

The wish list entry for Memory usage
was updated on 04-01.
The request was implemented on :ref:`whats_new_06@mm-dd@06-19`
and the entry was removed from the wish list.

03-31
=====
Add examples for the :ref:`Parameter, Variable<con_dyn_var-name>` and
:ref:`Independent-name` functions.

Move the :ref:`con_dyn_var@Parameter`
and :ref:`con_dyn_var@Variable` functions from
the :ref:`ADFun-name` section to the :ref:`AD-name` section.

In the examples for the :ref:`AD-name` sections,
refer to the range space vector instead of the dependent variable vector
because some of the components may not be
:ref:`variables<glossary@Variable>` .

03-30
=====
Move the :ref:`LuRatio-name` section below :ref:`lu_det_and_solve-name` .

Move the definition of an
AD of *Base*
:ref:`operation sequence<glossary@Operation@Sequence>`
from the glossary to the :ref:`AD-name` section.

Improve the definition of tape state.

Add mention of taping to
:ref:`Erf-name` , :ref:`bool_fun-name` , :ref:`near_equal_ext-name` ,and :ref:`Pow-name` .

Change the definition for
:ref:`VecAD@VecAD\<Base>::reference`
so that it stands out of the text better.

03-29
=====
Mention the :ref:`VecAD@VecAD\<Base>::reference` case in
documentation and examples for
:ref:`abs-name` , :ref:`atan2-name` , :ref:`erf-name` , and :ref:`pow-name` .

Fix a bug derivative computation for ``abs`` ( *x* )
when *x* had type ``AD< AD<double> >`` and *x*
had value zero.

Fix a bug using non-zero AD indices for :ref:`VecAD-name` vectors
while the tape is in the empty state.

Extend :ref:`erf-name` to include ``float`` , ``double`` ,
and ``VecAD`` < *Base* >:: ``reference`` .

03-28
=====
Mention the
:ref:`VecAD@VecAD\<Base>::reference` case in
documentation and examples for
:ref:`unary_plus-name` ,
:ref:`unary_minus-name` ,
:ref:`ad_binary-name` ,
:ref:`compound_assign-name` , and
:ref:`unary_standard_math-name`

03-27
=====
Extend and improve the
:ref:`VecAD exceptions<VecAD@VecAD<Base\>::reference@Exceptions>` .

Mention the :ref:`VecAD@VecAD\<Base>::reference` case
and generally improve
:ref:`addition<ad_binary-name>` documentation and examples.

03-26
=====
Improve documentation and examples for :ref:`VecAD-name` and change
its element type from
``VecADelem`` < *Base* > to ``VecAD_reference`` < *Base* >
(so that it looks more like
:ref:`VecAD@VecAD\<Base>::reference` ).

Mention the :ref:`VecAD@VecAD\<Base>::reference` case
and generally improve
:ref:`Value-name` , :ref:`ad_output-name` and :ref:`assignment<ad_assign-name>` documentation
and examples.

Extend :ref:`Integer-name` and :ref:`PrintFor-name` to include the
:ref:`VecAD@VecAD\<Base>::reference` case
(and mention in documentation and examples).

03-24
=====
Move :ref:`VecAD-name` and :ref:`LuRatio-name` from the old ExtendDomain section
to :ref:`AD-name` .

03-23
=====
Improve documentation and examples for
:ref:`CondExp-name` and :ref:`Discrete-name` .
Move both of these sections from ExtendDomain to :ref:`ADValued-name` .

03-22
=====
The documentation sections under :ref:`AD-name`
have been organized into a new set of sub-groups.

03-18
=====
The documentation and example for :ref:`PrintFor-name` have been improved.
The sections below :ref:`AD-name`
in the documentation have been organized into subgroups.

03-17
=====
The documentation and examples have been improved for the
following functions:
:ref:`bool_fun-name` , and
:ref:`near_equal_ext-name` .

03-16
=====
Improve the documentation and example for the :ref:`pow-name` function.
This includes splitting out and generalizing the integer case
:ref:`pow_int-name` .

The copies of the ``atan2`` function were included
in the CppAD namespace for the
``float`` and ``double`` types.

03-15
=====
Improve the introduction to CppAD on the top level page
of the documentation.

03-11
=====
The file ``cppad/local/MathOther.h`` had a file name case error
that prevented the documentation from building and tests from running
(except under Cygwin which is not really case sensitive).
This has been fixed.

The term AD of *Base*
:ref:`operation sequence<glossary@Operation@Sequence>`
has been defined.
It will be used to improve the user's understanding of exactly
how an :ref:`ADFun-name` object is related to the C++ algorithm.

03-10
=====
The math functions that are not under :ref:`unary_standard_math-name` have
been grouped under ``MathOther`` .

The documentation and examples have been improved for the
following functions:
:ref:`abs-name` , :ref:`atan2-name` .

03-09
=====
The examples
:ref:`cos.cpp-name` ,
:ref:`cosh.cpp-name` ,
:ref:`exp.cpp-name` ,
:ref:`log.cpp-name` ,
:ref:`log10.cpp-name` ,
:ref:`sin.cpp-name` ,
:ref:`sinh.cpp-name` ,
:ref:`sqrt.cpp-name`
have been improved.

03-07
=====
The ``tan`` function has been added to CppAD.

The examples :ref:`Acos.cpp-name` , :ref:`Asin.cpp-name` and
:ref:`atan.cpp-name` have been improved.

03-05
=====
The AD standard math unary functions documentation
has been grouped together with improved documentation
in :ref:`unary_standard_math-name` .

02-28
=====
The :ref:`ad_output-name` and :ref:`Abs-name`
documentation and example have been improved.
Minor improvements were also made to the :ref:`lu_vec_ad.cpp-name` documentation.

02-25
=====
The :ref:`Compare-name` documentation and example have been improved.

02-24
=====
The documentation and examples have been improved for the following sections:
:ref:`division<ad_binary-name>` , :ref:`-=<compound_assign-name>` , :ref:`\*=<compound_assign-name>` , and :ref:`/=<compound_assign-name>` .

02-23
=====
The :ref:`multiplication<ad_binary-name>` documentation and example have been improved.

02-21
=====
The :ref:`subtraction<ad_binary-name>` documentation and example have been improved.

There was a bug :ref:`RevTwo-name` that was not detected by the
:ref:`rev_two.cpp-name` test. This bug was reported by
`Kasper Kristensen <http://list.coin-or.org/pipermail/cppad/2006-February/000020.html>`_
A test was added ``TestMore/rev_two.cpp`` that detects this problem
and the problem has been fixed.

02-15
=====
The :ref:`+=<compound_assign-name>` documentation and example have been improved.

02-14
=====
The :ref:`addition<ad_binary-name>` documentation and example have been improved.

02-13
=====
Combine the old binary operator and compound assignment documentation
into :ref:`Arithmetic-name` documentation.

The documentation and examples have been improved for the following sections:
:ref:`assignment<ad_assign-name>` , :ref:`unary_plus-name` , :ref:`unary_minus-name` .

02-11
=====
The documentation and examples have been improved for the following sections:
:ref:`ad_ctor-name` ,
:ref:`ad_ctor-name` and :ref:`ad_assign-name` , and
:ref:`Value-name` .

02-10
=====
This is the beginning of a pass to improve the documentation:
The documentation sections
The CopyBase (formerly FromBase and now part of :ref:`ad_ctor-name` and :ref:`ad_assign-name` ) and
:ref:`AD copy constructor<ad_ctor-name>`
(formerly Copy) documentation has been modified.

Some of the error messaging during :ref:`ADFun-name` construction
has been improved.

02-04
=====
There was a read memory access past the end of an array in
:ref:`CppAD::vector::push_back<CppAD_vector@push_back>` .
This has been fixed and in addition
:ref:`track_new_del-name` is now used to do and check the allocation in
``CppAD::vector`` .

The routines :ref:`Runge45-name` and :ref:`Rosen34-name`
had static vectors to avoid recalculation on each call.
These have been changed to be plain vectors to avoid memory
leak detection by :ref:`track_new_del@TrackCount` .

01-20
=====
Add software guidelines
to the wish list.

01-18
=====
Improve the definition for
:ref:`parameters<glossary@Parameter>` and
:ref:`variables<glossary@Variable>` .
Remove unnecessary reference to parameter and variable
in  documentation for :ref:`Independent-name` .

01-08
=====
The aclocal program is part of the automake and autoconf system.
It often generates warnings of the form:

| |tab| / ``usr/share/aclocal/`` ...: ``warning: underquoted definition of``
| |tab| ...

The shell script file ``FixAclocal`` ,
which attempts to fix these warnings,
was added to the distribution.

01-07
=====
Change CppAD error handler from using the macros defined in
``cppad/CppADError.h`` to using a class defined in
:ref:`include/cppad/utility/error_handler.hpp<ErrorHandler-name>` .
The macros ``CppADUnknownError`` and ``CppADUsageError``
have been deprecated (they are temporarily still available in the
file ``cppad/local/CppADError.h`` ).

01-02
=====
Add the sed script ``Speed/gprof.sed`` to aid in the display of the
profiling output.

Make the following source code files easier to understand:
``Add.h`` , ``Sub.h`` , ``Mul.h`` , ``Div.h``
(in the directory ``cppad/local`` ).

01-05
=====
Make the following source code files easier to understand:
``RevSparseHes.h`` ,
``Reverse.h`` ,
``Fun.h`` ,
``Forward.h`` ,
``ForSparseJac.h`` ,
``RevSparseJac.h``
(in the directory ``cppad/local`` ).

{xrst_end whats_new_06}
