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

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

merge to branch: trunk
from repository: https://github.com/coin-or/CppAD
start hash code: f8fc499c5720e9bead5d00b92db3d775c10e7043
end hash code: dd967ef41b8d6731d90ebb8b3e7e8b863565289c

commit dd967ef41b8d6731d90ebb8b3e7e8b863565289c
Author: Brad Bell <bradbell@…>
Date: Thu Mar 24 19:19:00 2016 -0700

eigen_mat_mul.hpp: add for_sparse_hes calculation.
atomic_base.hpp: edits to forward and reverse sparse hessian documentation.
for_hes_sweep.hpp: fix bug in ForSparseHes? calculation.
eigen_mat_mul.cpp: test for_sparse_hes calculation.

commit 99610d3bdda1162ec7e8884b3cc5811b5fc48c24
Author: Brad Bell <bradbell@…>
Date: Thu Mar 24 17:51:42 2016 -0700

eigen_mat_mul.cpp: test rev_sparse_hes.
eigen_mat_mul.hpp: fix heading -> subheading.

commit 19a0f5d8c3c1e8ea210f852f49adc290609fdf10
Author: Brad Bell <bradbell@…>
Date: Thu Mar 24 17:24:50 2016 -0700

eigen_mat_mul.hpp: add code for rev_sparse_hes.
atomic_base.hpp: in doc change some g(y) -> g[f(x)] (clearer).
eigen_mat_mul.cpp: test second order derivatives.

commit 4487cc1d4f5e598d690dba681b5c275281981bf0
Author: Brad Bell <bradbell@…>
Date: Thu Mar 24 15:14:17 2016 -0700

Add rev_sparse_jac to eigen_mat_mul.hpp.

commit 055fa95218ca47e30204796c887f33b5ca9f9788
Author: Brad Bell <bradbell@…>
Date: Thu Mar 24 07:40:49 2016 -0700

eigen_mat_mul.hpp: use subheadings to separate Public and Private.
eigen_mat_mul.cpp: test for_sparse_jac.

commit af8898d93493df4d1a088038abe926f9ab9f54d5
Author: Brad Bell <bradbell@…>
Date: Thu Mar 24 07:06:46 2016 -0700

eigen_mat_mul.hpp: add for_sparse_jac (not yet tested).
eigen_mat_mul.cpp: change to example with a non-zero Hessian.

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