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

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

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

commit 33d1f5b8d837d83c8baf656045d85d8b45f0b297
Author: Brad Bell <bradbell@…>
Date: Sun Mar 27 04:01:14 2016 -0700

  1. Test non-symmetric reverse mode in eigen_mat_inv (and fix this example).
  2. Advance version to cppad-20160327.

commit 238e214ff36ca835efca615c609576dc8bf5038d
Author: Brad Bell <bradbell@…>
Date: Sat Mar 26 18:10:59 2016 -0700

eigen_mat_inv.hpp: use inverse matrix (since we are computing it).
eigen_mat_mul.hpp: comment seperator.
eigen_mat_inv.cpp: matrix during recording is non-singular.
eigen_mat_inv.cpp: test first and second order forward.

commit fc918b0476cc8ea66abdf2904a71fc93472d279d
Author: Brad Bell <bradbell@…>
Date: Sat Mar 26 16:26:51 2016 -0700

Add test_more/eigen_mat_inv.cpp.


eigen_mat_inv.hpp: fix calculation of vy.
eigen_mat_inv.cpp: fix section title.
CMakeLists.txt: no longer necessary to have special library for eigen tests.
eigen_mat_inv.cpp: Test with non-symmetric matrix.

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