<?xml version='1.0'?>
<html xmlns='http://www.w3.org/1999/xhtml'
xmlns:math='http://www.w3.org/1998/Math/MathML'
>
<head>
<title>Changes and Additions to CppAD During 2004</title>
<meta http-equiv='Content-Type' content='text/html' charset='utf-8'/>
<meta name="description" id="description" content="Changes and Additions to CppAD During 2004"/>
<meta name="keywords" id="keywords" content=" changes and additions to cppad during 2004 introduction 12-11 12-09 12-03 11-17 11-16 11-15 11-14 11-13 11-12 11-10 11-04 11-02 11-01 10-29 10-28 10-27 10-21 10-19 10-16 10-06 09-29 09-26 09-23 09-21 09-13 09-10 09-09 09-07 09-04 09-02 08-27 08-25 08-24 08-12 07-31 07-08 07-07 07-03 07-02 06-29 06-25 06-12 06-04 06-03 06-01 05-30 05-29 05-26 05-25 05-14 05-12 05-09 05-07 05-04 05-03 04-29 04-28 04-25 04-24 04-22 04-21 04-20 04-19 04-09 04-08 04-07 04-03 04-02 04-01 03-30 03-28 03-25 03-18 03-17 03-15 03-12 03-11 03-09 03-07 03-06 03-05 03-04 03-03 03-01 02-29 02-28 02-21 02-20 02-17 02-16 02-15 02-12 02-01 01-29 01-28 01-22 "/>
<style type='text/css'>
body { color : black }
body { background-color : white }
A:link { color : blue }
A:visited { color : purple }
A:active { color : purple }
</style>
<script type='text/javascript' language='JavaScript' src='_whats_new_04_xml.js'>
</script>
</head>
<body>
<table><tr>
<td>
<a href="http://www.coin-or.org/CppAD/" target="_top"><img border="0" src="_image.gif"/></a>
</td>
<td><a href="whats_new_05.xml" target="_top">Prev</a>
</td><td><a href="whats_new_03.xml" target="_top">Next</a>
</td><td>
<select onchange='choose_across0(this)'>
<option>Index-></option>
<option>contents</option>
<option>reference</option>
<option>index</option>
<option>search</option>
<option>external</option>
</select>
</td>
<td>
<select onchange='choose_up0(this)'>
<option>Up-></option>
<option>CppAD</option>
<option>Appendix</option>
<option>whats_new</option>
<option>whats_new_04</option>
</select>
</td>
<td>
<select onchange='choose_down3(this)'>
<option>CppAD-></option>
<option>Install</option>
<option>Introduction</option>
<option>AD</option>
<option>ADFun</option>
<option>preprocessor</option>
<option>multi_thread</option>
<option>library</option>
<option>ipopt_solve</option>
<option>Example</option>
<option>speed</option>
<option>Appendix</option>
</select>
</td>
<td>
<select onchange='choose_down2(this)'>
<option>Appendix-></option>
<option>Faq</option>
<option>Theory</option>
<option>glossary</option>
<option>Bib</option>
<option>Bugs</option>
<option>WishList</option>
<option>whats_new</option>
<option>deprecated</option>
<option>compare_c</option>
<option>License</option>
</select>
</td>
<td>
<select onchange='choose_down1(this)'>
<option>whats_new-></option>
<option>whats_new_14</option>
<option>whats_new_13</option>
<option>whats_new_12</option>
<option>whats_new_11</option>
<option>whats_new_10</option>
<option>whats_new_09</option>
<option>whats_new_08</option>
<option>whats_new_07</option>
<option>whats_new_06</option>
<option>whats_new_05</option>
<option>whats_new_04</option>
<option>whats_new_03</option>
</select>
</td>
<td>whats_new_04</td>
<td>
<select onchange='choose_current0(this)'>
<option>Headings-></option>
<option>Introduction</option>
<option>12-11</option>
<option>12-09</option>
<option>12-03</option>
<option>11-17</option>
<option>11-16</option>
<option>11-15</option>
<option>11-14</option>
<option>11-13</option>
<option>11-12</option>
<option>11-10</option>
<option>11-04</option>
<option>11-02</option>
<option>11-01</option>
<option>10-29</option>
<option>10-28</option>
<option>10-27</option>
<option>10-21</option>
<option>10-19</option>
<option>10-16</option>
<option>10-06</option>
<option>09-29</option>
<option>09-26</option>
<option>09-23</option>
<option>09-21</option>
<option>09-13</option>
<option>09-10</option>
<option>09-09</option>
<option>09-07</option>
<option>09-04</option>
<option>09-02</option>
<option>08-27</option>
<option>08-25</option>
<option>08-24</option>
<option>08-12</option>
<option>07-31</option>
<option>07-08</option>
<option>07-07</option>
<option>07-03</option>
<option>07-02</option>
<option>06-29</option>
<option>06-25</option>
<option>06-12</option>
<option>06-04</option>
<option>06-03</option>
<option>06-01</option>
<option>05-30</option>
<option>05-29</option>
<option>05-26</option>
<option>05-25</option>
<option>05-14</option>
<option>05-12</option>
<option>05-09</option>
<option>05-07</option>
<option>05-04</option>
<option>05-03</option>
<option>04-29</option>
<option>04-28</option>
<option>04-25</option>
<option>04-24</option>
<option>04-22</option>
<option>04-21</option>
<option>04-20</option>
<option>04-19</option>
<option>04-09</option>
<option>04-08</option>
<option>04-07</option>
<option>04-03</option>
<option>04-02</option>
<option>04-01</option>
<option>03-30</option>
<option>03-28</option>
<option>03-25</option>
<option>03-18</option>
<option>03-17</option>
<option>03-15</option>
<option>03-12</option>
<option>03-11</option>
<option>03-09</option>
<option>03-07</option>
<option>03-06</option>
<option>03-05</option>
<option>03-04</option>
<option>03-03</option>
<option>03-01</option>
<option>02-29</option>
<option>02-28</option>
<option>02-21</option>
<option>02-20</option>
<option>02-17</option>
<option>02-16</option>
<option>02-15</option>
<option>02-12</option>
<option>02-01</option>
<option>01-29</option>
<option>01-28</option>
<option>01-22</option>
</select>
</td>
</tr></table><br/>
<center><b><big><big>Changes and Additions to CppAD During 2004</big></big></b></center>
<br/>
<b><big><a name="Introduction" id="Introduction">Introduction</a></big></b>
<br/>
This section contains a list of the changes plus future plans for
CppAD during 2004
(in reverse order by date).
The purpose of this section is to
assist you in learning about changes between various versions.
<br/>
<br/>
<b><big><a name="12-11" id="12-11">12-11</a></big></b>
<br/>
The documentation for the CppAD error macros was improved.
The package title in <a href="cppad.xml" target="_top"><span style='white-space: nowrap'>cppad</span></a>
was changed.
The documentation for <a href="cppad_vector.xml" target="_top"><span style='white-space: nowrap'>CppAD::vector</span></a>
was improved and the corresponding source code
<code><font color="blue">cppad/vector.hpp</font></code> was included.
<br/>
<br/>
<b><big><a name="12-09" id="12-09">12-09</a></big></b>
<br/>
The <a href="lusolve.xml" target="_top"><span style='white-space: nowrap'>LuSolve</span></a>
and <code><font color="blue">OdeRunge</font></code> source code
was modified to make the more in line with the introduction
to C++ AD book
(<code><font color="blue">OdeRunge</font></code> has been replaced by <a href="runge45.xml" target="_top"><span style='white-space: nowrap'>Runge45</span></a>
).
In addition, the examples <code><font color="blue">OdeRunge.cpp</font></code> and
<a href="lu_solve.cpp.xml" target="_top"><span style='white-space: nowrap'>lu_solve.cpp</span></a>
were modified to make the simpler.
(The more complex version of <code><font color="blue">OdeRunge.cpp</font></code>
was moved to the <code><font color="blue">TestMore</font></code> directory.)
<br/>
<br/>
<b><big><a name="12-03" id="12-03">12-03</a></big></b>
<br/>
The <a href="poly.xml" target="_top"><span style='white-space: nowrap'>Poly</span></a>
documentation and source code were modified to
make them more in line with the introduction to C++ AD book.
<br/>
<br/>
<b><big><a name="11-17" id="11-17">11-17</a></big></b>
<br/>
Changing to Autoconf and Automake on
<a href="whats_new_04.xml#08-24" target="_top"><span style='white-space: nowrap'>08-24</span></a>
mistakenly forgot
the <code><font color="blue">-Wall</font></code> compiler switch (all warnings).
This has been added and the corresponding warnings
have been fixed.
<br/>
<br/>
<b><big><a name="11-16" id="11-16">11-16</a></big></b>
<br/>
The 11-15 Debug version would not compile under Visual C++ version 7.0
because a declaration of <code><font color="blue">LessThanOrZero</font></code> was missing.
This has been fixed.
<br/>
<br/>
<b><big><a name="11-15" id="11-15">11-15</a></big></b>
<br/>
The <a href="forone.xml" target="_top"><span style='white-space: nowrap'>ForOne</span></a>
and <a href="revone.xml" target="_top"><span style='white-space: nowrap'>RevOne</span></a>
easy to use <a href="drivers.xml" target="_top"><span style='white-space: nowrap'>drivers</span></a>
were added.
<br/>
<br/>
<b><big><a name="11-14" id="11-14">11-14</a></big></b>
<br/>
The notation in the <a href="adfun.xml" target="_top"><span style='white-space: nowrap'>ADFun</span></a>
sections was changed
to make the <a href="forward.xml" target="_top"><span style='white-space: nowrap'>Forward</span></a>
and <a href="reverse.xml" target="_top"><span style='white-space: nowrap'>Reverse</span></a>
routines
easier to use.
<br/>
<br/>
<b><big><a name="11-13" id="11-13">11-13</a></big></b>
<br/>
The Taylor coefficient vector and matrix notation was folded into
just <a href="glossary.xml#Taylor Coefficient" target="_top"><span style='white-space: nowrap'>Taylor coefficients</span></a>
.
<br/>
<br/>
<b><big><a name="11-12" id="11-12">11-12</a></big></b>
<br/>
If <code><font color="blue">NDEBUG</font></code> is not defined during compile time,
all
<code><font color="blue"><span style='white-space: nowrap'>AD<</span></font><i><font color="black"><span style='white-space: nowrap'>Base</span></font></i><font color="blue"><span style='white-space: nowrap'>></span></font></code>
<a href="compare.xml" target="_top"><span style='white-space: nowrap'>comparison</span></a>
operations are checked during
<a href="forward_zero.xml" target="_top"><span style='white-space: nowrap'>zero order</span></a>
forward mode calculations.
The
<a href="comparechange.xml" target="_top"><span style='white-space: nowrap'>CompareChange</span></a>
function
returns the number of comparison operations that have changed.
<br/>
<br/>
<b><big><a name="11-10" id="11-10">11-10</a></big></b>
<br/>
The <a href="get_started.cpp.xml" target="_top"><span style='white-space: nowrap'>get_started.cpp</span></a>
example was changed to use the
<a href="jacobian.xml" target="_top"><span style='white-space: nowrap'>Jacobian</span></a>
driver.
In addition, more <a href="_index.xml" target="_top"><span style='white-space: nowrap'>index</span></a>
entries,
that point to the <a href="drivers.xml" target="_top"><span style='white-space: nowrap'>easy to use drivers</span></a>
,
were added.
<br/>
<br/>
<b><big><a name="11-04" id="11-04">11-04</a></big></b>
<br/>
The Microsoft Visual Studio
project file <code><font color="blue">example/Example.dsp/</font></code> was missing some
new examples that needed to be linked in
the install windows procedure.
This has been fixed.
<br/>
<br/>
<b><big><a name="11-02" id="11-02">11-02</a></big></b>
<br/>
The <a href="installunix.xml" target="_top"><span style='white-space: nowrap'>unix installation</span></a>
required the user
to touch the files to get the dates in proper order.
This is no longer necessary.
<br/>
<br/>
<b><big><a name="11-01" id="11-01">11-01</a></big></b>
<br/>
Some of the dependency directories and files, for example
<code><font color="blue">PrintFor/.deps</font></code> and
<code><font color="blue">PrintFor/.deps/PrintFor.Po</font></code> had an extra <code><font color="blue">?</font></code>
at the end of their names.
This seems to have been fixed by using a newer version of the autoconf
and automake tools.
<br/>
<br/>
<b><big><a name="10-29" id="10-29">10-29</a></big></b>
<br/>
Add the example and test <a href="simple_vector.cpp.xml" target="_top"><span style='white-space: nowrap'>simple_vector.cpp</span></a>
to the <a href="simplevector.xml" target="_top"><span style='white-space: nowrap'>SimpleVector</span></a>
documentation.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The specifications for
<a href="preprocessor.xml" target="_top"><span style='white-space: nowrap'>preprocessor symbols</span></a>
state that all the CppAD preprocessor symbols
begin with <code><font color="blue">CppAD</font></code>
(so they do not conflict with other packages).
Some preprocessor symbols in the file <code><font color="blue">cppad/config.h</font></code> did
began with <code><font color="blue">WITH_</font></code>.
This has been fixed.
<br/>
<br/>
<b><big><a name="10-28" id="10-28">10-28</a></big></b>
<br/>
The examples
<a href="hes_lu_det.cpp.xml" target="_top"><span style='white-space: nowrap'>hes_lu_det.cpp</span></a>
,
<a href="hes_minor_det.cpp.xml" target="_top"><span style='white-space: nowrap'>hes_minor_det.cpp</span></a>
,
<a href="jac_lu_det.cpp.xml" target="_top"><span style='white-space: nowrap'>jac_lu_det.cpp</span></a>
,
and
<a href="jac_minor_det.cpp.xml" target="_top"><span style='white-space: nowrap'>jac_minor_det.cpp</span></a>
used the negative of a <code><font color="blue">size_t</font></code> value.
The value has been changed to an <code><font color="blue">int</font></code>.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The <a href="cppad_vector.xml" target="_top"><span style='white-space: nowrap'>CppAD::vector</span></a>
template class
was converted into a library routine so it can be used
separately from the rest of CppAD.
<br/>
<br/>
<b><big><a name="10-27" id="10-27">10-27</a></big></b>
<br/>
The <a href="printfor.xml" target="_top"><span style='white-space: nowrap'>PrintFor</span></a>
example was moved to its own directory
because the conversion from VC 6.0 to VC 7.0 projects
did not work when there were multiple executables in one project file.
The <a href="install.xml" target="_top"><span style='white-space: nowrap'>install</span></a>
instructions were modified to reflect this change.
<br/>
<br/>
<b><big><a name="10-21" id="10-21">10-21</a></big></b>
<br/>
One declaration (for the <a href="value.xml" target="_top"><span style='white-space: nowrap'>Value</span></a>
function) was missing
from the file <code><font color="blue">cppad/local/Declare.h</font></code>.
This has been added and CppAD should now compile and run
under both Microsoft VC 6.0 and 7.0.
<br/>
<br/>
<b><big><a name="10-19" id="10-19">10-19</a></big></b>
<br/>
The current version of CppAD has a problem compiling under Microsoft
Visual C++ version 7.0 (it compiles and works under version 6.0).
The problem appears to be due to a closer agreement between VC 7.0 and the
C++ standard for declaring templates functions as friends.
Some friend declarations were removed and others were made more specific
in order to migrate the a version that will compile and run using VC 7.0.
<br/>
<br/>
<b><big><a name="10-16" id="10-16">10-16</a></big></b>
<br/>
The example <a href="compare.cpp.xml" target="_top"><span style='white-space: nowrap'>compare.cpp</span></a>
displayed the text from
<a href="bool_fun.cpp.xml" target="_top"><span style='white-space: nowrap'>bool_fun.cpp</span></a>
by mistake.
This has been fixed.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The <a href="compare.xml" target="_top"><span style='white-space: nowrap'>Compare</span></a>
operators have been extended to work with
<code><font color="blue">int</font></code> operands.
<br/>
<br/>
<b><big><a name="10-06" id="10-06">10-06</a></big></b>
<br/>
The test
<code><font color="blue">TapeDetLu</font></code> was added to <code><font color="blue">speed_cppad/DetLuSpeed.cpp</font></code>
and
<code><font color="blue">TapeDetMinor</font></code> was added to <code><font color="blue">speed_cppad/DetMinorSpeed.cpp</font></code>.
These tests just tape the calculations without computing any derivatives.
Using this, and the other tests, one can to separate the taping time
from the derivative calculation time.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The
windows installation steps
do not build a <code><font color="blue">config.h</font></code> file.
Hence a default <code><font color="blue">config.h</font></code> file was added to the
distribution for use with Microsoft Visual Studio.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The <code><font color="blue">Distribute</font></code> section of the
developer documentation was brought up to date.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>Links to the ADOLC and FADBAD download pages were added
to the <a href="installunix.xml" target="_top"><span style='white-space: nowrap'>unix installation</span></a>
instructions.
<br/>
<br/>
<b><big><a name="09-29" id="09-29">09-29</a></big></b>
<br/>
The include files for the <a href="library.xml" target="_top"><span style='white-space: nowrap'>library</span></a>
are now included
by the root file <code><font color="blue">cppad/cppad.hpp</font></code>.
They can still be included individually with out the rest of
the CppAD package.
<br/>
<br/>
<b><big><a name="09-26" id="09-26">09-26</a></big></b>
<br/>
The routine <code><font color="blue">OdeRunge</font></code> was modified
so that it will now integrate functions of a complex arguments.
This was done by removing
all uses of greater than and less than comparisons were removed.
(<code><font color="blue">OdeRunge</font></code> has been replaced by <a href="runge45.xml" target="_top"><span style='white-space: nowrap'>Runge45</span></a>
).
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The changes on <a href="whats_new_04.xml#09-21" target="_top"><span style='white-space: nowrap'>09-21</span></a>
did not fix all
the file date and time problems; i.e., automake was still running
in response to the <a href="installunix.xml" target="_top"><span style='white-space: nowrap'>unix installation</span></a>
<code><font color="blue">make</font></code> command.
<br/>
<br/>
<b><big><a name="09-23" id="09-23">09-23</a></big></b>
<br/>
There was a reference to
<code><i><font color="black"><span style='white-space: nowrap'>B</span></font></i></code>
that should have been
<code><i><font color="black"><span style='white-space: nowrap'>X</span></font></i></code>
in the description of the
<a href="lusolve.xml#X" target="_top"><span style='white-space: nowrap'>X</span></a>
argument of <code><font color="blue">LuSolve</font></code>.
This has been fixed.
<br/>
<br/>
<b><big><a name="09-21" id="09-21">09-21</a></big></b>
<br/>
The <a href="condexp.xml" target="_top"><span style='white-space: nowrap'>CondExp</span></a>
function has been modified so that it works properly
for
<code><font color="blue"><span style='white-space: nowrap'>AD< AD<</span></font><i><font color="black"><span style='white-space: nowrap'>Base</span></font></i><font color="blue"><span style='white-space: nowrap'>> ></span></font></code>
types; i.e.,
it now works for multiple levels of taping.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The date of the files <code><font color="blue">aclocal.m4</font></code> and <code><font color="blue">config.h.in</font></code>
were later than the date of top level <code><font color="blue">Makefile.am</font></code>.
This caused the <code><font color="blue">make</font></code> command during the
<a href="installunix.xml" target="_top"><span style='white-space: nowrap'>unix installation</span></a>
to try to run <code><font color="blue">autoconf</font></code>
and this did not work on systems with very old versions of <code><font color="blue">autoconf</font></code>.
This has been fixed.
<br/>
<br/>
<b><big><a name="09-13" id="09-13">09-13</a></big></b>
<br/>
The examples that are specific to an operation were moved
to be below that operation in the documentation tree.
For example
<a href="add.cpp.xml" target="_top"><span style='white-space: nowrap'>add.cpp</span></a>
is below <a href="ad_binary.xml" target="_top"><span style='white-space: nowrap'>ad_binary</span></a>
in the documentation tree.
<br/>
<br/>
<b><big><a name="09-10" id="09-10">09-10</a></big></b>
<br/>
The version released on 04-09-09 did not have the
new file <code><font color="blue">PrintFor.h</font></code> in <code><font color="blue">cppad/local</font></code>.
This has been fixed.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The
<code><i><font color="black"><span style='white-space: nowrap'>Base</span></font></i></code>
type requirements were simplified.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The <a href="installunix.xml" target="_top"><span style='white-space: nowrap'>Unix installation</span></a>
instructions
were modified so just one make command was executed at the top level.
This was necessary because the order of the makes is now important
(as previously suggested, the makes did not work properly).
<br/>
<br/>
<b><big><a name="09-09" id="09-09">09-09</a></big></b>
<br/>
The <a href="printfor.xml" target="_top"><span style='white-space: nowrap'>PrintFor</span></a>
function was added so that
users can debug the computation of function values
at arguments that are different from those used when taping.
<br/>
<br/>
<b><big><a name="09-07" id="09-07">09-07</a></big></b>
<br/>
In the <a href="installunix.xml" target="_top"><span style='white-space: nowrap'>Unix installation</span></a>
instructions
place <code><font color="blue">./</font></code> in front of current directory program names; for example,
<code><font color="blue">./GetStarted</font></code> instead of <code><font color="blue">GetStarted</font></code>
(because some unix systems do not have the current directory
in the default executable path).
<br/>
<br/>
<b><big><a name="09-04" id="09-04">09-04</a></big></b>
<br/>
A library containing the
<a href="speedtest.xml" target="_top"><span style='white-space: nowrap'>SpeedTest</span></a>
and <a href="nearequal.xml" target="_top"><span style='white-space: nowrap'>NearEqual</span></a>
object files
was added to the distribution.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>All of the include files of the form
<code><font color="blue"><span style='white-space: nowrap'><cppad/library/</span></font><i><font color="black"><span style='white-space: nowrap'>name</span></font></i><font color="blue"><span style='white-space: nowrap'>.h></span></font></code>
were moved to
<code><font color="blue"><span style='white-space: nowrap'><cppad/</span></font><i><font color="black"><span style='white-space: nowrap'>name</span></font></i><font color="blue"><span style='white-space: nowrap'>.h></span></font></code>
.
<br/>
<br/>
<b><big><a name="09-02" id="09-02">09-02</a></big></b>
<br/>
Some more messages were added to the output of <code><font color="blue">configure</font></code>
during the <a href="installunix.xml" target="_top"><span style='white-space: nowrap'>Unix installation</span></a>
.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The suggested compression program during
Windows installation
was changed from
<a href="http://www.7-zip.org" target="_top"><span style='white-space: nowrap'>7-zip</span></a>
to
<a href="http://www.winzip.com" target="_top"><span style='white-space: nowrap'>WinZip</span></a>
.
<br/>
<br/>
<b><big><a name="08-27" id="08-27">08-27</a></big></b>
<br/>
The error messages printed by the default version of
the CppAD error macros had <code><font color="blue">YY-MM-DD</font></code> in place of the
date for the current version.
This has been fixed.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>All the correctness tests are now compiled with the <code><font color="blue">-g</font></code>
command line option
(the speed tests are still compiled with <code><font color="blue">-O2 -DNDEBUG</font></code>).
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The <a href="install.xml" target="_top"><span style='white-space: nowrap'>installation instructions</span></a>
for
Unix and Windows were split into separate pages.
<br/>
<br/>
<b><big><a name="08-25" id="08-25">08-25</a></big></b>
<br/>
The <a href="install.xml" target="_top"><span style='white-space: nowrap'>installation</span></a>
now automates the replacement
of <a href="cppad_vector.xml" target="_top"><span style='white-space: nowrap'>CppAD::vector</span></a>
by
either the <code><font color="blue">std::vector</font></code>
or <code><font color="blue">boost::numeric::ublas::vector</font></code>.
<br/>
<br/>
<b><big><a name="08-24" id="08-24">08-24</a></big></b>
<br/>
This date marks the first release that uses
the Gnu tools Autoconf and Automake.
This automates the building of the make files for the
<a href="install.xml" target="_top"><span style='white-space: nowrap'>installation</span></a>
and is the standard
way to distribute open source software.
This caused some organizational changes,
for example, the <a href="get_started.cpp.xml" target="_top"><span style='white-space: nowrap'>GetStarted</span></a>
example now
has its own directory and
the distribution directory is named
<code><font color="blue"><span style='white-space: nowrap'><br/>
     cppad-</span></font><i><font color="black"><span style='white-space: nowrap'>yy</span></font></i><font color="blue"><span style='white-space: nowrap'>-</span></font><i><font color="black"><span style='white-space: nowrap'>mm</span></font></i><font color="blue"><span style='white-space: nowrap'>-</span></font><i><font color="black"><span style='white-space: nowrap'>dd</span></font></i><font color="blue"><span style='white-space: nowrap'><br/>
</span></font></code>
where
<code><i><font color="black"><span style='white-space: nowrap'>yy</span></font></i><font color="blue"><span style='white-space: nowrap'>-</span></font><i><font color="black"><span style='white-space: nowrap'>mm</span></font></i><font color="blue"><span style='white-space: nowrap'>-</span></font><i><font color="black"><span style='white-space: nowrap'>dd</span></font></i></code>
is the year, month and date
of the distribution.
(Note the distribution directory is different from the directory
where CppAD is finally installed.)
<br/>
<br/>
<b><big><a name="08-12" id="08-12">08-12</a></big></b>
<br/>
Move <code><font color="blue">OdeExplicit</font></code> into the <code><font color="blue">cppad/library/</font></code> directory.
In addition, change it so that the vector type was a template argument; i.e.,
works for any type of vector (not just <code><font color="blue">CppADvector</font></code>).
<br/>
<br/>
<b><big><a name="07-31" id="07-31">07-31</a></big></b>
<br/>
Move <a href="lusolve.xml" target="_top"><span style='white-space: nowrap'>LuSolve</span></a>
into the <code><font color="blue">cppad/library/</font></code> directory.
In addition, change it so that the vector type was a template argument; i.e.,
works for any type of vector (not just <code><font color="blue">CppADvector</font></code>).
<br/>
<br/>
<b><big><a name="07-08" id="07-08">07-08</a></big></b>
<br/>
The file <code><font color="blue">cppad/example/NearEqual.h</font></code> has been moved
to <code><font color="blue">cppad/example/NearEqualExt.h</font></code> because it contains
extensions of the <a href="nearequal.xml" target="_top"><span style='white-space: nowrap'>NearEqual</span></a>
routine to <code><font color="blue">AD</font></code> types.
<br/>
<br/>
<b><big><a name="07-07" id="07-07">07-07</a></big></b>
<br/>
The <code><font color="blue">double</font></code> and <code><font color="blue">std::complex<double></font></code>
cases for the <a href="nearequal.xml" target="_top"><span style='white-space: nowrap'>NearEqual</span></a>
routine arguments
has been moved to the general purpose <a href="library.xml" target="_top"><span style='white-space: nowrap'>library</span></a>
.
<br/>
<br/>
<b><big><a name="07-03" id="07-03">07-03</a></big></b>
<br/>
The CppAD error macros names
<code><font color="blue">CppADExternalAssert</font></code> and <code><font color="blue">CppADInternalAssert</font></code>
were changed to
<code><font color="blue">CppADUsageError</font></code> and <code><font color="blue">CppADUnknownError</font></code>.
The <a href="speedtest.xml" target="_top"><span style='white-space: nowrap'>SpeedTest</span></a>
routine was changed to use <code><font color="blue">CppADUsageError</font></code>
instead of a C assert.
<br/>
<br/>
<b><big><a name="07-02" id="07-02">07-02</a></big></b>
<br/>
The <a href="speedtest.xml" target="_top"><span style='white-space: nowrap'>SpeedTest</span></a>
output was improved so that the columns of
values line up. Previously, this was not the case when
the number of digits in the size changed.
<br/>
<br/>
<b><big><a name="06-29" id="06-29">06-29</a></big></b>
<br/>
Added code to trap and report memory allocation errors during
<code><font color="blue">new</font></code> operations.
<br/>
<br/>
<b><big><a name="06-25" id="06-25">06-25</a></big></b>
<br/>
A discussion of the order dependence of the
<a href="ad_assign.xml" target="_top"><span style='white-space: nowrap'>assignment</span></a>
operator
and the
<a href="independent.xml" target="_top"><span style='white-space: nowrap'>independent function</span></a>
was added to the
<a href="faq.xml#Assignment and Independent" target="_top"><span style='white-space: nowrap'>Faq</span></a>
.
In addition,
a similar discussion
was added to the documentation for the
<a href="independent.xml" target="_top"><span style='white-space: nowrap'>Independent</span></a>
function.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The definition of a
<a href="glossary.xml#Parameter" target="_top"><span style='white-space: nowrap'>parameter</span></a>
and
<a href="glossary.xml#Variable" target="_top"><span style='white-space: nowrap'>variable</span></a>
were changed to reflect that fact that
these are time dependent (current) properties
of an
<code><font color="blue"><span style='white-space: nowrap'>AD<</span></font><i><font color="black"><span style='white-space: nowrap'>Base</span></font></i><font color="blue"><span style='white-space: nowrap'>></span></font></code>
object.
<br/>
<br/>
<b><big><a name="06-12" id="06-12">06-12</a></big></b>
<br/>
All of the
<a href="arithmetic.xml" target="_top"><span style='white-space: nowrap'>arithmetic operators</span></a>
(except for the unary operators)
can now accept <code><font color="blue">int</font></code> arguments.
The documentation for these arguments has been changed to reflect this.
In addition,
the corresponding test cases have been changed to test this and to
test high order derivative cases.
The old versions of these tests were moved into the
<code><font color="blue">cppad/Test</font></code> directory.
<br/>
<br/>
<b><big><a name="06-04" id="06-04">06-04</a></big></b>
<br/>
The <a href="atan2.xml" target="_top"><span style='white-space: nowrap'>atan2</span></a>
function was added.
<br/>
<br/>
<b><big><a name="06-03" id="06-03">06-03</a></big></b>
<br/>
The <code><font color="blue">asin</font></code> and <code><font color="blue">acos</font></code>
<a href="std_math_ad.xml" target="_top"><span style='white-space: nowrap'>AD standard math unary functions</span></a>
were added.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>There was a bug the reverse mode theory and calculation of
derivatives of <a href="std_math_ad.xml" target="_top"><span style='white-space: nowrap'>sqrt</span></a>
for fourth and higher orders.
This has been fixed.
In addition,
the following examples have been changed
so that they test derivative up to fifth order:
<a href="asin.cpp.xml" target="_top"><span style='white-space: nowrap'>asin</span></a>
,
<a href="atan.cpp.xml" target="_top"><span style='white-space: nowrap'>atan</span></a>
,
<a href="cos.cpp.xml" target="_top"><span style='white-space: nowrap'>cos</span></a>
,
<a href="exp.cpp.xml" target="_top"><span style='white-space: nowrap'>exp</span></a>
,
<a href="log.cpp.xml" target="_top"><span style='white-space: nowrap'>log</span></a>
,
<a href="sin.cpp.xml" target="_top"><span style='white-space: nowrap'>sin</span></a>
,
<a href="sqrt.cpp.xml" target="_top"><span style='white-space: nowrap'>sqrt</span></a>
.
<br/>
<br/>
<b><big><a name="06-01" id="06-01">06-01</a></big></b>
<br/>
There was a bug in the <a href="std_math_ad.xml" target="_top"><span style='white-space: nowrap'>atan</span></a>
function
<a href="forward.xml" target="_top"><span style='white-space: nowrap'>forward mode</span></a>
calculations for Taylor coefficient
orders greater than two.
This has been fixed.
<br/>
<br/>
<b><big><a name="05-30" id="05-30">05-30</a></big></b>
<br/>
The <a href="sin.cpp.xml" target="_top"><span style='white-space: nowrap'>sin</span></a>
and <a href="cos.cpp.xml" target="_top"><span style='white-space: nowrap'>cos</span></a>
examples were
changed so that they tested higher order derivatives.
<br/>
<br/>
<b><big><a name="05-29" id="05-29">05-29</a></big></b>
<br/>
The forward mode recursion formulas for each of the
<a href="forwardtheory.xml#Standard Math Functions.Cases that Apply Recursion Above" target="_top"><span style='white-space: nowrap'>standard math functions</span></a>
has been split into separate sections.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>A roman (instead of italic) font was used for the name of
for the name of each of the standard math functions
in the assumption statements below the section
for the standard math functions.
For example,
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"><mrow>
<mi>sin</mi>
<mo stretchy="false">(</mo>
<mi mathvariant='italic'>x</mi>
<mo stretchy="false">)</mo>
</mrow></math>
instead of
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"><mrow>
<mi mathvariant='italic'>sin</mi>
<mo stretchy="false">(</mo>
<mi mathvariant='italic'>x</mi>
<mo stretchy="false">)</mo>
</mrow></math>
.
<br/>
<br/>
<b><big><a name="05-26" id="05-26">05-26</a></big></b>
<br/>
In the documentation for <a href="poly.xml" target="_top"><span style='white-space: nowrap'>Poly</span></a>
,
the reference to <code><font color="blue">example/Poly.h</font></code>
was corrected to <code><font color="blue">cppad/library/Poly.h</font></code>.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>In the documentation for <a href="speedtest.xml" target="_top"><span style='white-space: nowrap'>SpeedTest</span></a>
,
the reference to <code><font color="blue">Lib/SpeedTest.h</font></code>
was corrected to <code><font color="blue">cppad/library/SpeedTest.h</font></code>.
In addition, the example case was corrected.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>In <a href="reverse.xml" target="_top"><span style='white-space: nowrap'>Reverse</span></a>
, the definition for
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"><mrow>
<mi mathvariant='italic'>U</mi>
<mo stretchy="false">(</mo>
<mi mathvariant='italic'>t</mi>
<mo stretchy="false">,</mo>
<mi mathvariant='italic'>u</mi>
<mo stretchy="false">)</mo>
</mrow></math>
had
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"><mrow>
<msup><mi mathvariant='italic'>t</mi>
<mi mathvariant='italic'>p</mi>
</msup>
<mn>-1</mn>
</mrow></math>
where it should have had
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"><mrow>
<msup><mi mathvariant='italic'>t</mi>
<mrow><mi mathvariant='italic'>p</mi>
<mn>-1</mn>
</mrow>
</msup>
</mrow></math>
.
This has been fixed.
<br/>
<br/>
<b><big><a name="05-25" id="05-25">05-25</a></big></b>
<br/>
The special case where the second argument to the <a href="pow.xml" target="_top"><span style='white-space: nowrap'>pow</span></a>
function is an
<code><font color="blue">int</font></code> has been added.
<br/>
<br/>
<b><big><a name="05-14" id="05-14">05-14</a></big></b>
<br/>
Change all of the include syntax
<code><font color="blue"><span style='white-space: nowrap'><br/>
     # include "</span></font><i><font color="black"><span style='white-space: nowrap'>filename</span></font></i><font color="blue"><span style='white-space: nowrap'>"<br/>
</span></font></code>
to the syntax
<code><font color="blue"><span style='white-space: nowrap'><br/>
     # include <</span></font><i><font color="black"><span style='white-space: nowrap'>filename</span></font></i><font color="blue"><span style='white-space: nowrap'>><br/>
</span></font></code>
so that examples and other use better reflect how one would use CppAD after
it was installed in a standard include directory; for example
<code><font color="blue">/usr/local/include/cppad</font></code>.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The user documentation was moved from the directory
<code><font color="blue">cppad/User</font></code> to the directory <code><font color="blue">cppad/Doc</font></code>.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The directory <code><font color="blue">cppad/Lib</font></code> was moved to <code><font color="blue">cppad/library</font></code>
to reflect that fact that it is not what one expects in a standard
<code><font color="blue">lib</font></code> directory or a standard <code><font color="blue">include</font></code> directory.
<br/>
<br/>
<b><big><a name="05-12" id="05-12">05-12</a></big></b>
<br/>
The string <code><font color="blue">YY-MM-DD</font></code> in the preprocessor symbol <code><font color="blue">CppADVersion</font></code>
was not being replaced by the current date during distribution.
This resulted in the <code><font color="blue">CppADExternalAssert</font></code> macro printing
<code><font color="blue">YY-MM-DD</font></code> where is should have printed the date of distribution.
This has been fixed.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>All of the include commands of the form
<code><font color="blue"><span style='white-space: nowrap'><br/>
     # include "include/</span></font><i><font color="black"><span style='white-space: nowrap'>name</span></font></i><font color="blue"><span style='white-space: nowrap'>.h"<br/>
     # include "lib/</span></font><i><font color="black"><span style='white-space: nowrap'>name</span></font></i><font color="blue"><span style='white-space: nowrap'>.h"<br/>
</span></font></code>
have been changed to the form
<code><font color="blue"><span style='white-space: nowrap'><br/>
     # include "cppad/include/</span></font><i><font color="black"><span style='white-space: nowrap'>name</span></font></i><font color="blue"><span style='white-space: nowrap'>.h"<br/>
     # include "cppad/lib/</span></font><i><font color="black"><span style='white-space: nowrap'>name</span></font></i><font color="blue"><span style='white-space: nowrap'>.h"<br/>
</span></font></code>
This will avoid mistakenly loading a file from another package
that is in the set of directories being searched by the compiler.
It is therefore necessary to specify that the directory above the
<code><font color="blue">CppAD</font></code> directory be searched by the compiler.
For example,
if <code><font color="blue">CppAD</font></code> is in <code><font color="blue">/usr/local/cppad</font></code>,
you must specify that <code><font color="blue">/usr/local</font></code> be searched by the compiler.
Note that if <code><font color="blue">/usr/local/cppad/</font></code> is no longer searched,
you will have to change
<code><font color='blue'><pre style='display:inline'>
# include "cppad.hpp"
</pre></font></code>
to
<code><font color='blue'><pre style='display:inline'>
# include "cppad/cppad.hpp"
</pre></font></code>
.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The window <code><font color="blue">nmake</font></code> file <code><font color="blue">Speed/Speed.mak</font></code> was out of date.
This has been fixed.
<br/>
<br/>
<b><big><a name="05-09" id="05-09">05-09</a></big></b>
<br/>
Move <a href="poly.xml" target="_top"><span style='white-space: nowrap'>Poly</span></a>
and <a href="speedtest.xml" target="_top"><span style='white-space: nowrap'>SpeedTest</span></a>
into the
<code><font color="blue">cppad/Lib</font></code> directory and the <code><font color="blue">CppAD</font></code> namespace.
<br/>
<br/>
<b><big><a name="05-07" id="05-07">05-07</a></big></b>
<br/>
The <a href="div.cpp.xml" target="_top"><span style='white-space: nowrap'>divide operator tests</span></a>
were extended to
include a second order derivative calculation using reverse mode.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The <a href="poly.xml" target="_top"><span style='white-space: nowrap'>Poly</span></a>
routine was modified to be more efficient in the
derivative case. In addition, it was changed to use an arbitrary
vector for the coefficients (not just a <code><font color="blue">CppADvector</font></code>).
<br/>
<br/>
<b><big><a name="05-04" id="05-04">05-04</a></big></b>
<br/>
A reloading of the data base
caused the files <code><font color="blue">include/atan.h</font></code> and <code><font color="blue">include/cos.h</font></code> to be
mistakenly started with lower case letters.
These have been moved to <code><font color="blue">include/Atan.h</font></code> and <code><font color="blue">include/Cos.h</font></code>
respectively.
<br/>
<br/>
<b><big><a name="05-03" id="05-03">05-03</a></big></b>
<br/>
The <a href="reverse.xml" target="_top"><span style='white-space: nowrap'>Reverse</span></a>
mode calculations for
<a href="condexp.xml" target="_top"><span style='white-space: nowrap'>conditional expressions</span></a>
were mistakenly left out.
This has been fixed.
<br/>
<br/>
<b><big><a name="04-29" id="04-29">04-29</a></big></b>
<br/>
The unary functions, such as <a href="std_math_ad.xml" target="_top"><span style='white-space: nowrap'>sin</span></a>
and <a href="std_math_ad.xml" target="_top"><span style='white-space: nowrap'>cos</span></a>
,
were not defined for elements of an <a href="vecad.xml" target="_top"><span style='white-space: nowrap'>VecAD</span></a>
vector.
This has been fixed.
<br/>
<br/>
<b><big><a name="04-28" id="04-28">04-28</a></big></b>
<br/>
The operator <a href="cppad_vector.xml#Output" target="_top"><span style='white-space: nowrap'><<</span></a>
was added to the
default <a href="test_vector.xml" target="_top"><span style='white-space: nowrap'>test_vector</span></a>
template class.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>A FADBAD correctness and speed comparison with CppAD
was added.
<br/>
<br/>
<b><big><a name="04-25" id="04-25">04-25</a></big></b>
<br/>
Factor out common sub-expressions in order to make
<a href="lu_vec_ad.cpp.xml" target="_top"><span style='white-space: nowrap'>lu_vec_ad.cpp</span></a>
faster.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>Convert description
from C++ Automatic Differentiation to C++ Algorithmic Differentiation.
<br/>
<br/>
<b><big><a name="04-24" id="04-24">04-24</a></big></b>
<br/>
The <a href="vecad.xml" target="_top"><span style='white-space: nowrap'>VecAD</span></a>
element class is no longer
a derived class of the <a href="ad.xml" target="_top"><span style='white-space: nowrap'>AD</span></a>
class.
This enabled a decrease in tape memory
and an increase in the speed for <a href="vecad.xml" target="_top"><span style='white-space: nowrap'>VecAD</span></a>
operations.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The <a href="std_math_ad.xml" target="_top"><span style='white-space: nowrap'>log10</span></a>
function was added.
<br/>
<br/>
<b><big><a name="04-22" id="04-22">04-22</a></big></b>
<br/>
Add <a href="condexp.xml" target="_top"><span style='white-space: nowrap'>CondExp</span></a>
and use it to speed up <a href="lu_vec_ad.cpp.xml" target="_top"><span style='white-space: nowrap'>lu_vec_ad.cpp</span></a>
.
<br/>
<br/>
<b><big><a name="04-21" id="04-21">04-21</a></big></b>
<br/>
Use <a href="abs.xml" target="_top"><span style='white-space: nowrap'>abs</span></a>
to speed up <a href="lu_vec_ad.cpp.xml" target="_top"><span style='white-space: nowrap'>lu_vec_ad.cpp</span></a>
.
<br/>
<br/>
<b><big><a name="04-20" id="04-20">04-20</a></big></b>
<br/>
The <a href="abs.xml" target="_top"><span style='white-space: nowrap'>absolute value</span></a>
function was added.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The value
<code><i><font color="black"><span style='white-space: nowrap'>n</span></font></i></code>
for
<code><font color="blue">OdeExplicit</font></code> and <code><font color="blue">OdeImplicit</font></code>
is deduced from the argument
<code><i><font color="black"><span style='white-space: nowrap'>x0</span></font></i></code>
and is not passed
as a separate argument.
This documentation has been fixed to this effect.
<br/>
<br/>
<b><big><a name="04-19" id="04-19">04-19</a></big></b>
<br/>
The <a href="compute_assign.xml" target="_top"><span style='white-space: nowrap'>+=</span></a>
operator did not function correctly
when the left hand operand was a
<a href="glossary.xml#Parameter" target="_top"><span style='white-space: nowrap'>parameter</span></a>
and the right hand operand was a variable
(found by <a href="mailto:magister@u.washington.edu" target="_top"><span style='white-space: nowrap'>Mike Dodds</span></a>
).
This has been fixed.
<br/>
<br/>
<b><big><a name="04-09" id="04-09">04-09</a></big></b>
<br/>
Adding special operators for using parameters to index <code><font color="blue">VecAD</font></code> objects
increased the speed and reduced the memory requirements (by about 20%) for
the <a href="vecad.xml" target="_top"><span style='white-space: nowrap'>VecAD</span></a>
case in the <code><font color="blue">speed_cppad/LuSolveSpeed.cpp/</font></code> test.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The <a href="vecad.xml" target="_top"><span style='white-space: nowrap'>VecAD</span></a>
objects are not being handled correctly by the
<a href="reverse.xml" target="_top"><span style='white-space: nowrap'>Reverse</span></a>
function.
The <code><font color="blue">VecAD</font></code> test was extended to demonstrate the problem
and the problem was fixed
(it is now part of <code><font color="blue">TestMore/VecAD</font></code>).
<br/>
<br/>
<b><big><a name="04-08" id="04-08">04-08</a></big></b>
<br/>
The example <a href="lu_vec_ad_ok.cpp.xml" target="_top"><span style='white-space: nowrap'>lu_vec_ad_ok.cpp</span></a>
uses <a href="vecad.xml" target="_top"><span style='white-space: nowrap'>VecAD</span></a>
to executes different pivoting operations
during the solution of linear equations with out having to retape.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The speed test <code><font color="blue">speed_cppad/LuSolveSpeed.cpp/</font></code> has been added.
It shows that the initial implementation of <a href="vecad.xml" target="_top"><span style='white-space: nowrap'>VecAD</span></a>
is slow
(and uses a lot of memory.)
In fact,
it is faster to use <a href="lusolve.xml" target="_top"><span style='white-space: nowrap'>LuSolve</span></a>
and retape for each set of equations
than it is to use <a href="lu_vec_ad.cpp.xml" target="_top"><span style='white-space: nowrap'>lu_vec_ad.cpp</span></a>
and not have to retape.
This test will help us improve the speed of <a href="lu_vec_ad.cpp.xml" target="_top"><span style='white-space: nowrap'>lu_vec_ad.cpp</span></a>
.
<br/>
<br/>
<b><big><a name="04-07" id="04-07">04-07</a></big></b>
<br/>
There were bugs in the assignment to <a href="vecad.xml" target="_top"><span style='white-space: nowrap'>VecAD</span></a>
elements
during taping that have been fixed.
In addition, an example of tapping the pivoting operations in
an <a href="lu_vec_ad.cpp.xml" target="_top"><span style='white-space: nowrap'>Lu factorization</span></a>
has been added.
<br/>
<br/>
<b><big><a name="04-03" id="04-03">04-03</a></big></b>
<br/>
Added <code><font color="blue">size_t</font></code> indexing to the <a href="vecad.xml" target="_top"><span style='white-space: nowrap'>VecAD</span></a>
class.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>Fixed a bug connected to the <a href="vecad.xml" target="_top"><span style='white-space: nowrap'>VecAD</span></a>
class and erasing the tape.
<br/>
<br/>
<b><big><a name="04-02" id="04-02">04-02</a></big></b>
<br/>
Some memory savings is done with regard to equal parameter values
being stored in the tape. There was a bug in this logic when parameter
in an
<code><font color="blue"><span style='white-space: nowrap'>AD< AD<</span></font><i><font color="black"><span style='white-space: nowrap'>Base</span></font></i><font color="blue"><span style='white-space: nowrap'>> ></span></font></code>
class had values that were variables in the
<code><font color="blue"><span style='white-space: nowrap'>AD<</span></font><i><font color="black"><span style='white-space: nowrap'>Base</span></font></i><font color="blue"><span style='white-space: nowrap'>></span></font></code>
class.
This has been fixed.
<br/>
<br/>
<b><big><a name="04-01" id="04-01">04-01</a></big></b>
<br/>
The name of the class that tapes indexing operations
was changed from <code><font color="blue">ADVec</font></code> to <a href="vecad.xml" target="_top"><span style='white-space: nowrap'>VecAD</span></a>
.
This class was extended so that
the value of elements in these vectors can be variables
(need not be <a href="glossary.xml#Parameter" target="_top"><span style='white-space: nowrap'>parameters</span></a>
).
<br/>
<br/>
<b><big><a name="03-30" id="03-30">03-30</a></big></b>
<br/>
Do some simple searching of the parameter table during taping
avoid multiple copies of parameters on tape (use less tape memory).
<br/>
<br/>
<b><big><a name="03-28" id="03-28">03-28</a></big></b>
<br/>
The version <a href="vecad.xml" target="_top"><span style='white-space: nowrap'>ADVec</span></a>
,
a vector class that tapes indexing operations,
is now available.
It is currently restricted by the fact that all the
values in the vector must be
<a href="glossary.xml#Parameter" target="_top"><span style='white-space: nowrap'>parameters</span></a>
.
<br/>
<br/>
<b><big><a name="03-25" id="03-25">03-25</a></big></b>
<br/>
The internal taping structure has been changed to have variable length
instructions.
This is to save memory on the tape.
In addition, it may help in the implementation of the
vector class that tracks indexing.
(A now functioning version of this class is described in
<a href="vecad.xml" target="_top"><span style='white-space: nowrap'>VecAD</span></a>
.)
<br/>
<br/>
<b><big><a name="03-18" id="03-18">03-18</a></big></b>
<br/>
A change was made to the way parameter values are stored on the tape.
This resulted in a significant savings in the amount of memory required.
<br/>
<br/>
<b><big><a name="03-17" id="03-17">03-17</a></big></b>
<br/>
Change the return type for <a href="speedtest.xml" target="_top"><span style='white-space: nowrap'>SpeedTest</span></a>
from <code><font color="blue">const char *</font></code>
to <code><font color="blue">std::string</font></code>.
The memory required for the largest test cases was added to the
<a href="speed_cppad.xml" target="_top"><span style='white-space: nowrap'>speed_cppad</span></a>
tests output.
<br/>
<br/>
<b><big><a name="03-15" id="03-15">03-15</a></big></b>
<br/>
The comparison between ADOLC and CppAD for
the <code><font color="blue">DetLuADOLC.cpp/</font></code> example was returning an error
(because it was checking for exact equality of calculated derivatives
instead of nearly equal).
This has been fixed.
<br/>
<br/>
<b><big><a name="03-12" id="03-12">03-12</a></big></b>
<br/>
The user defined unary functions were removed and
the user defined <a href="discrete.xml" target="_top"><span style='white-space: nowrap'>discrete functions</span></a>
were
added.
These discrete functions add the capability of conditional expressions
(alternate calculations)
being included in an <a href="adfun.xml" target="_top"><span style='white-space: nowrap'>ADFun</span></a>
object.
<br/>
<br/>
<b><big><a name="03-11" id="03-11">03-11</a></big></b>
<br/>
The classes <a href="det_by_minor.xml" target="_top"><span style='white-space: nowrap'>det_by_minor</span></a>
and <a href="det_by_lu.xml" target="_top"><span style='white-space: nowrap'>det_by_lu</span></a>
were added
and used these to simplify the
examples that compute determinants.
<br/>
<br/>
<b><big><a name="03-09" id="03-09">03-09</a></big></b>
<br/>
The routines <code><font color="blue">Grad</font></code> and <code><font color="blue">Hess</font></code> have been removed.
You should use <a href="jacobian.xml" target="_top"><span style='white-space: nowrap'>Jacobian</span></a>
and <a href="hessian.xml" target="_top"><span style='white-space: nowrap'>Hessian</span></a>
instead.
<br/>
<br/>
<b><big><a name="03-07" id="03-07">03-07</a></big></b>
<br/>
The driver routines <a href="hessian.xml" target="_top"><span style='white-space: nowrap'>Hessian</span></a>
and <a href="revtwo.xml" target="_top"><span style='white-space: nowrap'>RevTwo</span></a>
has been added.
These to compute specialized subsets of the second order partials.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>Documentation errors in <a href="fortwo.xml" target="_top"><span style='white-space: nowrap'>ForTwo</span></a>
and <a href="reverse.xml" target="_top"><span style='white-space: nowrap'>Reverse</span></a>
were fixed.
The <a href="example.xml" target="_top"><span style='white-space: nowrap'>example</span></a>
documentation was reorganized.
<br/>
<br/>
<b><big><a name="03-06" id="03-06">03-06</a></big></b>
<br/>
The driver <a href="fortwo.xml" target="_top"><span style='white-space: nowrap'>ForTwo</span></a>
has been added.
It uses forward mode to compute a subset of the second order partials.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>Split all of the "example" and "test" index entries that come from
<code><font color="blue"><span style='white-space: nowrap'>cppad/example/</span></font><i><font color="black"><span style='white-space: nowrap'>*</span></font></i><font color="blue"><span style='white-space: nowrap'>.cpp</span></font></code>
into sorted subheadings.
<br/>
<br/>
<b><big><a name="03-05" id="03-05">03-05</a></big></b>
<br/>
The <code><font color="blue">Grad</font></code> routine,
which only computed first derivatives of scalar valued functions,
has been replaced by the <a href="jacobian.xml" target="_top"><span style='white-space: nowrap'>Jacobian</span></a>
routine which
computes the derivative of vector valued functions.
<br/>
<br/>
<b><big><a name="03-04" id="03-04">03-04</a></big></b>
<br/>
The bug reported on <a href="whats_new_04.xml#02-17" target="_top"><span style='white-space: nowrap'>02-17</span></a>
was present in all
the operators. These have all been fixed and tests for all the operators
have been added to the <code><font color="blue">cppad/Test</font></code> directory.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The <a href="seq_property.xml#Parameter" target="_top"><span style='white-space: nowrap'>f.Parameter()</span></a>
function was added so that
one can count how many components of the range space depend
on the value of the domain space components.
This helps when deciding whether to use forward or reverse mode.
<br/>
<br/>
<b><big><a name="03-03" id="03-03">03-03</a></big></b>
<br/>
Special operators were added to distinguish the cases where
one of the operands is a
<a href="glossary.xml#Parameter" target="_top"><span style='white-space: nowrap'>parameter</span></a>
.
This reduced the amount of branching that is necessary
when executing <a href="forward.xml" target="_top"><span style='white-space: nowrap'>Forward</span></a>
and <a href="reverse.xml" target="_top"><span style='white-space: nowrap'>Reverse</span></a>
calculations.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The <a href="independent.xml" target="_top"><span style='white-space: nowrap'>Independent</span></a>
and <a href="seq_property.xml#Parameter" target="_top"><span style='white-space: nowrap'>Parameter</span></a>
functions
were moved below <a href="adfun.xml" target="_top"><span style='white-space: nowrap'>ADFun</span></a>
in the documentation.
<br/>
<br/>
<b><big><a name="03-01" id="03-01">03-01</a></big></b>
<br/>
The DetLuADOLC.cpp, DetLu case was added to the ADOLC
comparison tests.
<br/>
<br/>
<b><big><a name="02-29" id="02-29">02-29</a></big></b>
<br/>
Under certain optimization flag values,
and on certain systems,
an error was reported by the
ADOLC correctness comparison.
It turned out that CppAD was not initializing a particular index
when debugging was turned off. This has been fixed.
<br/>
<br/>
<b><big><a name="02-28" id="02-28">02-28</a></big></b>
<br/>
A set of routines for comparing CppAD with
ADOLC has been added to the distribution.
In addition, documentation for compiling and linking the
<a href="example.xml" target="_top"><span style='white-space: nowrap'>Examples</span></a>
and <a href="speed_cppad.xml" target="_top"><span style='white-space: nowrap'>Speed Tests</span></a>
has been added.
<br/>
<br/>
<b><big><a name="02-21" id="02-21">02-21</a></big></b>
<br/>
If you use the user defined unary atomic functions
there is a restriction on the order of the derivatives that can be calculated.
This restriction was documented in the user defined unary function
<a href="forward.xml" target="_top"><span style='white-space: nowrap'>Forward</span></a>
and <a href="reverse.xml" target="_top"><span style='white-space: nowrap'>Reverse</span></a>
.
(These unary functions were removed on <a href="whats_new_04.xml#03-12" target="_top"><span style='white-space: nowrap'>03-12</span></a>
.)
<br/>
<br/>
<b><big><a name="02-20" id="02-20">02-20</a></big></b>
<br/>
A user interface to arbitrary order
<a href="reverse.xml" target="_top"><span style='white-space: nowrap'>reverse mode</span></a>
calculations was implemented.
In addition, the <a href="adfun.xml" target="_top"><span style='white-space: nowrap'>ADFun</span></a>
member functions
<code><font color="blue">Rev</font></code> and <code><font color="blue">RevTwo</font></code> were removed
because it is easier to use the uniform syntax below:
<table><tr><td align='left' valign='top'>
<b>Old Syntax</b> </td><td align='left' valign='top'>
<b>Uniform Syntax</b>
</td></tr><tr><td align='left' valign='top'>
<code><i><font color="black"><span style='white-space: nowrap'>r1</span></font></i><font color="blue"><span style='white-space: nowrap'> = </span></font><i><font color="black"><span style='white-space: nowrap'>f</span></font></i><font color="blue"><span style='white-space: nowrap'>.Rev(</span></font><i><font color="black"><span style='white-space: nowrap'>v</span></font></i><font color="blue"><span style='white-space: nowrap'>)</span></font></code>
</td><td align='left' valign='top'>
<code><i><font color="black"><span style='white-space: nowrap'>r1</span></font></i><font color="blue"><span style='white-space: nowrap'> = </span></font><i><font color="black"><span style='white-space: nowrap'>f</span></font></i><font color="blue"><span style='white-space: nowrap'>.Reverse(1, </span></font><i><font color="black"><span style='white-space: nowrap'>v</span></font></i><font color="blue"><span style='white-space: nowrap'>)</span></font></code>
</td></tr><tr><td align='left' valign='top'>
<code><i><font color="black"><span style='white-space: nowrap'>q1</span></font></i><font color="blue"><span style='white-space: nowrap'> = </span></font><i><font color="black"><span style='white-space: nowrap'>f</span></font></i><font color="blue"><span style='white-space: nowrap'>.RevTwo(</span></font><i><font color="black"><span style='white-space: nowrap'>v</span></font></i><font color="blue"><span style='white-space: nowrap'>)</span></font></code>
</td><td align='left' valign='top'>
<code><i><font color="black"><span style='white-space: nowrap'>r2</span></font></i><font color="blue"><span style='white-space: nowrap'> = </span></font><i><font color="black"><span style='white-space: nowrap'>f</span></font></i><font color="blue"><span style='white-space: nowrap'>.Reverse(2, </span></font><i><font color="black"><span style='white-space: nowrap'>v</span></font></i><font color="blue"><span style='white-space: nowrap'>)</span></font></code>
</td></tr><tr><td align='left' valign='top'>
</td><td align='left' valign='top'>
<code><i><font color="black"><span style='white-space: nowrap'>q1</span></font></i><font color="blue"><span style='white-space: nowrap'>[</span></font><i><font color="black"><span style='white-space: nowrap'>i</span></font></i><font color="blue"><span style='white-space: nowrap'>] == </span></font><i><font color="black"><span style='white-space: nowrap'>r2</span></font></i><font color="blue"><span style='white-space: nowrap'>[2 * </span></font><i><font color="black"><span style='white-space: nowrap'>i</span></font></i><font color="blue"><span style='white-space: nowrap'> + 1]</span></font></code>
</td></tr>
</table>
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The <a href="theory.xml" target="_top"><span style='white-space: nowrap'>Theory</span></a>
section has been completely changed so that
it corresponds to the arbitrary order calculations.
(Some of this change was made when the arbitrary forward mode
interface was added on
<a href="whats_new_04.xml#02-15" target="_top"><span style='white-space: nowrap'>04-02-15</span></a>
.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The directory <code><font color="blue">cppad/Test</font></code> has been added.
It contains tests cases that are not intended as examples.
<br/>
<br/>
<b><big><a name="02-17" id="02-17">02-17</a></big></b>
<br/>
There was a bug in the way CppAD handled the parameters zero and one
when they were variables on a lower level tape; i.e. x might be a
parameter on an
<code><font color="blue"><span style='white-space: nowrap'>AD< AD<</span></font><i><font color="black"><span style='white-space: nowrap'>Base</span></font></i><font color="blue"><span style='white-space: nowrap'>> ></span></font></code>
tape and a its value
might be a variable on the
<code><font color="blue"><span style='white-space: nowrap'>AD<</span></font><i><font color="black"><span style='white-space: nowrap'>Base</span></font></i><font color="blue"><span style='white-space: nowrap'>></span></font></code>
tape.
This bug in the multiply and divide routines has been fixed.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>There was a bug that is some cases reported a divide by zero error
when the numerator was zero. This has been fixed.
<br/>
<br/>
<b><big><a name="02-16" id="02-16">02-16</a></big></b>
<br/>
A bug in <a href="forward.xml" target="_top"><span style='white-space: nowrap'>Forward</span></a>
prevented the calculation of derivatives
with higher order than two.
In addition, this checking for user errors in the use of <code><font color="blue">Forward</font></code>
was also faulty.
This has been fixed.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The Microsoft project file <code><font color="blue">example\Example.dsp</font></code>
was out of date. This has been fixed.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The example that <a href="mul_level.xml" target="_top"><span style='white-space: nowrap'>tapes derivative calculations</span></a>
has been changed to an application of
<a href="mul_level_ode.cpp.xml" target="_top"><span style='white-space: nowrap'>Taylor's method</span></a>
for solving ordinary differential
equations.
<br/>
<br/>
<b><big><a name="02-15" id="02-15">02-15</a></big></b>
<br/>
A user interface to arbitrary order
<a href="forward.xml" target="_top"><span style='white-space: nowrap'>forward mode</span></a>
calculations was implemented.
In addition, the <a href="adfun.xml" target="_top"><span style='white-space: nowrap'>ADFun</span></a>
member functions
<code><font color="blue">Arg</font></code>, <code><font color="blue">For</font></code> and <code><font color="blue">ForTwo</font></code> were removed
because it is easier to use the uniform syntax below:
<table><tr><td align='left' valign='top'>
<b>Old Syntax</b> </td><td align='left' valign='top'>
<b>Uniform Syntax</b>
</td></tr><tr><td align='left' valign='top'>
<code><i><font color="black"><span style='white-space: nowrap'>v0</span></font></i><font color="blue"><span style='white-space: nowrap'> = </span></font><i><font color="black"><span style='white-space: nowrap'>f</span></font></i><font color="blue"><span style='white-space: nowrap'>.Arg(</span></font><i><font color="black"><span style='white-space: nowrap'>u0</span></font></i><font color="blue"><span style='white-space: nowrap'>)</span></font></code>
</td><td align='left' valign='top'>
<code><i><font color="black"><span style='white-space: nowrap'>v0</span></font></i><font color="blue"><span style='white-space: nowrap'> = </span></font><i><font color="black"><span style='white-space: nowrap'>f</span></font></i><font color="blue"><span style='white-space: nowrap'>.Forward(0, </span></font><i><font color="black"><span style='white-space: nowrap'>u0</span></font></i><font color="blue"><span style='white-space: nowrap'>)</span></font></code>
</td></tr><tr><td align='left' valign='top'>
<code><i><font color="black"><span style='white-space: nowrap'>v1</span></font></i><font color="blue"><span style='white-space: nowrap'> = </span></font><i><font color="black"><span style='white-space: nowrap'>f</span></font></i><font color="blue"><span style='white-space: nowrap'>.For(</span></font><i><font color="black"><span style='white-space: nowrap'>u1</span></font></i><font color="blue"><span style='white-space: nowrap'>)</span></font></code>
</td><td align='left' valign='top'>
<code><i><font color="black"><span style='white-space: nowrap'>v1</span></font></i><font color="blue"><span style='white-space: nowrap'> = </span></font><i><font color="black"><span style='white-space: nowrap'>f</span></font></i><font color="blue"><span style='white-space: nowrap'>.Forward(1, </span></font><i><font color="black"><span style='white-space: nowrap'>u1</span></font></i><font color="blue"><span style='white-space: nowrap'>)</span></font></code>
</td></tr><tr><td align='left' valign='top'>
<code><i><font color="black"><span style='white-space: nowrap'>v2</span></font></i><font color="blue"><span style='white-space: nowrap'> = </span></font><i><font color="black"><span style='white-space: nowrap'>f</span></font></i><font color="blue"><span style='white-space: nowrap'>.For(</span></font><i><font color="black"><span style='white-space: nowrap'>u2</span></font></i><font color="blue"><span style='white-space: nowrap'>)</span></font></code>
</td><td align='left' valign='top'>
<code><i><font color="black"><span style='white-space: nowrap'>v2</span></font></i><font color="blue"><span style='white-space: nowrap'> = </span></font><i><font color="black"><span style='white-space: nowrap'>f</span></font></i><font color="blue"><span style='white-space: nowrap'>.Forward(1, </span></font><i><font color="black"><span style='white-space: nowrap'>u2</span></font></i><font color="blue"><span style='white-space: nowrap'>)</span></font></code>
</td></tr>
</table>
<br/>
<b><big><a name="02-12" id="02-12">02-12</a></big></b>
<br/>
All of the derivative calculations are now done using arbitrary
order Taylor arithmetic routines.
The <a href="theory.xml" target="_top"><span style='white-space: nowrap'>Theory</span></a>
section was changed to document this method
of calculation.
<br/>
<br/>
<b><big><a name="02-01" id="02-01">02-01</a></big></b>
<br/>
The definition of a
<a href="glossary.xml#Taylor Coefficient" target="_top"><span style='white-space: nowrap'>Taylor coefficient</span></a>
was changed to include the factorial factor.
This change was also made to the output specifications for the
<code><font color="blue">FunForTwo</font></code> routine.
<br/>
<br/>
<b><big><a name="01-29" id="01-29">01-29</a></big></b>
<br/>
There were some bugs in the <code><font color="blue">FunArg</font></code> function
that were fixed.
<ol type="1"><li>
If one of the dependent variables was a
<a href="glossary.xml#Parameter" target="_top"><span style='white-space: nowrap'>parameter</span></a>
<code><font color="blue">FunArg</font></code> did not set it's value properly.
(All its derivatives are zero and this was handled properly.)
</li><li>
The user defined unary functions were not
computed correctly.
</li></ol>
The specifications for the usage and unknown CppAD error macros
were modified so that they could be used with out side effects.
<br/>
<br/>
<b><big><a name="01-28" id="01-28">01-28</a></big></b>
<br/>
Some corrections and improvements were made to the documentation including:
<code><font color="blue">CppADvector</font></code> was placed before its use,
a reference to <code><font color="blue">Ode_ind</font></code> and <code><font color="blue">Ode_dep</font></code> was fixed in
<code><font color="blue">OdeImplicit</font></code>.
<br/>
<br/>
<b><big><a name="01-22" id="01-22">01-22</a></big></b>
<br/>
The specifications for the routine <code><font color="blue">FunForTwo</font></code>
was changed to use
<a href="glossary.xml#Taylor Coefficient" target="_top"><span style='white-space: nowrap'>Taylor coefficients</span></a>
.
This makes the interface to CppAD closer to the interface for
<a href="https://projects.coin-or.org/ADOL-C" target="_top"><span style='white-space: nowrap'>ADOLC</span></a>
.
<hr/>Input File: omh/whats_new/whats_new_04.omh
</body>
</html>