<?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 2016</title>
<meta http-equiv='Content-Type' content='text/html' charset='utf-8'/>
<meta name="description" id="description" content="Changes and Additions to CppAD During 2016"/>
<meta name="keywords" id="keywords" content=" changes additions to cppad during 2016 introduction 12-23 12-20 12-18 12-13 12-11 12-09 11-18 11-14 11-13 10-27 10-12 09-29 09-27 09-26 09-16 09-13 08-30 08-25 07-17 07-14 06-30 06-29 06-27 06-25 06-10 05-05 04-17 03-27 03-26 03-25 03-24 03-23 03-22 03-21 03-20 03-19 03-17 03-12 03-05 03-01 02-29 02-28 02-27 02-26 02-25 02-23 01-21 01-20 01-18 "/>
<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_16_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_17.xml" target="_top">Prev</a>
</td><td><a href="whats_new_15.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_16</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>preprocessor</option>
<option>multi_thread</option>
<option>utility</option>
<option>ipopt_solve</option>
<option>Example</option>
<option>speed</option>
<option>Appendix</option>
</select>
</td>
<td>
<select onchange='choose_down2(this)'>
<option>Appendix-&gt;</option>
<option>Faq</option>
<option>directory</option>
<option>Theory</option>
<option>glossary</option>
<option>Bib</option>
<option>wish_list</option>
<option>whats_new</option>
<option>deprecated</option>
<option>compare_c</option>
<option>numeric_ad</option>
<option>addon</option>
<option>License</option>
</select>
</td>
<td>
<select onchange='choose_down1(this)'>
<option>whats_new-&gt;</option>
<option>whats_new_17</option>
<option>whats_new_16</option>
<option>whats_new_15</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_16</td>
<td>
<select onchange='choose_current0(this)'>
<option>Headings-&gt;</option>
<option>Introduction</option>
<option>12-23</option>
<option>12-20</option>
<option>12-18</option>
<option>12-13</option>
<option>12-11</option>
<option>12-09</option>
<option>11-18</option>
<option>11-14</option>
<option>11-13</option>
<option>10-27</option>
<option>10-12</option>
<option>09-29</option>
<option>09-27</option>
<option>09-26</option>
<option>09-16</option>
<option>09-13</option>
<option>08-30</option>
<option>08-25</option>
<option>07-17</option>
<option>07-14</option>
<option>06-30</option>
<option>06-29</option>
<option>06-27</option>
<option>06-25</option>
<option>06-10</option>
<option>05-05</option>
<option>04-17</option>
<option>03-27</option>
<option>03-26</option>
<option>03-25</option>
<option>03-24</option>
<option>03-23</option>
<option>03-22</option>
<option>03-21</option>
<option>03-20</option>
<option>03-19</option>
<option>03-17</option>
<option>03-12</option>
<option>03-05</option>
<option>03-01</option>
<option>02-29</option>
<option>02-28</option>
<option>02-27</option>
<option>02-26</option>
<option>02-25</option>
<option>02-23</option>
<option>01-21</option>
<option>01-20</option>
<option>01-18</option>
</select>
</td>
</tr></table><br/>



<center><b><big><big>Changes and Additions to CppAD During 2016</big></big></b></center>
<br/>
<b><big><a name="Introduction" id="Introduction">Introduction</a></big></b>
<br/>
The sections listed below contain a list of the changes to CppAD
in reverse order by date.
The purpose of these sections is to
assist you in learning about changes between various versions of CppAD.

<br/>
<br/>
<b><big><a name="12-23" id="12-23">12-23</a></big></b>
<br/>
Added a way for the user to determine what tests options are available; see
<a href="cmake.xml#make check" target="_top"><span style='white-space: nowrap'>make&#xA0;check</span></a>
.

<br/>
<br/>
<b><big><a name="12-20" id="12-20">12-20</a></big></b>
<br/>
Change the optimize <a href="optimize.xml#Examples" target="_top"><span style='white-space: nowrap'>examples</span></a>
 to use
<a href="nearequal.xml" target="_top"><span style='white-space: nowrap'>NearEqual</span></a>
 for floating point tests (instead of exactly equal).
There were some other exactly equal floating point tests that were
failing on a <code><font color="blue">mingw</font></code> system. Theses have also been fixed.

<br/>
<br/>
<b><big><a name="12-18" id="12-18">12-18</a></big></b>
<br/>
Add the <a href="optimize.xml#options.no_print_for_op" target="_top"><span style='white-space: nowrap'>no_print_for_op</span></a>
 to the
optimize routine.

<br/>
<br/>
<b><big><a name="12-13" id="12-13">12-13</a></big></b>

<ol type="1"><li>
Fix a bug in <a href="forsparsehes.xml" target="_top"><span style='white-space: nowrap'>ForSparseHes</span></a>
. To be more specific,
there was a bug in handling the cumulative summations operator in this
routine. This could only come up when used
an <a href="optimize.xml" target="_top"><span style='white-space: nowrap'>optimized</span></a>
 <a href="forsparsehes.xml#f" target="_top"><span style='white-space: nowrap'>f</span></a>
,
</li><li>

Add the
<a href="optimize_nest_conditional.cpp.xml" target="_top"><span style='white-space: nowrap'>nest_conditional.cpp</span></a>
 example.
</li></ol>



<br/>
<br/>
<b><big><a name="12-11" id="12-11">12-11</a></big></b>
<br/>
Improve the <a href="optimize.xml" target="_top"><span style='white-space: nowrap'>optimize</span></a>
 documentation.
This includes making examples that demonstrate
specific aspects of the optimization; see
<a href="optimize_forward_active.cpp.xml" target="_top"><span style='white-space: nowrap'>forward_active.cpp</span></a>
,
<a href="optimize_reverse_active.cpp.xml" target="_top"><span style='white-space: nowrap'>reverse_active.cpp</span></a>
,
<a href="optimize_compare_op.cpp.xml" target="_top"><span style='white-space: nowrap'>compare_op.cpp</span></a>
,
<a href="optimize_conditional_skip.cpp.xml" target="_top"><span style='white-space: nowrap'>conditional_skip.cpp</span></a>
,
<a href="optimize_cumulative_sum.cpp.xml" target="_top"><span style='white-space: nowrap'>cumulative_sum.cpp</span></a>
.


<br/>
<br/>
<b><big><a name="12-09" id="12-09">12-09</a></big></b>
<br/>
The <a href="optimize.xml#options" target="_top"><span style='white-space: nowrap'>options</span></a>
 argument was added to the
optimize routine.

<br/>
<br/>
<b><big><a name="11-18" id="11-18">11-18</a></big></b>
<br/>
Move classes and functions that are part of the user API from the
<code><font color="blue">cppad/local</font></code> directory to the <code><font color="blue">cppad/core</font></code> directory.
The remaining symbols, in the <code><font color="blue">cppad/local</font></code> directory, are now
in the <code><font color="blue">CppAD::local</font></code> namespace.
Note that a class in the <code><font color="blue">CppAD</font></code> name space, may have a member
function that is not part of the user API.

<br/>
<br/>
<b><big><a name="11-14" id="11-14">11-14</a></big></b>
<br/>
Increase the speed of the <code><font color="blue">sparse_pack</font></code> class.
This improves the speed for
<a href="glossary.xml#Sparsity Pattern.Boolean Vector" target="_top"><span style='white-space: nowrap'>vector&#xA0;of&#xA0;boolean</span></a>

sparsity pattern calculations.

<br/>
<br/>
<b><big><a name="11-13" id="11-13">11-13</a></big></b>
<br/>
Merged in the <code><font color="blue">sparse</font></code> branch which has <code><font color="blue">const_iterator</font></code>,
instead of <code><font color="blue">next_element</font></code> for the
<code><font color="blue">sparse_list</font></code> and <code><font color="blue">sparse_pack</font></code> classes.
These classes are not part of the CppAD API and hence their specifications
can change (as in this case).
They can be used to get more efficient representations of
<a href="glossary.xml#Sparsity Pattern" target="_top"><span style='white-space: nowrap'>sparsity&#xA0;patterns</span></a>
.

<br/>
<br/>
<b><big><a name="10-27" id="10-27">10-27</a></big></b>
<br/>
The optional <a href="checkpoint.xml#optimize" target="_top"><span style='white-space: nowrap'>optimize</span></a>
 option
was added to the checkpoint functions.

<br/>
<br/>
<b><big><a name="10-12" id="10-12">10-12</a></big></b>

<ol type="1"><li>
Change <a href="elapsed_seconds.xml" target="_top"><span style='white-space: nowrap'>elapsed_seconds</span></a>
 to use
<code><font color="blue">std::chrono::steady_clock</font></code> instead of
<code><font color="blue">std::chrono::high_resolution_clock</font></code>.
</li><li>

The test for C++11 features was failing on a Mac system
because the elapsed time was returning as zero (between two events).
This test has been made more robust by add a one millisecond sleep
between the two clock accesses.
</li></ol>



<br/>
<br/>
<b><big><a name="09-29" id="09-29">09-29</a></big></b>
<br/>
The multiple directions version of
<a href="forward_dir.xml" target="_top"><span style='white-space: nowrap'>forward</span></a>
 was missing <a href="erf.xml" target="_top"><span style='white-space: nowrap'>erf</span></a>
 function
in the case where C++ 2011 was supported; see
<a href="https://github.com/coin-or/CppAD/issues/16" target="_top"><span style='white-space: nowrap'>issue&#xA0;16</span></a>
.
This has been fixed.

<br/>
<br/>
<b><big><a name="09-27" id="09-27">09-27</a></big></b>
<br/>
Change the implementation of <a href="atomic_eigen_cholesky.hpp.xml" target="_top"><span style='white-space: nowrap'>atomic_eigen_cholesky.hpp</span></a>
 so that
the computation of 
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"><mrow>
<msub><mi mathvariant='italic'>M</mi>
<mi mathvariant='italic'>k</mi>
</msub>
</mrow></math>

 exactly agrees with the corresponding
<a href="cholesky_theory.xml" target="_top"><span style='white-space: nowrap'>theory</span></a>
.

<br/>
<br/>
<b><big><a name="09-26" id="09-26">09-26</a></big></b>

<ol type="1"><li>
A possible bug in the <a href="optimize.xml" target="_top"><span style='white-space: nowrap'>optimize</span></a>
 command was fixed.
To be specific, a warning of the form
indentations;

<code><font color="blue"><span style='white-space: nowrap'><br/>
&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;warning:&#xA0;this&#xA0;'if'&#xA0;clause&#xA0;does&#xA0;not&#xA0;guard...&#xA0;[-Wmisleading-indentation]<br/>
</span></font></code>
using the gcc-6.2.1 compiler, was fixed and it may have fixed a bug.
</li><li>

There was a problem with the
<a href="speed_sacado.xml" target="_top"><span style='white-space: nowrap'>sacado</span></a>
 where the symbol
<code><font color="blue">HAS_C99_TR1_CMATH</font></code> was being defined twice.
This has been fixed by leaving it up to the sacado install to determine
if this symbol should be defined.
</li></ol>


<br/>
<br/>
<b><big><a name="09-16" id="09-16">09-16</a></big></b>
<br/>
Fix a problem using the
<a href="speed_main.xml#Sparsity Options.colpack" target="_top"><span style='white-space: nowrap'>colpack</span></a>
 option to the
<code><font color="blue">speed_cppad</font></code> program.
(There was a problem whereby the <code><font color="blue">speed_cppad</font></code>
program did not properly detect when <code><font color="blue">colpack</font></code> was available.)

<br/>
<br/>
<b><big><a name="09-13" id="09-13">09-13</a></big></b>
<br/>
Test third order and fix
bug in <a href="atomic_eigen_cholesky.hpp.xml" target="_top"><span style='white-space: nowrap'>atomic_eigen_cholesky.hpp</span></a>
 for orders greater
than or equal to three.

<br/>
<br/>
<b><big><a name="08-30" id="08-30">08-30</a></big></b>
<br/>
Add the <a href="atomic_eigen_cholesky.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_eigen_cholesky.cpp</span></a>
 example.

<br/>
<br/>
<b><big><a name="08-25" id="08-25">08-25</a></big></b>

<ol type="1"><li>
Fix some missing include files in
<code><font color="blue">optimize.hpp</font></code> and <code><font color="blue">set_union.hpp</font></code>
(when compiling with MS Visual Studio 2015).
</li><li>

Fix a warning in <code><font color="blue">atanh.hpp</font></code>
(when compiling with MS Visual Studio 14).
</li><li>

Fix a typo in the
<a href="atomic_eigen_mat_inv.hpp.xml#Theory.Reverse" target="_top"><span style='white-space: nowrap'>Reverse</span></a>
 section of the
<code><font color="blue">eigen_mat_inv.hpp</font></code> example.
</li></ol>


<br/>
<br/>
<b><big><a name="07-17" id="07-17">07-17</a></big></b>
<br/>
Add documentation for only needing to compute a
<a href="sparse_hessian.xml#p.Column Subset" target="_top"><span style='white-space: nowrap'>column&#xA0;subset</span></a>
 of the sparsity
pattern when computing a subset of a sparse Hessians.
In addition, improve the corresponding example
<a href="sparse_sub_hes.cpp.xml" target="_top"><span style='white-space: nowrap'>sparse_sub_hes.cpp</span></a>
.

<br/>
<br/>
<b><big><a name="07-14" id="07-14">07-14</a></big></b>
<br/>
Correct title in <a href="forsparsehes.xml" target="_top"><span style='white-space: nowrap'>ForSparseHes</span></a>
 (change Reverse to Forward).

<br/>
<br/>
<b><big><a name="06-30" id="06-30">06-30</a></big></b>
<br/>
Change the <a href="atomic_mat_mul.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_mat_mul.cpp</span></a>
 example so that on atomic object
works for matrices of any size.

<br/>
<br/>
<b><big><a name="06-29" id="06-29">06-29</a></big></b>
<br/>
Change the <a href="atomic_base.xml" target="_top"><span style='white-space: nowrap'>atomic_base</span></a>
 examples so they do no longer use the
deprecated <a href="deprecated.xml#Atomic Functions" target="_top"><span style='white-space: nowrap'>atomic&#xA0;function</span></a>
 interfaces to
<code><font color="blue">for_sparse_jac</font></code>, <code><font color="blue">rev_sparse_jac</font></code>,
<code><font color="blue">for_sparse_hes</font></code>, and <code><font color="blue">rev_sparse_hes</font></code>.

<br/>
<br/>
<b><big><a name="06-27" id="06-27">06-27</a></big></b>

<ol type="1"><li>
Improve the <a href="atomic_eigen_mat_mul.hpp.xml" target="_top"><span style='white-space: nowrap'>atomic_eigen_mat_mul.hpp</span></a>
 and
<a href="atomic_eigen_mat_inv.hpp.xml" target="_top"><span style='white-space: nowrap'>atomic_eigen_mat_inv.hpp</span></a>
 examples.
Most importantly, one atomic object now works for matrices of any size.
</li><li>

Add the vector 
<code><i><font color="black"><span style='white-space: nowrap'>x</span></font></i></code>
,
that contains the parameters in an atomic function call
to the user following atomic functions:
<a href="atomic_rev_sparse_jac.xml#Implementation.x" target="_top"><span style='white-space: nowrap'>for_sparse_jac</span></a>
,
<a href="atomic_rev_sparse_jac.xml#Implementation.x" target="_top"><span style='white-space: nowrap'>rev_sparse_jac</span></a>
,
<a href="atomic_rev_sparse_jac.xml#Implementation.x" target="_top"><span style='white-space: nowrap'>for_sparse_hes</span></a>
,
<a href="atomic_rev_sparse_jac.xml#Implementation.x" target="_top"><span style='white-space: nowrap'>rev_sparse_hes</span></a>
.
This enables one to pass parameter information to these functions; e.g.,
the dimensions of matrices that the function operates on.
</li></ol>



<br/>
<br/>
<b><big><a name="06-25" id="06-25">06-25</a></big></b>
<br/>
Add more entries to the optimization
<a href="wish_list.xml#Optimization" target="_top"><span style='white-space: nowrap'>wish_list</span></a>
.

<br/>
<br/>
<b><big><a name="06-10" id="06-10">06-10</a></big></b>
<br/>
Add a <a href="wish_list.xml#check_finite" target="_top"><span style='white-space: nowrap'>check_finite</span></a>
 wish list item.

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

<ol type="1"><li>
Add documentation for
<a href="printfor.xml#Redirecting Output" target="_top"><span style='white-space: nowrap'>redirecting&#xA0;output</span></a>
 for the
<code><font color="blue">PrintFor</font></code> function.
</li><li>

Change distributed version to build examples as debug instead
of release version.
(Was changed to release version while checking for compiler warnings;
see <code><font color="blue">04-17</font></code> below).
</li></ol>


<br/>
<br/>
<b><big><a name="04-17" id="04-17">04-17</a></big></b>
<br/>
Fix all some compiler warnings that occurred when compiling the
<a href="example.xml" target="_top"><span style='white-space: nowrap'>examples</span></a>
 with
<a href="faq.xml#Speed.NDEBUG" target="_top"><span style='white-space: nowrap'>NDEBUG</span></a>
 defined.

<br/>
<br/>
<b><big><a name="03-27" id="03-27">03-27</a></big></b>

<ol type="1"><li>
Fix a bug in the calculation of the <a href="atomic_eigen_mat_inv.hpp.xml" target="_top"><span style='white-space: nowrap'>atomic_eigen_mat_inv.hpp</span></a>

<a href="atomic_eigen_mat_inv.hpp.xml#Private.reverse" target="_top"><span style='white-space: nowrap'>reverse</span></a>
 example.
</li><li>

Use a very simple method (that over estimates variables) for calculating
<a href="atomic_forward.xml#vy" target="_top"><span style='white-space: nowrap'>vy</span></a>
 in the <a href="atomic_eigen_mat_inv.hpp.xml" target="_top"><span style='white-space: nowrap'>atomic_eigen_mat_inv.hpp</span></a>

<a href="atomic_eigen_mat_inv.hpp.xml#Private.forward" target="_top"><span style='white-space: nowrap'>forward</span></a>
 example.
</li></ol>


<br/>
<br/>
<b><big><a name="03-26" id="03-26">03-26</a></big></b>

<ol type="1"><li>
Implement and test the <a href="atomic_eigen_mat_inv.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_eigen_mat_inv.cpp</span></a>

<a href="atomic_eigen_mat_inv.hpp.xml#Private.reverse" target="_top"><span style='white-space: nowrap'>reverse</span></a>
 is implemented.
</li><li>

Fix a bug in the calculation of
<a href="atomic_forward.xml#vy" target="_top"><span style='white-space: nowrap'>vy</span></a>
 in the <a href="atomic_eigen_mat_inv.hpp.xml" target="_top"><span style='white-space: nowrap'>atomic_eigen_mat_inv.hpp</span></a>

<a href="atomic_eigen_mat_inv.hpp.xml#Private.forward" target="_top"><span style='white-space: nowrap'>forward</span></a>
 example.
</li></ol>



<br/>
<br/>
<b><big><a name="03-25" id="03-25">03-25</a></big></b>

<ol type="1"><li>
Start construction of the <a href="atomic_eigen_mat_inv.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_eigen_mat_inv.cpp</span></a>
 example,
currently only
<a href="atomic_eigen_mat_inv.hpp.xml#Private.forward" target="_top"><span style='white-space: nowrap'>forward</span></a>
 is implemented
and tested.
</li><li>

More improvements to <a href="atomic_eigen_mat_mul.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_eigen_mat_mul.cpp</span></a>
 example.
</li></ol>


<br/>
<br/>
<b><big><a name="03-24" id="03-24">03-24</a></big></b>

<ol type="1"><li>
Fix build of <code><font color="blue">example/atomic.cpp</font></code> when
<a href="eigen_prefix.xml" target="_top"><span style='white-space: nowrap'>eigen_prefix</span></a>
 is not available
(bug introduced when <a href="atomic_eigen_mat_mul.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_eigen_mat_mul.cpp</span></a>
 was added).
</li><li>

Extend <a href="atomic_eigen_mat_mul.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_eigen_mat_mul.cpp</span></a>
 example to include
<a href="atomic_eigen_mat_mul.hpp.xml#Private.for_sparse_jac" target="_top"><span style='white-space: nowrap'>for_sparse_jac</span></a>
,
<a href="atomic_eigen_mat_mul.hpp.xml#Private.rev_sparse_jac" target="_top"><span style='white-space: nowrap'>rev_sparse_jac</span></a>
,
<a href="atomic_eigen_mat_mul.hpp.xml#Private.for_sparse_hes" target="_top"><span style='white-space: nowrap'>for_sparse_hes</span></a>
,
<a href="atomic_eigen_mat_mul.hpp.xml#Private.rev_sparse_hes" target="_top"><span style='white-space: nowrap'>rev_sparse_hes</span></a>
.
</li><li>

Fix a bug in the <a href="forsparsehes.xml" target="_top"><span style='white-space: nowrap'>ForSparseHes</span></a>
 routine.
</li><li>

Edit <a href="atomic_rev_sparse_hes.xml" target="_top"><span style='white-space: nowrap'>atomic_rev_sparse_hes</span></a>
 documentation.
</li></ol>


<br/>
<br/>
<b><big><a name="03-23" id="03-23">03-23</a></big></b>

<ol type="1"><li>
Fix bug in autotools file <code><font color="blue">example/atomic/makefile.am</font></code>
(introduced on 03-22).
</li><li>

Improve the <a href="atomic_eigen_mat_mul.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_eigen_mat_mul.cpp</span></a>
 example
and extend it to include reverse mode.
</li></ol>


<br/>
<br/>
<b><big><a name="03-22" id="03-22">03-22</a></big></b>

<ol type="1"><li>
Start construction of the <a href="atomic_eigen_mat_mul.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_eigen_mat_mul.cpp</span></a>
 example.
</li><li>

change <code><font color="blue">atomic_ode.cpp</font></code> to <a href="checkpoint_ode.cpp.xml" target="_top"><span style='white-space: nowrap'>checkpoint_ode.cpp</span></a>
 and
<code><font color="blue">atomic_extended_ode.cpp</font></code> to <a href="checkpoint_extended_ode.cpp.xml" target="_top"><span style='white-space: nowrap'>checkpoint_extended_ode.cpp</span></a>
.
</li></ol>


<br/>
<br/>
<b><big><a name="03-21" id="03-21">03-21</a></big></b>
<br/>
Change the <a href="atomic_mat_mul.hpp.xml" target="_top"><span style='white-space: nowrap'>atomic_mat_mul.hpp</span></a>
 class name from <code><font color="blue">mat_mul</font></code>
to <code><font color="blue">atomic_mat_mul</font></code>. This example use of the name <code><font color="blue">mat_mul</font></code>
in the <a href="atomic_mat_mul.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_mat_mul.cpp</span></a>
 example / test.

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

<ol type="1"><li>
Include the sub-directory name to the include guards
in 
<code><i><font color="black"><span style='white-space: nowrap'>*</span></font></i><font color="blue"><span style='white-space: nowrap'>.hpp</span></font></code>
 files. For example,
<code><font color='blue'><pre style='display:inline'> 
     # ifndef CPPAD_UTILITY_VECTOR_HPP
     # define CPPAD_UTILITY_VECTOR_HPP
</pre></font></code>
appears in the file <code><font color="blue">cppad/utility/vector.hpp</font></code>. This makes it
easier to avoid conflicts when choosing <a href="addon.xml" target="_top"><span style='white-space: nowrap'>addon</span></a>
 names.
</li><li>

Add the <a href="set_union.xml" target="_top"><span style='white-space: nowrap'>set_union</span></a>
 utility and use it to simplify the
<a href="atomic.xml" target="_top"><span style='white-space: nowrap'>atomic</span></a>
 examples that use
<a href="glossary.xml#Sparsity Pattern.Vector of Sets" target="_top"><span style='white-space: nowrap'>vector&#xA0;of&#xA0;sets</span></a>

sparsity patterns.
</li></ol>



<br/>
<br/>
<b><big><a name="03-19" id="03-19">03-19</a></big></b>

<ol type="1"><li>
Move <a href="atomic_mat_mul.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_mat_mul.cpp</span></a>
 to <code><font color="blue">atomic_mat_mul_xam.cpp</font></code>
(moved back on <a href="whats_new_16.xml#03-21" target="_top"><span style='white-space: nowrap'>03-21</span></a>
.
</li><li>

Move <code><font color="blue">atomic_matrix_mul.hpp</font></code> to <a href="atomic_mat_mul.hpp.xml" target="_top"><span style='white-space: nowrap'>atomic_mat_mul.hpp</span></a>
.
</li></ol>


<br/>
<br/>
<b><big><a name="03-17" id="03-17">03-17</a></big></b>
<br/>
Add the
<code><font color="blue">atomic_ode.cpp</font></code> and <code><font color="blue">atomic_extended_ode.cpp</font></code> examples.

<br/>
<br/>
<b><big><a name="03-12" id="03-12">03-12</a></big></b>

<ol type="1"><li>
Move the example <code><font color="blue">reverse_any.cpp</font></code> to <a href="reverse_checkpoint.cpp.xml" target="_top"><span style='white-space: nowrap'>reverse_checkpoint.cpp</span></a>
.
</li><li>

Add the <a href="atomic_mul_level.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_mul_level.cpp</span></a>
 example.
</li></ol>


<br/>
<br/>
<b><big><a name="03-05" id="03-05">03-05</a></big></b>
<br/>
The following atomic function examples were added
These examples are for a specific atomic operation.
In addition, the domain and range dimensions for these examples
are not one and not equal to each other:
<a href="atomic_forward.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_forward.cpp</span></a>
,
<a href="atomic_reverse.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_reverse.cpp</span></a>
,
<a href="atomic_for_sparse_jac.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_for_sparse_jac.cpp</span></a>
,
<a href="atomic_rev_sparse_jac.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_rev_sparse_jac.cpp</span></a>
,
<a href="atomic_for_sparse_hes.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_for_sparse_hes.cpp</span></a>
,
<a href="atomic_rev_sparse_hes.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_rev_sparse_hes.cpp</span></a>
.


<br/>
<br/>
<b><big><a name="03-01" id="03-01">03-01</a></big></b>

<ol type="1"><li>
Improve documentation of implementation requirements for the atomic
<a href="atomic_rev_sparse_jac.xml#Implementation" target="_top"><span style='white-space: nowrap'>rev_sparse_jac</span></a>
.
</li><li>

Make some corrections to the <a href="atomic_for_sparse_hes.xml" target="_top"><span style='white-space: nowrap'>atomic_for_sparse_hes</span></a>
 documentation.
and fix a bug in how CppAD used these functions.
</li></ol>


<br/>
<br/>
<b><big><a name="02-29" id="02-29">02-29</a></big></b>

<ol type="1"><li>
Merged sparse into master branch. This makes the
<a href="forsparsehes.xml" target="_top"><span style='white-space: nowrap'>ForSparseHes</span></a>
 routine available for use.
</li><li>

Changed the
<a href="speed_main.xml#Global Options" target="_top"><span style='white-space: nowrap'>global&#xA0;options</span></a>

in the speed test main program to use one global variable with prototype
<pre style='display:inline'><tt>
     <span style="font-weight: bold"><span style="color: #0000FF">extern</span></span> std<span style="color: #990000">::</span><span style="color: #008080">map&lt;std::string, bool&gt;</span> global_option<span style="color: #990000">;</span>
</tt></pre>
</li></ol>
<br/>
<b><big><a name="02-28" id="02-28">02-28</a></big></b>
<br/>
Fix a mistake in the old atomic
<code><font color="blue">example/sparsity/sparsity.cpp</font></code> example.
This example has since been changed to
<a href="atomic_set_sparsity.cpp.xml" target="_top"><span style='white-space: nowrap'>atomic_set_sparsity.cpp</span></a>
.


<br/>
<br/>
<b><big><a name="02-27" id="02-27">02-27</a></big></b>
<br/>
The <code><font color="blue">--with-sparse_set</font></code> and <code><font color="blue">--with-sparse_set</font></code> options
were removed from the <a href="autotools.xml" target="_top"><span style='white-space: nowrap'>autotools</span></a>
 install procedure.

<br/>
<br/>
<b><big><a name="02-26" id="02-26">02-26</a></big></b>
<br/>
The condition that the operation sequence in 
<code><i><font color="black"><span style='white-space: nowrap'>f</span></font></i></code>
 is
<a href="glossary.xml#Operation.Independent" target="_top"><span style='white-space: nowrap'>independent</span></a>
 of
the independent variables was added to the statement about
the validity of the sparsity patterns; see 
<code><i><font color="black"><span style='white-space: nowrap'>x</span></font></i></code>
 in
<a href="forsparsejac.xml#x" target="_top"><span style='white-space: nowrap'>ForSparseJac</span></a>
,
<a href="revsparsejac.xml#x" target="_top"><span style='white-space: nowrap'>RevSparseJac</span></a>
, and
<a href="revsparsehes.xml#x" target="_top"><span style='white-space: nowrap'>RevSparseHes</span></a>
.

<br/>
<br/>
<b><big><a name="02-25" id="02-25">02-25</a></big></b>
<br/>
The <a href="cmake.xml" target="_top"><span style='white-space: nowrap'>cmake</span></a>
 command line argument <code><font color="blue">cppad_sparse_list</font></code>
has been removed (because it is so much better than the other option).

<br/>
<br/>
<b><big><a name="02-23" id="02-23">02-23</a></big></b>
<br/>
A new version of the
<code><font color="blue">cppad_sparse_list</font></code> class (not part of user API) uses
reference counters to reduce the number of copies of sets that are equal.
This improved the speed of sparsity pattern computations that use
the <a href="glossary.xml#Sparsity Pattern.Vector of Sets" target="_top"><span style='white-space: nowrap'>vector&#xA0;of&#xA0;sets</span></a>

representation.
For example, the results for the
<a href="cppad_sparse_hessian.cpp.xml" target="_top"><span style='white-space: nowrap'>cppad_sparse_hessian.cpp</span></a>
 test compare as follows:
<code><font color='blue'><pre style='display:inline'> 
     sparse_hessian_size     = [  100,    400,   900,  1600, 2500 ]
     sparse_hessian_rate_old = [ 1480, 265.21, 93.33, 41.93, 0.86 ]
     sparse_hessian_rate_new = [ 1328, 241.61, 92.99, 40.51, 3.80 ]
</pre></font></code>
Note that the improvement is only for large problems. In fact,
for large problems, preliminary testing indicates that
the new vector of sets representation preforms better than
the <a href="glossary.xml#Sparsity Pattern.Boolean Vector" target="_top"><span style='white-space: nowrap'>vector&#xA0;of&#xA0;boolean</span></a>

representation.


<br/>
<br/>
<b><big><a name="01-21" id="01-21">01-21</a></big></b>
<br/>
Fix a <code><font color="blue">valgrind</font></code> warning about use of uninitialized memory
in the test <code><font color="blue">test_more/checkpoint.cpp</font></code> (the problem was in the test).

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

<ol type="1"><li>
Fix a <code><font color="blue">valgrind</font></code> warning about use of uninitialized memory
when using the <a href="base_adolc.hpp.xml" target="_top"><span style='white-space: nowrap'>adouble</span></a>
 base type.
This required an optional <a href="base_hash.xml" target="_top"><span style='white-space: nowrap'>base_hash</span></a>
 function and the special
<a href="base_adolc.hpp.xml#hash_code" target="_top"><span style='white-space: nowrap'>adouble&#xA0;hash_code</span></a>
 implementation.
</li><li>

The <code><font color="blue">adouble</font></code> <a href="to_string.xml" target="_top"><span style='white-space: nowrap'>to_string</span></a>
 functions
required a special implementation; see
<a href="base_adolc.hpp.xml#to_string" target="_top"><span style='white-space: nowrap'>adouble&#xA0;to_string</span></a>
.
</li><li>

Add the <a href="base_alloc.hpp.xml#to_string" target="_top"><span style='white-space: nowrap'>to_string</span></a>
 and
<a href="base_alloc.hpp.xml#hash_code" target="_top"><span style='white-space: nowrap'>hash_code</span></a>
 examples
to the <code><font color="blue">base_alloc.hpp</font></code> example.
</li></ol>


<br/>
<br/>
<b><big><a name="01-18" id="01-18">01-18</a></big></b>

<ol type="1"><li>
Fix ambiguity between <code><font color="blue">CppAD::sin</font></code> and <code><font color="blue">std::sin</font></code>,
and other standard math functions,
when using
<code><font color='blue'><pre style='display:inline'> 
     using namespace std;
     using namespace CppAD;
</pre></font></code>
This is OK for simple programs, but not generally recommended.
See <code><font color="blue">double</font></code> version of base class definitions for
<a href="base_double.hpp.xml#Unary Standard Math" target="_top"><span style='white-space: nowrap'>Unary&#xA0;Standard&#xA0;Math</span></a>

for more details.
</li><li>

Change Eigen array example
<a href="eigen_array.cpp.xml" target="_top"><span style='white-space: nowrap'>eigen_array.cpp</span></a>

to use member function version of <code><font color="blue">sin</font></code> function
(as per Eigen's array class documentation).
</li></ol>



<hr/>Input File: omh/appendix/whats_new/whats_new_16.omh

</body>
</html>
