source: trunk/omh/whats_new_09.omh @ 1537

Last change on this file since 1537 was 1537, checked in by bradbell, 11 years ago

trunk: Add a sparse Jacobian speed test.

not_available.sh: automatically creates test that returns not available flag.
link_sparse_jacobian.cpp: directions for adding this to other package tests.
*/sparse_jacobian.cpp: versions that return test not available flag.
cppad/sparse_jacobian.cpp: actually does the test for CppAD package.

omh/speed_*.omh: include the corresponding sparse Jacobian test.
whats_new_09.omh: user's view of the changes.
for_sparse_jac.hpp: fix typo in doxygen documentation.
sparse_evaluate.hpp: fix error in user documentation.
*/makefile.in: automatic changes transferred from corresponding makeifle.am.
*/makefile.am: include corresponding sparse_jacobian.cpp.
link_sparse_hessian.hpp: fix error in user documentation.
main.cpp: add sparse_jacobian test case.
sparse_hessian.cpp: add a comment.

  • Property svn:keywords set to Id
File size: 12.1 KB
Line 
1$Id: whats_new_09.omh 1537 2009-10-01 03:52:53Z bradbell $
2/* --------------------------------------------------------------------------
3CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-09 Bradley M. Bell
4
5CppAD is distributed under multiple licenses. This distribution is under
6the terms of the
7                    Common 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_09$$
14$spell
15        retape
16        isnan
17        atan
18        asin
19        acos
20        sqrt
21        OMhelp
22        doxygen
23        exp_eps_apx
24        cos
25        tarball
26        IpIpoptApplication
27        IpoptDir
28        autoconf
29        automake
30        config
31        jacobian
32        valgrind
33        svn
34        Prev
35        CppAD
36        Adolc
37        cppad
38        hpp
39        op
40        pycppad
41        cond_exp
42        VecAD
43        Jacobians
44        Jac
45$$
46
47$section Changes and Additions to CppAD During 2009$$
48
49
50$head Introduction$$
51This section contains a list of the changes to CppAD during 2009
52(in reverse order by date).
53The purpose of this section is to
54assist you in learning about changes between various versions of CppAD.
55(Comments about developer documentation are only important if you are
56trying to read and understand the CppAD source code.)
57
58$head 09-30$$
59Added the $cref/cppad_sparse_jacobian.cpp/$$ speed test
60and increased the sizes used by $cref/link_sparse_hessian/$$.
61Some mistakes were fixed in the documentation for speed tests
62$cref/link_sparse_hessian/$$ and $cref/sparse_evaluate/$$.
63
64$head 09-29$$
65The documentation definition of the function $latex H(x)$$ in
66$cref/RevSparseHes/$$ was missing a factor of $latex R$$.
67This has been fixed.
68
69$head 09-28$$
70Changed $cref/RevSparseHes/$$ so that it uses a sparse
71representation when the corresponding call to
72$cref/ForSparseJac/$$ used a sparse representation.
73This should have been included with the change on 09-26
74because Hessian sparsity patters after $code ForSparseJac$$
75with $icode packed$$ did not work.
76Thus, this could be considered a bug fix.
77
78$head 09-26$$
79Added the $cref/packed/ForSparseJac/packed/$$ parameter to
80$cref/ForSparseJac/$$ and $cref/RevSparseJac/$$.
81If $icode packed$$ is false,
82a sparse instead of packed representation is used
83during the calculations of sparsity patterns.
84The sparse representation
85should be faster, and use less memory, for very large sparse Jacobians.
86The functions $code ForSparseJac$$ and $code RevSparseJac$$
87return packed representations.
88The plan is to eventually provide new member functions that return
89sparse representations.
90
91$head 09-20$$
92Fixed a bug in the $cref/Hessian Sparsity/RevSparseHes/$$ calculations
93that included use of $cref/VecAD/$$ objects.
94
95$head 09-19$$
96Some more memory allocation improvements (related to those
97on 09-18) were made.
98
99$head 09-18$$
100A bug was found in all the $cref/Sparsity/Sparse/$$ calculations.
101The result was that eight times the necessary memory was being used
102during these calculations.  This has been fixed.
103
104
105$head 08-25$$
106Add $cref/ad_fun.cpp/$$
107an example of how to create your own interface to an $cref/ADFun/$$ object.
108
109$head 08-14$$
110Add $cref/ad_in_c.cpp/$$
111an example of how to link CppAD to other languages.
112
113$head 08_13$$
114Add an option to $cref/optimize/$$ an operation sequence.
115$pre
116
117$$
118$bold Begin Merge$$
119$pre
120$$
121of changes from the directory $code branches/optimize$$
122in the CppAD subversion repository.
123The subheading dates below represent when the correspond change was made in
124$code branches/optimize$$.
125
126$subhead 08-13$$
127An automatic check of the $cref/ForwardZero/$$ results was added
128after each call to $cref/f.optimize()/optimize/$$
129(this $cref/check/optimize/Checking Optimization/$$
130is skipped when $code NDEBUG$$ is defined).
131In addition, all of the $codei%speed/cppad/%*%.cpp%$$ tests
132now check and use the speed test
133$cref/optimize/speed_main/option_list/optimize/$$ flag.
134
135$subhead 08-11$$
136Change the speed test $cref/main program/speed_main/$$ so
137that it uses a list of options instead of a boolean flag for each option.
138This will make it possible to add options in the future with out
139having to change all the existing tests because the options are now
140global variables instead of arguments to the speed test routines; for example,
141see $cref/retape/speed_main/option_list/retape/$$.
142
143$subhead 08-10$$
144The routine for $cref/optimizing/optimize/$$ the operation sequence
145has been added has been further tested using $code test_more/optimize.cpp$$.
146Some bugs have been fix and the routine can
147now be trusted to work correctly.
148$pre
149
150$$
151The function
152$cref/size_VecAD/SeqProperty/size_VecAD/$$ function was added
153so that the user could see the $code VecAD$$ vectors
154and elements corresponding to an operation sequence.
155
156$subhead 08-09$$
157A routine for $cref/optimizing/optimize/$$ the operation sequence
158has been added.
159This is a preliminary version and needs more testing before it can
160be trusted to work correctly.
161$pre
162$$
163$bold End Merge$$
164
165
166$head 08-06$$
167Add hash table coding to reduce the number of copies of the same
168parameter value necessary in a tape recording.
169In addition, add the function
170$cref/size_par/SeqProperty/size_par/$$ was added
171so that the user could see the number of parameters
172corresponding to an operation sequence.
173
174$head 08-02$$
175Fix bug in new version of how $cref/ForSparseJac/$$ handles
176$cref/VecAD/$$ objects.
177$pre
178
179$$
180Fix bug in overnight build where HTML version and entire documentation
181as one page versions of documentation were not being built.
182$pre
183
184$$
185Fix missing new line under
186$cref/Using Value/SimpleVector/Element Access/Using Value/$$
187heading for simple vector documentation.
188
189$head 08-01$$
190Fix bug in reverse mode Jacobian $cref/sparsity/RevSparseJac/$$
191for $cref/VecAD/$$ objects.
192
193$head 07-31$$
194The $cref/forward/ForSparseJac/$$ and $cref/reverse/RevSparseJac/$$
195sparse Jacobian routines have been improved so the resulting sparsity
196patterns are valid for all values of the independent variables
197(even if you use $cref/CondExp/$$ or $cref/VecAD/$$).
198
199$head 07-26$$
200Convert developer documentation from
201forward and reverse mode sweep routines from OMhelp to doxygen.
202
203$head 07-25$$
204Add developer documentation for $cref/PrintFor/$$ operations.
205
206$head 07-24$$
207Add developer documentation for $cref/Discrete/$$ operations.
208
209$head 07-23$$
210Add developer documentation for tape evaluation of $cref/VecAD/$$ store
211operations. (a store operation changes the value of a VecAD element).
212$pre
213
214$$
215Improve the $cref/vec_ad.cpp/$$ user example.
216
217$subhead 07-06$$
218Fixed a bug in second or higher order reverse mode calculations
219that used $cref/VecAD/$$.
220This bug was demonstrated by the test case $code SecondOrderReverse$$
221in the file $code test_more/vec_ad.cpp$$.
222$pre
223
224$$
225Add developer documentation for tape evaluation of the
226VecAD load operations
227(a load operation accesses an element of the vector but
228does not change it.)
229$pre
230
231$$
232Fix $code isnan$$ undefined in $code example/cond_exp.cpp$$ error
233introduced on 07-04 change.
234
235$head 07-04$$
236Add developer documentation for the
237$cref/CompareChange/$$ operations during tape evaluation.
238$pre
239
240$$
241$bold Begin Merge$$
242$pre
243$$
244of changes from the directory $code branches/sweep$$
245in the CppAD subversion repository.
246The subheading dates below represent when the correspond change was made in
247$code branches/sweep$$.
248
249$subhead 07-04$$
250Fixed a bug in second or higher order reverse mode calculations
251that included $cref/conditional expressions/CondExp/$$.
252This bug was demonstrated by the test case $code SecondOrderReverse$$
253in the file $code test_more/cond_exp.cpp$$.
254$pre
255
256$$
257A simpler and useful example was provided for
258$cref/conditional expressions/CondExp/$$;
259see $cref/CondExp.cpp/$$.
260
261
262$subhead 07-03$$
263Some minor improvements were made to the documentation for
264$cref/CondExp/$$.
265To be specific, a newer OMhelp option was used to change the formatting
266of the syntax, some of the argument names were changed to be more descriptive.
267
268$subhead 07-02$$
269Add developer doxygen documentation of
270tape evaluation for power (exponentiation) operators.
271
272$subhead 07-01$$
273Fix an example indexing error in
274$code introduction/exp_apx/exp_eps_for2.cpp$$ (found by valgrind).
275$pre
276
277$$
278Add developer doxygen documentation of
279tape evaluation for multiplication and division operators.
280
281$subhead 06-30$$
282Add developer doxygen documentation of
283tape evaluation for addition and subtraction operators.
284
285$subhead 06-29$$
286Add developer doxygen documentation of
287tape evaluation for sin, sinh, cos, and cosh.
288
289$subhead 06-28$$
290Add developer doxygen documentation of
291tape evaluation for atan, asin, acos, sqrt, log.
292$pre
293$$
294$bold End Merge$$
295
296$head 06-25$$
297The tarball for most recent release (of the subversion trunk for CppAD)
298was not being placed in the
299$href%http://www.coin-or.org/download/source/CppAD/%download%$$
300directory. 
301This has been fixed.
302
303$head 06-22$$
304Fix compiler warnings during the $cref openmp_run.sh$$ test.
305$pre
306
307$$
308Changed $cref speed_example.cpp$$ to omit the $code speed_test$$ from
309the correctness result.
310In stead, a message is printed explaining that timing tests need
311to be run without a lot of other demands on the system.
312
313$head 06-21$$
314The configure instructions for $cref/IpoptDir/InstallUnix/IpoptDir/$$
315had the wrong path for $code IpIpoptApplication.hpp$$.
316This has been fixed.
317
318$head 06-20$$
319Upgrade to from autoconf 2.61 to 2.63,
320and from automake 1.10.1 to 1.11.
321$pre
322
323$$
324Fix conflict between CppAD's use of config.h preprocessor symbols
325and other packages use of the same symbol names.
326
327$head 06-06$$
328Using complex of an AD type (instead of AD of complex) was not working
329correctly in $cref/not_complex_ad.cpp/$$ because the
330$cref/default/Default/$$ constructor for an AD object has an unspecified value.
331This has been fixed for the complex type by changing the default constructor
332to use value zero.
333$pre
334
335$$
336Fixing the $code not_complex_ad.cpp$$ problem above also fixed a warning
337generated by $href%/http://valgrind.org/%valgrind%$$.
338Now $code valgrind$$ runs the CppAD $code example/example$$ program
339with out any warning or error messages.
340In addition, a minor initialization error was fixed in the
341$code test_more/jacobian.cpp$$ routine so now
342$code valgrind$$ also runs the CppAD $code test_more/test_more$$ program
343with out any warnings or error messages.
344
345$head 05-20$$
346A change was make to the trunk on 05-19 (svn revision 1361) that broke the
347$cref/Unix install/InstallUnix/$$ procedure.
348This was has been fixed (revision 1362).
349
350$head 03-24$$
351Added cross references in
352the $cref/examples/ListAllExamples/$$ to occurrence of the following tokens:
353$cref/AD/$$,
354$cref/ADFun/FunConstruct/$$,
355$cref/CPPAD_TEST_VECTOR/test_vector/$$,
356$cref/Forward/$$,
357$cref/Independent/$$,
358$cref/Jacobian/$$
359$cref/NearEqual/$$,
360$cref/Reverse/$$.
361
362$head 02-20$$
363Demonstrate using AD to compute the derivative
364of the solution of an ODE with respect to a parameter
365(in the $cref runge_45_2.cpp$$ example).
366
367$head 02-15$$
368Change the distribution
369$cref/tar files/InstallUnix/Download/Unix Tar Files/$$
370to only contain one copy of the documentation.
371Link to the current Internet documentation for the other three copies.
372
373
374$head 02-01$$
375Move the $code Prev$$ and $code Next$$ buttons at the top of the documentation
376to the beginning so that their position does not change between sections.
377This makes it easier to repeatedly select this links.
378
379
380$head 01-31$$
381Modify $code cppad/local/op_code.hpp$$ to avoid incorrect warning by
382g++ version 4.3.2 when building $code pycppad$$ (a python interface to CppAD).
383
384$head 01-18$$
385Sometimes an error occurs while taping AD operations.
386The $cref/abort_recording/$$ function has been added
387to make it easier to recover in such cases.
388$pre
389
390$$
391Previously, CppAD speed and comparison tests used Adolc-1.10.2.
392The version used in the tests has been upgraded to
393$href%
394        http://www.math.tu-dresden.de/~adol-c/%
395        Adolc-2.0.0.
396%$$
397$pre
398
399$$
400A discussion has been added to the documentation for $cref/Jacobian/$$
401about its use of
402$cref/forward or reverse/Jacobian/Forward or Reverse/$$
403mode depending on which it estimates is more efficient.
404$pre
405
406$$
407A minor typo has been fixed in the description of
408$cref/W(t, u)/reverse_any/W(t, u)/$$ in $cref/reverse_any/$$.
409To be specific,
410$latex o ( t^{p-1} ) * t^{1-p} \rightarrow 0$$
411has been replaced by
412$latex o ( t^{p-1} ) / t^{1-p} \rightarrow 0$$.
413
414$head 01-06$$
415Made some minor improvements to the documentation in
416$cref/FunConstruct/$$.
417
418$end
Note: See TracBrowser for help on using the repository browser.