<?xml version='1.0'?>
<?xml-stylesheet type='text/xsl' href='pmathml.xsl'?>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<title>Changes and Additions to CppAD During 2008</title>
<meta name="description" id="description" content="Changes and Additions to CppAD During 2008"/>
<meta name="keywords" id="keywords" content=" erf ipopt_cppad_nlp "/>
<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_08_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_09.xml" target="_top">Prev</a>
</td><td><a href="whats_new_07.xml" target="_top">Next</a>
</td><td>
<select onchange='choose_across0(this)'>
<option>Index-&gt;</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-&gt;</option>
<option>CppAD</option>
<option>Appendix</option>
<option>whats_new</option>
<option>whats_new_08</option>
</select>
</td>
<td>
<select onchange='choose_down3(this)'>
<option>CppAD-&gt;</option>
<option>Install</option>
<option>Introduction</option>
<option>AD</option>
<option>ADFun</option>
<option>multi_thread</option>
<option>library</option>
<option>cppad_ipopt_nlp</option>
<option>Example</option>
<option>preprocessor</option>
<option>Appendix</option>
</select>
</td>
<td>
<select onchange='choose_down2(this)'>
<option>Appendix-&gt;</option>
<option>Faq</option>
<option>speed</option>
<option>Theory</option>
<option>glossary</option>
<option>Bib</option>
<option>Bugs</option>
<option>WishList</option>
<option>whats_new</option>
<option>deprecated</option>
<option>License</option>
</select>
</td>
<td>
<select onchange='choose_down1(this)'>
<option>whats_new-&gt;</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_08</td>
<td>
<select onchange='choose_current0(this)'>
<option>Headings-&gt;</option>
<option>Introduction</option>
<option>12-19</option>
<option>12-14</option>
<option>12-04</option>
<option>11-22</option>
<option>11-21</option>
<option>11-20</option>
<option>10-27</option>
<option>10-17</option>
<option>10-16</option>
<option>09-30</option>
<option>09-26</option>
<option>09-18</option>
<option>09-17</option>
<option>09-16</option>
<option>09-12</option>
<option>09-10</option>
<option>09-09</option>
<option>09-07</option>
<option>09-06</option>
<option>09-05</option>
<option>09-04</option>
<option>09-03</option>
<option>09-01</option>
<option>08-29</option>
<option>08-19</option>
<option>08-08</option>
<option>07-02</option>
<option>06-18</option>
<option>06-15</option>
<option>06-11</option>
<option>06-10</option>
<option>05-08</option>
<option>05-03</option>
<option>04-20</option>
<option>04-18</option>
<option>04-10</option>
<option>04-06</option>
<option>04-04</option>
<option>03-27</option>
<option>02-05</option>
<option>02-03</option>
<option>01-26</option>
<option>01-24</option>
<option>01-21</option>
<option>01-20</option>
<option>01-11</option>
<option>01-08</option>
</select>
</td>
</tr></table><br/>



<center><b><big><big>Changes and Additions to CppAD During 2008</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 to CppAD during 2008
(in reverse order by date).
The purpose of this section is to
assist you in learning about changes between various versions of CppAD.

<br/>
<br/>
<b><big><a name="12-19" id="12-19">12-19</a></big></b>
<br/>
In the documentation for <a href="pow_int.xml" target="_top"><span style='white-space: nowrap'>pow_int</span></a>
 change the integer exponent
from 
<code><font color="blue"><span style='white-space: nowrap'>int&#xA0;</span></font><i><font color="black"><span style='white-space: nowrap'>y</span></font></i></code>
 to 
<code><font color="blue"><span style='white-space: nowrap'>const&#xA0;int&#xA0;&amp;</span></font><i><font color="black"><span style='white-space: nowrap'>y</span></font></i></code>
.
In the implementation for <a href="pow.xml" target="_top"><span style='white-space: nowrap'>pow</span></a>
 make the integer base case 
agree with the documentation; i.e., change
from 
<code><font color="blue"><span style='white-space: nowrap'>int&#xA0;</span></font><i><font color="black"><span style='white-space: nowrap'>x</span></font></i></code>
 to 
<code><font color="blue"><span style='white-space: nowrap'>const&#xA0;int&#xA0;&amp;</span></font><i><font color="black"><span style='white-space: nowrap'>x</span></font></i></code>
.

<br/>
<br/>
<b><big><a name="12-14" id="12-14">12-14</a></big></b>
<br/>
Added another test of <a href="mul_level.xml" target="_top"><span style='white-space: nowrap'>mul_level</span></a>
 calculations (in the 
<code><font color="blue">test_more</font></code> directory).

<br/>
<br/>
<b><big><a name="12-04" id="12-04">12-04</a></big></b>
<br/>
Extensive explanation for the <code><font color="blue">ipopt_cppad/ipopt_cppad_ode</font></code> example was
provided in the section <a href="cppad_ipopt_ode.xml" target="_top"><span style='white-space: nowrap'>ipopt_cppad_ode</span></a>
.

<br/>
<br/>
<b><big><a name="11-22" id="11-22">11-22</a></big></b>
<br/>
The CppAD interface to the Ipopt nonlinear programming solver
<a href="cppad_ipopt_nlp.xml" target="_top"><span style='white-space: nowrap'>cppad_ipopt_nlp</span></a>

has been moved from <code><font color="blue">example/ipopt_cppad_nlp</font></code> to 
<code><font color="blue">ipopt_cppad/ipopt_cppad_nlp</font></code>.

<br/>
<br/>
<b><big><a name="11-21" id="11-21">11-21</a></big></b>
<br/>
The Microsoft's Visual C++ Version 9.0 generates a warning of the form

<code><font color="blue"><span style='white-space: nowrap'>warning&#xA0;C4396:%...%</span></font></code>
 
for every template function that is declared as a both a friend and inline
(it thinks it is only doing this for specializations of template functions).
The warnings are no longer generated because
these <code><font color="blue">inline</font></code> directives are converted to
empty code when a Microsoft Visual C++ is used
(see <a href="wishlist.xml#Optimization.Microsoft Compiler" target="_top"><span style='white-space: nowrap'>Microsoft&#xA0;Compiler</span></a>

wish list item).


<br/>
<br/>
<b><big><a name="11-20" id="11-20">11-20</a></big></b>

<br/>
The function 
<code><font color="blue"><span style='white-space: nowrap'>tanh(</span></font><i><font color="black"><span style='white-space: nowrap'>x</span></font></i><font color="blue"><span style='white-space: nowrap'>)</span></font></code>
 was added to the 
<a href="std_math_ad.xml" target="_top"><span style='white-space: nowrap'>std_math_ad</span></a>
 functions.
The <code><font color="blue">abs</font></code> and <code><font color="blue">erf</font></code> functions were removed from the
<a href="base_require.xml" target="_top"><span style='white-space: nowrap'>Base&#xA0;requirements</span></a>
.
The restrictions about the Base class were removed from
<a href="abs.xml" target="_top"><span style='white-space: nowrap'>abs</span></a>
, <a href="atan2.xml" target="_top"><span style='white-space: nowrap'>atan2</span></a>
, <a href="luratio.xml" target="_top"><span style='white-space: nowrap'>LuRatio</span></a>
, <a href="erf.xml" target="_top"><span style='white-space: nowrap'>erf</span></a>
.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>Visual Studio Version 9.0 could not handle the large number of static
constants in the CppAD <a href="erf.xml" target="_top"><span style='white-space: nowrap'>erf</span></a>
 function.
This function was changed to a simpler representation
that is much faster and that 
is differentiable at all points (not defined differently on subregions).
The down side to this is that the new version 
is not as accurate (see <a href="erf.xml#Method" target="_top"><span style='white-space: nowrap'>method</span></a>
).

<br/>
<br/>
<b><big><a name="10-27" id="10-27">10-27</a></big></b>
<br/>
Change prototypes for <code><font color="blue">ipopt_cppad/ipopt_cppad_ode</font></code> helper routines
to use <code><font color="blue">const</font></code> (where appropriate).

<br/>
<br/>
<b><big><a name="10-17" id="10-17">10-17</a></big></b>
<br/>
Major improvements to the <code><font color="blue">ipopt_cppad/ipopt_cppad_ode</font></code> example.

<br/>
<br/>
<b><big><a name="10-16" id="10-16">10-16</a></big></b>
<br/>
Minor improvement to description of optimization argument in 
<code><font color="blue">ipopt_cppad/ipopt_cppad_ode</font></code>.

<br/>
<br/>
<b><big><a name="09-30" id="09-30">09-30</a></big></b>
<br/>
Add or modify some wish list entries; see
<a href="wishlist.xml#Ipopt" target="_top"><span style='white-space: nowrap'>Ipopt</span></a>
,
<a href="wishlist.xml#Multiple Arguments" target="_top"><span style='white-space: nowrap'>multiple&#xA0;arguments</span></a>
,
and sparsity patterns
(<a href="glossary.xml#Sparsity Pattern" target="_top"><span style='white-space: nowrap'>sparsity&#xA0;patterns</span></a>
 has been fulfilled). 


<br/>
<br/>
<b><big><a name="09-26" id="09-26">09-26</a></big></b>
<br/>
Use parenthesis and brackets to group terms of the form

<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"><mrow>
<mi mathvariant='italic'>m</mi>
<mo stretchy="false">&#x000D7;</mo>
<mi mathvariant='italic'>I</mi>
</mrow></math>

 to make the documentation of
<a href="cppad_ipopt_nlp.xml" target="_top"><span style='white-space: nowrap'>ipopt_cppad_nlp</span></a>
 easier to read.

Changed <code><font color="blue">ipopt_cppad/ipopt_cppad_ode</font></code> to use 
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"><mrow>
<mi mathvariant='italic'>y</mi>
<mo stretchy="false">(</mo>
<mi mathvariant='italic'>t</mi>
<mo stretchy="false">)</mo>
</mrow></math>

 for
the solution of the ODE to distinguish it for 
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"><mrow>
<mi mathvariant='italic'>x</mi>
</mrow></math>

,
the vector we are optimizing with respect to.

<br/>
<br/>
<b><big><a name="09-18" id="09-18">09-18</a></big></b>
<br/>
Changed <code><font color="blue">ipopt_cppad/ipopt_cppad_ode</font></code> to a case where 
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"><mrow>
<mi mathvariant='italic'>x</mi>
<mo stretchy="false">(</mo>
<mi mathvariant='italic'>t</mi>
<mo stretchy="false">)</mo>
</mrow></math>


is a pair of exponential functions instead of a linear and quadratic.
Fixed some of the comments in this example and included the source
code in the documentation (which was missing by mistake).

<br/>
<br/>
<b><big><a name="09-17" id="09-17">09-17</a></big></b>
<br/>
Changed <code><font color="blue">ipopt_cppad/ipopt_cppad_ode</font></code> to a case where there are
two components in the ODE (instead of one).
Also removed an initialization section that was only intended for tests
with a specific initial value.

<br/>
<br/>
<b><big><a name="09-16" id="09-16">09-16</a></big></b>
<br/>
Add <code><font color="blue">ipopt_cppad/ipopt_cppad_ode</font></code>, an example and test
that optimizes the solution of an ODE.
Change <code><font color="blue">r_eval</font></code> to <code><font color="blue">eval_r</font></code> in <a href="cppad_ipopt_nlp.xml" target="_top"><span style='white-space: nowrap'>ipopt_cppad_nlp</span></a>
.
Fix a dimension of <code><font color="blue">u_ad</font></code> error in <code><font color="blue">ipopt_cppad_nlp</font></code>.

<br/>
<br/>
<b><big><a name="09-12" id="09-12">09-12</a></big></b>
<br/>
Converted from storing full Hessian and Jacobian to a sparse data structure
in <a href="cppad_ipopt_nlp.xml" target="_top"><span style='white-space: nowrap'>ipopt_cppad_nlp</span></a>
.
This greatly reduced the memory requirements (and increased the speed)
for sparse problems.

<br/>
<br/>
<b><big><a name="09-10" id="09-10">09-10</a></big></b>
<br/>
Fixed more indexing bugs in <a href="cppad_ipopt_nlp.xml" target="_top"><span style='white-space: nowrap'>ipopt_cppad_nlp</span></a>

that effected cases where the domain index vector 
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"><mrow>
<msub><mi mathvariant='italic'>J</mi>
<mrow><mi mathvariant='italic'>k</mi>
<mo stretchy="false">,</mo>
<mo stretchy="false">&#x02113;</mo>
</mrow>
</msub>
</mrow></math>


was different for different values of 
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"><mrow>
<mi mathvariant='italic'>k</mi>
</mrow></math>

 and 
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"><mrow>
<mo stretchy="false">&#x02113;</mo>
</mrow></math>

.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>In <a href="cppad_ipopt_nlp.xml" target="_top"><span style='white-space: nowrap'>ipopt_cppad_nlp</span></a>
,
combined 
<code><i><font color="black"><span style='white-space: nowrap'>fg_info</span></font></i><font color="blue"><span style='white-space: nowrap'>-&gt;domain_index()</span></font></code>
 and 

<code><i><font color="black"><span style='white-space: nowrap'>fg_info</span></font></i><font color="blue"><span style='white-space: nowrap'>-&gt;range_index()</span></font></code>
 into a single function called

<code><i><font color="black"><span style='white-space: nowrap'>fg_info</span></font></i><font color="blue"><span style='white-space: nowrap'>-&gt;index()</span></font></code>
.
Also added more error checking (if <code><font color="blue">NDEBUG</font></code> is not defined). 

<br/>
<br/>
<b><big><a name="09-09" id="09-09">09-09</a></big></b>
<br/>
Fixed an indexing bug in <a href="cppad_ipopt_nlp.xml" target="_top"><span style='white-space: nowrap'>ipopt_cppad_nlp</span></a>
.
(This effected cases where the domain index vector 
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"><mrow>
<msub><mi mathvariant='italic'>J</mi>
<mrow><mi mathvariant='italic'>k</mi>
<mo stretchy="false">,</mo>
<mo stretchy="false">&#x02113;</mo>
</mrow>
</msub>
</mrow></math>


was different for different values of 
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"><mrow>
<mi mathvariant='italic'>k</mi>
</mrow></math>

 and 
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"><mrow>
<mo stretchy="false">&#x02113;</mo>
</mrow></math>

.)

<br/>
<br/>
<b><big><a name="09-07" id="09-07">09-07</a></big></b>
<br/>
Change <a href="cppad_ipopt_nlp.xml" target="_top"><span style='white-space: nowrap'>ipopt_cppad_nlp</span></a>
 so that object and constraints
are expressed as the double summation of simpler functions.
This is more versatile that the single summation representation.

<br/>
<br/>
<b><big><a name="09-06" id="09-06">09-06</a></big></b>
<br/>
Checked in a major change to <a href="cppad_ipopt_nlp.xml" target="_top"><span style='white-space: nowrap'>ipopt_cppad_nlp</span></a>

whereby the object and constraints can be expressed as the
sum of simpler functions. 
This is the first step in what will eventually be a more versatile
representation.

<br/>
<br/>
<b><big><a name="09-05" id="09-05">09-05</a></big></b>
<br/>
Fix bug in <a href="cppad_ipopt_nlp.xml" target="_top"><span style='white-space: nowrap'>ipopt_cppad_nlp</span></a>
 (not recording the function
at the proper location. Here is the difference that occurred 
multiple places in the <code><font color="blue">ipopt_cppad/ipopt_cppad_nlp.cpp</font></code> source:
<code><font color='blue'><pre style='display:inline'> 
	for(j = 0; j &lt; n_; j++)
-		x_ad_vec[0] = x[j];
+		x_ad_vec[j] = x[j];
</pre></font></code>

This did not show up in testing because there currently is no test of
<code><font color="blue">ipopt_cppad_nlp</font></code> where the operation sequence depends
on the value of 
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"><mrow>
<mi mathvariant='italic'>x</mi>
</mrow></math>

.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>Changed <code><font color="blue">eval_grad_f</font></code> in <code><font color="blue">ipopt_cppad_nlp.cpp</font></code>
to be more efficient.

<br/>
<br/>
<b><big><a name="09-04" id="09-04">09-04</a></big></b>
<br/>
The <a href="cppad_ipopt_nlp.xml" target="_top"><span style='white-space: nowrap'>ipopt_cppad_nlp</span></a>
 interface has been changed to use
a derived class object instead of a pointer to a function.

<br/>
<br/>
<b><big><a name="09-03" id="09-03">09-03</a></big></b>
<br/>
The <a href="cppad_ipopt_nlp.xml" target="_top"><span style='white-space: nowrap'>ipopt_cppad_nlp</span></a>
 interface has been changed to use
<code><font color="blue">size_t</font></code> instead of <code><font color="blue">Ipopt::Index</font></code>.

<br/>
<br/>
<b><big><a name="09-01" id="09-01">09-01</a></big></b>
<br/>
Back out the changes made to <a href="cppad_ipopt_nlp.xml" target="_top"><span style='white-space: nowrap'>ipopt_cppad_nlp</span></a>
 on 08-29
(because testing proved the change to be less efficient in the case
that motivated the change).

<br/>
<br/>
<b><big><a name="08-29" id="08-29">08-29</a></big></b>
<br/>
The <code><font color="blue">push_vector</font></code> member function was missing from the
<a href="cppad_vector.xml#vectorBool" target="_top"><span style='white-space: nowrap'>vectorBool</span></a>
 class. 
This has been fixed.
In addition, it seems that for some cases (or compilers)
the assignment

<code><font color="blue"><span style='white-space: nowrap'><br/>
&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;</span></font><i><font color="black"><span style='white-space: nowrap'>x</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'>]&#xA0;=&#xA0;</span></font><i><font color="black"><span style='white-space: nowrap'>y</span></font></i><font color="blue"><span style='white-space: nowrap'>[</span></font><i><font color="black"><span style='white-space: nowrap'>j</span></font></i><font color="blue"><span style='white-space: nowrap'>]<br/>
</span></font></code>
did not work properly when both 
<code><i><font color="black"><span style='white-space: nowrap'>x</span></font></i></code>
 and 
<code><i><font color="black"><span style='white-space: nowrap'>y</span></font></i></code>
 
had type <code><font color="blue">vectorBool</font></code>.
This has been fixed.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The <a href="cppad_ipopt_nlp.xml" target="_top"><span style='white-space: nowrap'>ipopt_cppad_nlp</span></a>
 example has been extended
so that it allows for both scalar and vector evaluation of the
objective and constraints; see the argument 
<code><i><font color="black"><span style='white-space: nowrap'>fg_vector</span></font></i></code>
 in
<a href="cppad_ipopt_nlp.xml" target="_top"><span style='white-space: nowrap'>ipopt_cppad_nlp</span></a>
.
In the case where there is not a lot of common terms
between the functions, the scalar evaluation may be more efficient.

<br/>
<br/>
<b><big><a name="08-19" id="08-19">08-19</a></big></b>
<br/>
Add <a href="cppad_vector.xml#push_vector" target="_top"><span style='white-space: nowrap'>push&#xA0;of&#xA0;a&#xA0;vector</span></a>

to the <code><font color="blue">CppAD::vector</font></code> template class.
This makes it easy to accumulate multiple scalars and
<a href="simplevector.xml" target="_top"><span style='white-space: nowrap'>simple&#xA0;vectors</span></a>
 into one large <code><font color="blue">CppAD::vector</font></code>.

<br/>
<br/>
<b><big><a name="08-08" id="08-08">08-08</a></big></b>
<br/>
There was an indexing bug in the 
<a href="cppad_ipopt_nlp.xml" target="_top"><span style='white-space: nowrap'>ipopt_cppad_nlp</span></a>
 example
that affected the 
<code><i><font color="black"><span style='white-space: nowrap'>retape</span></font></i></code>
 equal to <code><font color="blue">false</font></code> case.
This has been fixed.
In addition, the missing 

<code><i><font color="black"><span style='white-space: nowrap'>retape</span></font></i></code>
 documentation was added.

<br/>
<br/>
<b><big><a name="07-02" id="07-02">07-02</a></big></b>
<br/>
Extend <a href="installunix.xml#Configure" target="_top"><span style='white-space: nowrap'>configure</span></a>
 command to check for
extras libraries that are necessary for linking the ipopt example.

<br/>
<br/>
<b><big><a name="06-18" id="06-18">06-18</a></big></b>
<br/>
Add specifications for the Ipopt class <a href="cppad_ipopt_nlp.xml" target="_top"><span style='white-space: nowrap'>ipopt_cppad_nlp</span></a>
.
This is only an example class it may change with future 
versions of CppAD.

<br/>
<br/>
<b><big><a name="06-15" id="06-15">06-15</a></big></b>
<br/>
The nonlinear programming example <a href="ipopt_get_started.cpp.xml" target="_top"><span style='white-space: nowrap'>ipopt_get_started.cpp</span></a>
 was added.
This is a preliminary version of this example.

<br/>
<br/>
<b><big><a name="06-11" id="06-11">06-11</a></big></b>
<br/>
The sparsity pattern for the Hessian was being calculated each time
by <a href="sparse_hessian.xml" target="_top"><span style='white-space: nowrap'>SparseHessian</span></a>
.
This is not efficient
when the pattern does not change between calls to <code><font color="blue">SparseHessian</font></code>.
An optional sparsity pattern argument was added to <code><font color="blue">SparseHessian</font></code>
so that it need not be recalculated each time.

<br/>
<br/>
<b><big><a name="06-10" id="06-10">06-10</a></big></b>
<br/>
The sparsity pattern for the Jacobian was being calculated each time
by <a href="sparse_jacobian.xml" target="_top"><span style='white-space: nowrap'>SparseJacobian</span></a>
.
This is not efficient
when the pattern does not change between calls to <code><font color="blue">SparseJacobian</font></code>.
An optional sparsity pattern argument was added to <code><font color="blue">SparseJacobian</font></code>
so that it need not be recalculated each time.

<br/>
<br/>
<b><big><a name="05-08" id="05-08">05-08</a></big></b>
<br/>
The <a href="sparse_jacobian.xml" target="_top"><span style='white-space: nowrap'>sparse_jacobian</span></a>
 routine has been added.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>The example in <a href="sparse_hessian.xml" target="_top"><span style='white-space: nowrap'>sparse_hessian</span></a>
 pointed to <a href="hessian.cpp.xml" target="_top"><span style='white-space: nowrap'>Hessian.cpp</span></a>

instead of <a href="sparse_hessian.cpp.xml" target="_top"><span style='white-space: nowrap'>sparse_hessian.cpp</span></a>
.
This has been fixed.

<br/>
<br/>
<b><big><a name="05-03" id="05-03">05-03</a></big></b>
<br/>
The <code><font color="blue">retape</font></code> flag has been added to <a href="speed_main.xml" target="_top"><span style='white-space: nowrap'>speed_main</span></a>
.
In addition the routines
<a href="link_det_minor.xml" target="_top"><span style='white-space: nowrap'>link_det_minor</span></a>
, <a href="link_poly.xml" target="_top"><span style='white-space: nowrap'>link_poly</span></a>
, and <a href="link_ode.xml" target="_top"><span style='white-space: nowrap'>link_ode</span></a>

pass this flag along to the speed test implementations
(because the corresponding tests have a fixed operation sequence).
If this flag is false, a test implementation is allowed to just tape
the operation sequence once and reuse it. 
The following tests use this flag:
<a href="adolc_det_minor.cpp.xml" target="_top"><span style='white-space: nowrap'>adolc_det_minor.cpp</span></a>
,
<a href="cppad_det_minor.cpp.xml" target="_top"><span style='white-space: nowrap'>cppad_det_minor.cpp</span></a>
,
<a href="cppad_ode.cpp.xml" target="_top"><span style='white-space: nowrap'>cppad_ode.cpp</span></a>
,
<a href="adolc_poly.cpp.xml" target="_top"><span style='white-space: nowrap'>adolc_poly.cpp</span></a>
,
<a href="cppad_poly.cpp.xml" target="_top"><span style='white-space: nowrap'>cppad_poly.cpp</span></a>
.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>Create specialized zero order forward mode routine that should be faster,
but does not test out as faster under cygwin g++ (GCC) 3.4.4.




<br/>
<br/>
<b><big><a name="04-20" id="04-20">04-20</a></big></b>
<br/>
Added the <a href="ode_evaluate.xml" target="_top"><span style='white-space: nowrap'>ode_evaluate</span></a>
 speed test utility in 
preparation for having ode speed tests.
Created ode speed test for the <code><font color="blue">cppad</font></code> and <code><font color="blue">double</font></code> 
cases; see <a href="speed_main.xml" target="_top"><span style='white-space: nowrap'>speed_main</span></a>
.
In addition, 
added the examples <a href="ode_evaluate.cpp.xml" target="_top"><span style='white-space: nowrap'>ode_evaluate.cpp</span></a>
 and <a href="sparse_hessian.cpp.xml" target="_top"><span style='white-space: nowrap'>sparse_hessian.cpp</span></a>
.
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>Changed the <a href="speed_main.xml" target="_top"><span style='white-space: nowrap'>speed_main</span></a>
 routines defined for each package
from 
<code><font color="blue"><span style='white-space: nowrap'>compute_</span></font><i><font color="black"><span style='white-space: nowrap'>name</span></font></i></code>
 to 
<code><font color="blue"><span style='white-space: nowrap'>link_</span></font><i><font color="black"><span style='white-space: nowrap'>name</span></font></i></code>
.
For example, in <code><font color="blue">speed/cppad/det_minor.cpp</font></code>,
the function name 
<code><font color="blue">compute_det_minor</font></code> was changed to <code><font color="blue">link_det_minor</font></code>.


<br/>
<br/>
<b><big><a name="04-18" id="04-18">04-18</a></big></b>
<br/>
Fix a problem in the <a href="link_poly.xml" target="_top"><span style='white-space: nowrap'>link_poly</span></a>
 correctness test.
Also add <a href="double_sparse_hessian.cpp.xml" target="_top"><span style='white-space: nowrap'>double_sparse_hessian.cpp</span></a>
 to the set 
speed and correctness tests (now available).


<br/>
<br/>
<b><big><a name="04-10" id="04-10">04-10</a></big></b>
<br/>
Change all the 
<a href="speed_adolc.xml" target="_top"><span style='white-space: nowrap'>Adolc&#xA0;speed</span></a>
 examples to use
<a href="tracknewdel.xml" target="_top"><span style='white-space: nowrap'>TrackNewDel</span></a>
 instead of using <code><font color="blue">new</font></code> and <code><font color="blue">delete</font></code>
directly.
This makes it easy to check for memory allocation errors and leaks
(when <code><font color="blue">NDEBUG</font></code> is not defined).
Also include in documentation sub functions that indicate 
the <code><font color="blue">sparse_hessian</font></code> speed test is not available for
<a href="double_sparse_hessian.cpp.xml" target="_top"><span style='white-space: nowrap'>double_sparse_hessian.cpp</span></a>
,
<a href="fadbad_sparse_hessian.cpp.xml" target="_top"><span style='white-space: nowrap'>fadbad_sparse_hessian.cpp</span></a>
, and
<a href="sacado_sparse_hessian.cpp.xml" target="_top"><span style='white-space: nowrap'>sacado_sparse_hessian.cpp</span></a>
.

<br/>
<br/>
<b><big><a name="04-06" id="04-06">04-06</a></big></b>
<br/>
The following <a href="wishlist.xml" target="_top"><span style='white-space: nowrap'>wish&#xA0;list</span></a>
 
entry has been completed and removed from the list:
&quot;Change private member variables names
(not part of the user interface)
so that they all end with an underscore.&quot;

<br/>
<br/>
<b><big><a name="04-04" id="04-04">04-04</a></big></b>
<br/>
Fix a problem compiling the speed test
<a href="speed_main.xml" target="_top"><span style='white-space: nowrap'>main</span></a>
 program with gcc 4.3.

<br/>
<br/>
<b><big><a name="03-27" id="03-27">03-27</a></big></b>
<br/>
Corrected <a href="cppad_sparse_hessian.cpp.xml" target="_top"><span style='white-space: nowrap'>cppad_sparse_hessian.cpp</span></a>

so that it uses the sparse case when 
<code><font color="blue">USE_CPPAD_SPARSE_HESSIAN</font></code> is <code><font color="blue">1</font></code>.
Also added a wish list sparsity pattern entry
(the <a href="glossary.xml#Sparsity Pattern" target="_top"><span style='white-space: nowrap'>sparsity&#xA0;pattern</span></a>
 entry
has been fulfilled). 
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>Change the name of <code><font color="blue">speedtest.cpp</font></code> to <a href="speed_program.cpp.xml" target="_top"><span style='white-space: nowrap'>speed_program.cpp</span></a>
.


<br/>
<br/>
<b><big><a name="02-05" id="02-05">02-05</a></big></b>
<br/>
Change <a href="installwindows.xml" target="_top"><span style='white-space: nowrap'>windows&#xA0;install&#xA0;instructions</span></a>
 
instructions to use Unix formatted files (so only two instead of
four tarballs are necessary for each version).
The Microsoft project files for
<code><font color="blue">speed/cppad</font></code>, <code><font color="blue">speed/double</font></code>, and <code><font color="blue">speed/example</font></code>
were missing. This has also been fixed.

<br/>
<br/>
<b><big><a name="02-03" id="02-03">02-03</a></big></b>
<br/>
There was an ambiguity problem 
(detected by g++ 4.3) with the following operations
<code><font color="blue"><span style='white-space: nowrap'><br/>
&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;</span></font></code><i><span style='white-space: nowrap'>x</span></i><code><font color="blue"><span style='white-space: nowrap'>&#xA0;</span></font></code><i><span style='white-space: nowrap'>op</span></i><code><font color="blue"><span style='white-space: nowrap'>&#xA0;</span></font></code><i><span style='white-space: nowrap'>y</span></i><code><font color="blue"><span style='white-space: nowrap'><br/>
</span></font></code>where <i>x</i> and <i>y</i> were <code><font color="blue">AD&lt;double&gt;</font></code> and
<i>op</i> was a member operator of that class.
This has been fixed by making all such member functions friends
instead of members of <code><font color="blue">AD&lt;double&gt;</font></code>. 
<code><span style='white-space: nowrap'><br/>
<br/>
</span></code>Remove computed assignment entry from wish list
(it was fixed on <a href="whats_new_07.xml#05-26" target="_top"><span style='white-space: nowrap'>2007-05-26</span></a>
).
Add 
<a href="wishlist.xml#Optimization.Expression Hashing" target="_top"><span style='white-space: nowrap'>expression&#xA0;hashing</span></a>

to the wish list.
Add Library and Scripting Languages to the wish list
(this has since been fulfilled by the example <a href="ad_in_c.cpp.xml" target="_top"><span style='white-space: nowrap'>ad_in_c.cpp</span></a>
).

<br/>
<br/>
<b><big><a name="01-26" id="01-26">01-26</a></big></b>
<br/>
The <a href="lufactor.xml" target="_top"><span style='white-space: nowrap'>LuFactor</span></a>
 routine gave a misleading error message 
when the input matrix had not a number or infinity in it.
This has been fixed.

<br/>
<br/>
<b><big><a name="01-24" id="01-24">01-24</a></big></b>
<br/>
The <a href="installunix.xml#PostfixDir" target="_top"><span style='white-space: nowrap'>postfix&#xA0;directory</span></a>

has been added to the <code><font color="blue">configure</font></code> command line options.

<br/>
<br/>
<b><big><a name="01-21" id="01-21">01-21</a></big></b>
<br/>
A sparse Hessian case was added to the <a href="speed.xml" target="_top"><span style='white-space: nowrap'>speed</span></a>
 tests; see
<a href="link_sparse_hessian.xml" target="_top"><span style='white-space: nowrap'>sparse_hessian</span></a>
.

<br/>
<br/>
<b><big><a name="01-20" id="01-20">01-20</a></big></b>
<br/>
CppAD can now be installed using <code><font color="blue">yum</font></code> on 
<a href="installunix.xml#Fedora" target="_top"><span style='white-space: nowrap'>Fedora</span></a>
 operating systems.


<br/>
<br/>
<b><big><a name="01-11" id="01-11">01-11</a></big></b>
<br/>
The CppAD correctness tests assume that machine epsilon is less
than <code><font color="blue">1e-13</font></code>. A test for this has been added to the
<code><font color="blue">test_more/test_more</font></code> program.

<br/>
<br/>
<b><big><a name="01-08" id="01-08">01-08</a></big></b>
<br/>
Added a <a href="sparse_hessian.xml" target="_top"><span style='white-space: nowrap'>sparse_hessian</span></a>
 routine and
extended <a href="hessian.xml" target="_top"><span style='white-space: nowrap'>Hessian</span></a>
 to allow for a weight vector <i>w</i>
instead of just one component <i>l</i>.


<hr/>Input File: omh/whats_new_08.omh

</body>
</html>

