source: trunk/omh/whats_new/whats_new_16.omh @ 3807

Last change on this file since 3807 was 3807, checked in by bradbell, 4 years ago

merge to branch: trunk
from repository: https://github.com/coin-or/CppAD
start hash code: 13e3d99f3d3a15377d9dc2439fdbe40e9fd6223d
end hash code: 9bfb615c9ffa82003a3b9f32f7e15acee5fcc254

commit 9bfb615c9ffa82003a3b9f32f7e15acee5fcc254
Author: Brad Bell <bradbell@…>
Date: Wed Mar 23 05:27:43 2016 -0700

Advance version to cppad-20160323.


makefile.am: fix bug in auto-tools build.

File size: 6.5 KB
Line 
1$Id$
2/* --------------------------------------------------------------------------
3CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-16 Bradley M. Bell
4
5CppAD is distributed under multiple licenses. This distribution is under
6the terms of the
7                    Eclipse Public License Version 1.0.
8
9A copy of this license is included in the COPYING file of this distribution.
10Please visit http://www.coin-or.org/CppAD/ for information on other licenses.
11-------------------------------------------------------------------------- */
12
13$begin whats_new_16$$
14$spell
15        alloc
16        hpp
17        valgrind
18        uninitialized
19        adouble
20        CppAD
21        Eigen
22        std
23        namespace
24        cppad
25        Hes
26        Jac
27        mul
28        ifndef
29        xam
30        makefile
31$$
32
33$section Changes and Additions to CppAD During 2016$$
34
35$head Introduction$$
36The sections listed below contain a list of the changes to CppAD
37in reverse order by date.
38The purpose of these sections is to
39assist you in learning about changes between various versions of CppAD.
40
41$head 03-23$$
42Fix bug in auto-tools file $code example/atomic/makefile.am$$
43(introduced on 03-22).
44
45$head 03-22$$
46$list number$$
47Add the $cref atomic_eigen_mat_mul.cpp$$ example; see
48$cref/under construction/atomic_eigen_mat_mul.cpp/Under Construction/$$.
49$lnext
50change $code atomic_ode.cpp$$ to $cref checkpoint_ode.cpp$$ and
51$code atomic_extended_ode.cpp$$ to $cref checkpoint_extended_ode.cpp$$.
52$lend
53
54$head 03-21$$
55Change the $cref atomic_mat_mul.hpp$$ class name from $code mat_mul$$
56to $code atomic_mat_mul$$. This example use of the name $code mat_mul$$
57in the $cref atomic_mat_mul.cpp$$ example / test.
58
59$head 03-20$$
60$list number$$
61Include the sub-directory name to the include guards
62in $icode%*%.hpp%$$ files. For example,
63$codep
64        # ifndef CPPAD_UTILITY_VECTOR_HPP
65        # define CPPAD_UTILITY_VECTOR_HPP
66$$
67appears in the file $code cppad/utility/vector.hpp$$. This makes it
68easier to avoid conflicts when choosing $cref addon$$ names.
69$lnext
70Add the $cref set_union$$ utility and use it to simplify the
71$cref atomic$$ examples that use
72$cref/vector of sets/glossary/Sparsity Pattern/Vector of Sets/$$
73sparsity patterns.
74$lend
75
76
77$head 03-19$$
78$list number$$
79Move $cref atomic_mat_mul.cpp$$ to $code atomic_mat_mul_xam.cpp$$
80(moved back on $cref/03-21/whats_new_16/03-21/$$.
81$lnext
82Move $code atomic_matrix_mul.hpp$$ to $cref atomic_mat_mul.hpp$$.
83$lend
84
85$head 03-17$$
86Add the
87$code atomic_ode.cpp$$ and $code atomic_extended_ode.cpp$$ examples.
88
89$head 03-12$$
90$list number$$
91Move the example $code reverse_any.cpp$$ to $cref reverse_checkpoint.cpp$$.
92$lnext
93Add the $cref atomic_mul_level.cpp$$ example.
94$lend
95
96$head 03-05$$
97The following atomic function examples were added
98These examples are for a specific atomic operation.
99In addition, the domain and range dimensions for these examples
100are not one and not equal to each other:
101$cref atomic_forward.cpp$$,
102$cref atomic_reverse.cpp$$,
103$cref atomic_for_sparse_jac.cpp$$,
104$cref atomic_rev_sparse_jac.cpp$$,
105$cref atomic_for_sparse_hes.cpp$$,
106$cref atomic_rev_sparse_hes.cpp$$.
107
108
109$head 03-01$$
110$list number$$
111Improve documentation of implementation requirements for the atomic
112$cref/rev_sparse_jac/atomic_rev_sparse_jac/Implementation/$$.
113$lnext
114Make some corrections to the $cref atomic_for_sparse_hes$$ documentation.
115and fix a bug in how CppAD used these functions.
116$lend
117
118$head 02-29$$
119$list number$$
120Merged sparse into master branch. This makes the
121$cref ForSparseHes$$ routine available for use.
122$lnext
123Changed the
124$cref/global options/speed_main/Global Options/$$
125in the speed test main program to use one global variable with prototype
126$srccode%cpp%
127        extern std::map<std::string, bool> global_option;
128%$$
129$lend
130
131
132$head 02-28$$
133Fix a mistake in the old atomic
134$code example/sparsity/sparsity.cpp$$ example.
135This example has since been changed to
136$cref atomic_set_sparsity.cpp$$.
137
138
139$head 02-27$$
140The $code --with-sparse_set$$ and $code --with-sparse_set$$ options
141were removed from the $cref auto_tools$$ install procedure.
142
143$head 02-26$$
144The condition that the operation sequence in $icode f$$ is
145$cref/independent/glossary/Operation/Independent/$$ of
146the independent variables was added to the statement about
147the validity of the sparsity patterns; see $icode x$$ in
148$cref/ForSparseJac/ForSparseJac/x/$$,
149$cref/RevSparseJac/RevSparseJac/x/$$, and
150$cref/RevSparseHes/RevSparseHes/x/$$.
151
152$head 02-25$$
153The $cref cmake$$ command line argument $code cppad_sparse_list$$
154has been removed (because it is so much better than the other option).
155
156$head 02-23$$
157A new version of the
158$code cppad_sparse_list$$ class (not part of user API) uses
159reference counters to reduce the number of copies of sets that are equal.
160This improved the speed of sparsity pattern computations that use
161the $cref/vector of sets/glossary/Sparsity Pattern/Vector of Sets/$$
162representation.
163For example, the results for the
164$cref cppad_sparse_hessian.cpp$$ test compare as follows:
165$codep
166        sparse_hessian_size     = [  100,    400,   900,  1600, 2500 ]
167        sparse_hessian_rate_old = [ 1480, 265.21, 93.33, 41.93, 0.86 ]
168        sparse_hessian_rate_new = [ 1328, 241.61, 92.99, 40.51, 3.80 ]
169$$
170Note that the improvement is only for large problems. In fact,
171for large problems, preliminary testing indicates that
172the new vector of sets representation preforms better than
173the $cref/vector of boolean/glossary/Sparsity Pattern/Vector of Boolean/$$
174representation.
175
176
177$head 01-21$$
178Fix a $code valgrind$$ warning about use of uninitialized memory
179in the test $code test_more/checkpoint.cpp$$ (the problem was in the test).
180
181$head 01-20$$
182$list number$$
183Fix a $code valgrind$$ warning about use of uninitialized memory
184when using the $cref/adouble/base_adolc.hpp/$$ base type.
185This required an optional $cref base_hash$$ function and the special
186$cref/adouble hash_code/base_adolc.hpp/hash_code/$$ implementation.
187$lnext
188The $code adouble$$ $cref to_string$$ functions
189required a special implementation; see
190$cref/adouble to_string/base_adolc.hpp/to_string/$$.
191$lnext
192Add the $cref/to_string/base_alloc.hpp/to_string/$$ and
193$cref/hash_code/base_alloc.hpp/hash_code/$$ examples
194to the $code base_alloc.hpp$$ example.
195$lend
196
197$head 01-18$$
198$list number$$
199Fix ambiguity between $code CppAD::sin$$ and $code std::sin$$,
200and other standard math functions,
201when using
202$codep
203        using namespace std;
204        using namespace CppAD;
205$$
206This is OK for simple programs, but not generally recommended.
207See $code double$$ version of base class definitions for
208$cref/Unary Standard Math/base_double.hpp/Unary Standard Math/$$
209for more details.
210$lnext
211Change Eigen array example
212$cref eigen_array.cpp$$
213to use member function version of $code sin$$ function
214(as per Eigen's array class documentation).
215$lend
216
217$end
Note: See TracBrowser for help on using the repository browser.