source: trunk/omh/whats_new/whats_new_15.omh @ 3746

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

merge to branch: trunk
from repository: https://github.com/coin-or/CppAD
start hash code: 57d3215cae5e9da7b4c92e89f038d70870ef7327
end hash code: 9aebc1ca2c0949dec7c2d156517db26e60f28159

commit 9aebc1ca2c0949dec7c2d156517db26e60f28159
Author: Brad Bell <bradbell@…>
Date: Sun Nov 8 20:15:38 2015 -0800

Remove invisible white space.

commit a92ac50e9f4c8d0007ea5a245b3e23145dfcebfe
Author: Brad Bell <bradbell@…>
Date: Sun Nov 8 20:15:31 2015 -0800

Use vectorBool with partial sparsity patterns per pass to reduce memory requirements.


solve_callback.hpp: remove invisible white space.
rev_sparse_jac.hpp: fix bug (argument transposed).
bool_sparsity.cpp: remove invisible white space.

commit c09744b13ba2c70d6ffa857206d45560154d800a
Author: Brad Bell <bradbell@…>
Date: Sun Nov 8 03:22:57 2015 -0800

check_for_nan.hpp: fix minor type in documentation.

File size: 26.2 KB
Line 
1$Id$
2/* --------------------------------------------------------------------------
3CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-15 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_15$$
14$dollar @$$
15$spell
16        ind
17        const
18        enum
19        ctor
20        dimensioned
21        cskip_op
22        adolc
23        zdouble
24        expm1
25        eigen
26        expm1
27        atanh
28        acosh
29        asinh
30        src
31        op
32        onetape
33        CppAD
34        colpack
35        hes
36        cppad
37        Jacobian
38        gettimeofday
39        cmake
40        hpp
41        dir
42        includedirs
43        libdirs
44        datadir
45        docdir
46        std
47        cxx
48        erf
49        var
50        NumRes
51        chrono
52        aeps
53        CondExpGt
54        hasnan
55        Adolc
56        resize
57        bool
58        alloc
59        adouble
60        gmtime
61        asctime
62        ipopt
63        fadbad
64        sacado
65        unreferenced
66        azmul
67        retape
68$$
69
70$section CppAD Changes and Additions During 2015$$
71
72$head Introduction$$
73This section contains a list of the changes to CppAD during 2015
74(in reverse order by date).
75The purpose of this section is to
76assist you in learning about changes between various versions of CppAD.
77
78$head 11-08$$
79$list number$$
80Fixed a bug in the $cref RevSparseJac$$ routine.
81To be specific, the argument $cref/r/RevSparseJac/r/$$
82was transposed from what the documentation said.
83(This has no effect in the usual case where $icode r$$ is the identity.)
84$lnext
85Added the $cref bool_sparsity.cpp$$ examples which show how
86to conserve memory when computing sparsity patterns.
87$lnext
88Modified the $cref ipopt_solve$$ procedure to take
89advantage of the memory conserving sparsity pattern calculations
90when $cref/retape/ipopt_solve/options/Retape/$$ is false.
91$lnext
92Added the $cref/bit_per_unit/CppAD_vector/vectorBool/bit_per_unit/$$
93function to the $code vectorBool$$ class.
94(This aids the memory conservation mentioned above.)
95$lend
96
97
98$head 11-06$$
99It is often difficult to determine what cause a $code nan$$ result
100during an operation with an $cref ADFun$$ object.
101The new feature
102$cref/get_check_for_nan/check_for_nan/get_check_for_nan/$$ was
103added to make this easier.
104
105$head 10-21$$
106There was a mistake in the documentation for $cref index_sort$$,
107the argument $cref/ind/index_sort/ind/$$ is not $code const$$.
108
109$head 10-16$$
110Add a $cref/PrintFor optimization/WishList/PrintFor Optimization/$$
111item to the wish list.
112
113$head 10-06$$
114$list number$$
115Add
116$cref/CPPAD_USE_CPLUSPLUS_2011
117        /preprocessor
118        /Documented Here
119        /CPPAD_USE_CPLUSPLUS_2011
120/$$,
121$code CPPAD_NUMERIC_LIMITS$$, and
122$code CPPAD_STANDARD_MATH_UNARY$$, to
123the $cref preprocessor$$ section.
124In addition, remove checking that all user API preprocessor symbols
125are in this section form the $cref WishList$$.
126$lnext
127Alphabetize and make some corrections to
128$cref/list of examples/ListAllExamples/$$.
129$lnext
130The documentation for some of the $cref deprecated$$ features
131was missing the date when they were deprecated.
132This has been fixed; e.g., see
133$cref/Deprecated 2012-12-26/auto_tools/Deprecated 2012-12-26/$$.
134$lend
135
136
137$head 10-04$$
138$list number$$
139$cref base_require$$:
140Add the macro
141$cref/CPPAD_NUMERIC_LIMITS/base_limits/CPPAD_NUMERIC_LIMITS/$$
142to aid in setting the numeric limits for a user defined $icode Base$$ class.
143$lnext
144$cref base_require$$:
145The $cref/quiet_NaN/numeric_limits/quiet_NaN/$$ function has been added
146to the CppAD $code numeric_limits$$.
147Note the reason for not using
148$cref/std::numeric_limits/numeric_limits/std::numeric_limits/$$.
149$lnext
150The $cref/nan(zero)/nan/nan(zero)/$$ function computes a $code nan$$ by
151dividing zero by zero which results in a warning when using some compilers.
152This function has been deprecated and the corresponding
153$cref WishList$$ item has been removed.
154$lnext
155Move documentation for $cref zdouble$$ to $cref deprecated$$ section
156and documentation for $cref numeric_limits$$ to $cref ADValued$$.
157$lnext
158Remove all uses of, and references to,
159$cref zdouble$$ from the $cref/examples/Example/$$.
160$lend
161
162$head 10-03$$
163$cref base_require$$:
164It is no longer necessary to define the specialization for
165$codei%CppAD::epsilon<%Base>()%$$ for each $icode Base$$ type.
166
167$head 10-02$$
168There was a bug in $code test_more/azmul.cpp$$ whereby the vector
169$code z$$ had the wrong dimension (in two places). This has been fixed.
170
171$head 09-28$$
172$list number$$
173Use the current $cref atomic_option$$ setting to determine
174which type of sparsity patterns to use for
175$cref/dependency/dependency.cpp/$$ calculations during
176$cref optimize$$ procedure.
177It used to be that the
178$cref/bool_sparsity_enum/atomic_option/atomic_sparsity/bool_sparsity_enum/$$
179was used when
180$cref/pack_sparsity_enum/atomic_option/atomic_sparsity/pack_sparsity_enum/$$
181was specified.
182$lnext
183It is not longer an error to take the derivative of the square root function,
184because the result may be the part of a
185$cref/conditional expression/CondExp/$$ that is not used.
186$lnext
187Update the $cref WishList$$ section.
188$lend
189
190
191$head 09-27$$
192$list number$$
193It is no longer necessary to use the $cref zdouble$$ class when
194computing with $cref/multiple levels of AD/mul_level/$$
195$cref/conditional expressions/CondExp/$$ and
196$cref/reverse mode/reverse/$$.
197$lnext
198The $code zdouble$$ class has been deprecated.
199Use the $cref azmul$$ function for absolute zero (when it is needed).
200$lend
201
202$head 09-25$$
203$cref base_require$$:
204$cref/absolute zero multiplication/base_require/Absolute Zero, azmul/$$
205is now required for user defined base types.
206This makes it possible to combine
207$cref/conditional expression/CondExp/$$,
208$cref/multiple levels/mul_level/$$,
209$cref/reverse/Reverse/$$, and
210a base type that has standard ieee multiplication; e.g., $code double$$.
211In other words, not all multiplications will need to have an
212absolute zero (as is the case with the $cref zdouble$$ base class.
213
214$head 09-24$$
215Fix some Visual Studio 2013 C++ level four $code /W4$$ warnings
216(previous warnings were are level 3).
217In addition, disable warning
218$code 4100$$ unreferenced formal parameter,
219and warning
220$code 4127$$ conditional expression is constant.
221
222$head 09-23$$
223CppAD can optionally test its use with the external packages
224$cref/eigen/get_eigen.sh/$$,
225$cref/ipopt/get_ipopt.sh/$$, and
226$cref/colpack/get_colpack.sh/$$.
227In addition, it can compare its $cref speed$$ with the external AD packages
228$cref/adolc/get_adolc.sh/$$,
229$cref/fadbad/get_fadbad.sh/$$, and
230$cref/sacado/get_sacado.sh/$$.
231The scripts that download and install a local copy of these external packages
232have been modified to automatically skip installation
233when it has already been done.
234
235$head 09-21$$
236Improve discussion of
237$cref/windows download and testing
238        /download
239        /Compressed Archives
240        /Windows File Extraction and Testing
241/$$.
242
243$head 09-20$$
244$list number$$
245Add the $cref/cppad_profile_flag/cmake/cppad_profile_flag/$$
246to the list of possible $code cmake$$ command arguments.
247$lnext
248More of the warnings generated by Visual Studio 2013 have been fixed.
249One remaining warning is about $code asctime$$ and $code gmtime$$ not being
250thread safe.
251$lend
252
253$head 09-19$$
254$list number$$
255There was a bug in the $cref/numeric_limits/base_alloc.hpp/numeric_limits/$$
256section of the example user defined base type.
257This has been fixed.
258$lnext
259There were some compile and link errors when
260running the tests using Visual Studio 2013.
261These have been fixed.
262$lnext
263Many of the warnings generated by Visual Studio 2013 have been fixed.
264$lend
265
266$head 09-16$$
267The conditional expressions, $cref CondExp$$, were not working
268for the type $code< CppAD::AD<adouble> >$$ where $code adouble$$
269is the ADOL-C AD type.
270This has been fixed by adding a call to
271$cref/CPPAD_COND_EXP_REL/base_adolc.hpp/CondExpRel/$$ in
272$code base_adolc.hpp$$.
273
274$head 09-03$$
275$list number$$
276There was a bug in the $cref/vectorBool/CppAD_vector/vectorBool/$$
277$cref/assignment/CppAD_vector/Assignment/$$.
278To be specific,
279it not allow a size zero vector to be assigned using a vector any other size.
280This has been fixed.
281$lnext
282The addition of the
283$cref/pack/atomic_option/atomic_sparsity/pack_sparsity_enum/$$ option
284on 08-31 introduced a bug in the calculation of $cref RevSparseHes$$.
285The $cref checkpoint.cpp$$ example was changed to demonstrate this
286problem and the bug was fixed.
287$lend
288
289$head 09-02$$
290The $cref/dependency pattern/dependency.cpp/Dependency Pattern/$$
291was not being computed correctly for the
292$cref sign$$, $cref Discrete$$, and $cref VecAD$$ operations.
293This has been fixed.
294This could have caused problems using
295$cref checkpoint$$ functions that used any of these operations.
296
297$head 08-31$$
298$list number$$
299Mention the fact that using checkpoint functions can make
300$cref/recordings faster/checkpoint/Purpose/Faster Recording/$$.
301$lnext
302Add the
303$cref/pack/atomic_option/atomic_sparsity/pack_sparsity_enum/$$
304sparsity option for $cref atomic_base$$ operations.
305$lnext
306Add the pack sparsity option to
307$cref/checkpoint/checkpoint/sparsity/$$ functions.
308$lnext
309Added the $cref atomic_sparsity.cpp$$ example.
310$lnext
311Remove mention of OpenMP from $cref/thread_alloc::thread_num/ta_thread_num/$$
312($cref thread_alloc$$ never was OpenMP specific).
313$lend
314
315$head 08-30$$
316$list number$$
317The $cref/sparsity/atomic_ctor/atomic_base/sparsity/$$
318argument was added to the $code atomic_base$$ constructor and the
319$cref/checkpoint/checkpoint/sparsity/$$ constructor.
320$lnext
321Make $cref atomic_norm_sq.cpp$$ an example with no set sparsity
322and $cref atomic_reciprocal.cpp$$ an example with no bool sparsity.
323$lnext
324Improve discussion of $code Independent$$ and
325$cref/parallel mode/Independent/Parallel Mode/$$.
326$lend
327
328$head 08-29$$
329Some asserts in the $cref checkpoint$$ implementation were not using
330the CppAD $cref ErrorHandler$$. This has been fixed.
331
332$head 08-28$$
333Free $cref checkpoint$$ function sparsity patters during
334$cref forward$$ operations that use its atomic operation.
335(They kept between sparsity calculations because they do not change.)
336
337$head 08-26$$
338Fix a bug in $cref RevSparseJac$$ when used to compute sparsity pattern
339for a subset of the rows in a $cref checkpoint$$ function.
340
341$head 08-25$$
342Reduce the amount of memory required for $cref checkpoint$$ functions
343(since sparsity patterns are now being held so they do not need to be
344recalculated).
345
346$head 08-20$$
347Added an example that computes the sparsity pattern for a subset
348of the $cref/Jacobian/sparsity_sub.cpp/ForSparseJac/$$ and a subset
349of the $cref/Hessian/sparsity_sub.cpp/RevSparseHes/$$.
350
351$head 08-17$$
352$list number$$
353Do some optimization of the
354$cref checkpoint$$ feature so that sparsity patterns are
355stored and not recalculated.
356$lnext
357Fix a warning (introduced on 08-11) where the $code CppAD::vector$$
358$cref/data/CppAD_vector/data/$$ function was being shadowed by
359a local variable.
360$lnext
361The source code control for CppAD has a link to $code compile$$,
362instead of real file.
363This sometimes caused problems with the
364deprecated $cref auto_tools$$ install procedure and has been fixed.
365$lend
366
367$head 08-16$$
368$list number$$
369Improve the documentation for checkpoint functions.
370To be specific, change the $cref/syntax/checkpoint/Syntax/$$ to use
371the name $icode atom_fun$$.
372In addition, include the fact that $icode atom_fun$$ must not
373be destructed for as along as the corresponding atomic operations are used.
374$lnext
375Add the $cref/size_var/checkpoint/size_var/$$ function
376to the checkpoint objects.
377$lend
378
379
380$head 08-09$$
381Add the preservation of data to the specifications of a $code CppAD::vector$$
382during a $cref/resize/CppAD_vector/resize/$$ when the
383capacity of the vector does not change.
384In addition, added and example of this to $cref cppad_vector.cpp$$.
385
386$head 08-06$$
387The $cref zdouble$$
388$cref/numeric_limits/base_limits/$$
389were not being computed properly.
390This has been fixed.
391
392$head 07-31$$
393Added the $cref sparse_sub_hes.cpp$$ example,
394a way to compute the sparsity for a subset of variables without
395using $cref/multiple levels of AD/mul_level/$$.
396
397$head 06-16$$
398$list number$$
399There were some
400$cref/unknown/cppad_assert/Unknown/$$ asserts
401when the sparsity pattern $icode p$$ in
402$cref/sparse_jacobian/sparse_jacobian/p/$$ and
403$cref/sparse_hessian/sparse_hessian/p/$$ was not properly dimensioned.
404These have been changed to
405$cref/known/cppad_assert/Known/$$ asserts to give better
406error reporting.
407$lnext
408In the special case where sparse Hessian $cref/work/sparse_hessian/work/$$ or
409sparse Jacobian $cref/work/sparse_hessian/work/$$ was specified and the
410set of elements to be computed was empty, the work vector is empty after
411the call (and it appears to need to be calculated on subsequent calls).
412This resulted in a bug when the sparsity pattern was not provided
413on subsequent calls (and has been fixed).
414$lend
415
416$head 06-11$$
417$list number$$
418Some C++11 features were not being taken advantage of after the change on
419$cref/05-10/whats_new_15/05-10/$$. To be specific, move semantics,
420the high resolution clock, and null pointers.
421This has been fixed.
422$lnext
423In the example $cref zdouble.cpp$$, the vector $code a1z$$ was not
424properly dimensioned.
425This has been fixed and the dimensions of all the variables have been
426clarified.
427$lend
428
429
430$head 06-09$$
431Add an $cref/abort_op_index/Independent/abort_op_index/$$
432item to the wish list. It has since been removed
433(domain errors may not affect the results due to
434$cref/conditional expressions/CondExp/$$).
435
436
437$head 06-07$$
438Add a $cref/absolute zero/base_require/Absolute Zero, azmul/$$ item
439and a $cref numeric_limits$$ item to the wish list.
440The absolute zero item has been completed and the
441numeric limit item was modified on implementation.
442Remove the multiple directions with list item.
443
444$head 05-26$$
445
446$subhead cond_exp_1$$
447There was a problem using
448$cref/conditional expressions/CondExp/$$
449with $cref/multiple levels of AD/mul_level/$$ where
450the result of the conditional expression might not be determined
451during forward mode.
452This would generate an assert of the form:
453$codei%
454        Error detected by false result for
455                IdenticalPar(%side%)
456    at line %number% in the file
457                %...%/cppad/local/cskip_op.hpp
458%$$
459where $icode side$$ was $code left$$ or $code right$$
460and $icode number$$ was the line number of an assert in $code cskip_op.hpp$$.
461This has been fixed.
462
463$subhead cond_exp_2$$
464There was a problem with using
465$cref/conditional expressions/CondExp/$$ and $cref/reverse mode/reverse/$$
466with $cref/multiple levels of AD/mul_level/$$.
467This was problem was represented by the file $code bug/cond_exp_2.sh$$.
468
469$list number$$
470The problem above has been fixed by adding the base type $code zdouble$$, see
471$cref/CppAD motivation/zdouble/Motivation/CppAD/$$ for this new type.
472(It is no longer necessary to use $code zdouble$$ to get an absolute zero
473because CppAD now uses $cref azmul$$ where an absolute zero is required.)
474$lnext
475The sections
476$cref mul_level$$,
477$cref change_param.cpp$$,
478$cref mul_level.cpp$$,
479and $cref mul_level_ode.cpp$$ were changed to use $cref zdouble$$.
480$lnext
481The $cref/adolc/adolc_prefix/$$ multi-level examples
482$cref mul_level_adolc.cpp$$ and $cref mul_level_adolc_ode.cpp$$
483were changed to mention the limitations because Adolc does not have an
484$cref/absolute zero/zdouble/Absolute Zero/$$.
485$lnext
486The example above were also changed so that AD variable names that
487indicated the level of AD for the variable.
488$lnext
489$cref base_require$$:
490The base type requirements were modified to include mention of
491$cref/absolute zero/base_require/Absolute Zero, azmul/$$.
492In addition, the base type requirements
493$cref/API warning/base_require/API Warning/$$ is now more informative.
494$lend
495
496$head 05-11$$
497Reorganize the $cref unary_standard_math$$ documentation.
498
499$head 05-10$$
500$list number$$
501Add the exponential minus one function $cref log1p$$.
502$lnext
503$cref base_require$$:
504If you are defining your own base type,
505note that $cref/log1p/base_std_math/erf, asinh, acosh, atanh, expm1, log1p/$$
506was added to the base type requirements.
507$lnext
508Use the single preprocessor flag
509$code CPPAD_USE_CPLUSPLUS_2011$$ to signal that the functions
510$cref/erf, asinh, acosh, atanh, expm1, log1p
511        /base_std_math
512        /erf, asinh, acosh, atanh, expm1, log1p
513/$$
514are part of the base type requirements.
515$lend
516
517$head 05-09$$
518$list number$$
519Add the exponential minus one function $cref expm1$$.
520If you are defining your own base type,
521note that $cref/expm1/base_std_math/erf, asinh, acosh, atanh, expm1, log1p/$$
522was added to the base type requirements.
523$lnext
524Fix some warnings about comparing signed and unsigned integers
525when using $cref/eigen/cppad_testvector/eigen/$$ for the CppAD test vector.
526(The eigen vector $code size()$$ function returns an $code int$$ instead of a
527$code size_t$$.)
528$lend
529
530$head 05-08$$
531$list number$$
532Add the inverse hyperbolic sine function $cref atanh$$.
533If you are defining your own base type,
534note that $cref/atanh/base_std_math/erf, asinh, acosh, atanh, expm1, log1p/$$
535was added to the base type requirements.
536$lnext
537Fix a bug in the implementation of the $code acosh$$
538multiple direction forward mode $cref forward_dir$$
539(when compiler has $cref/acosh/acosh/CPPAD_USE_CPLUSPLUS_2011/$$).
540$lend
541
542$head 05-07$$
543Add the inverse hyperbolic sine function $cref acosh$$.
544If you are defining your own base type,
545note that $cref/acosh/base_std_math/erf, asinh, acosh, atanh, expm1, log1p/$$
546was added to the base type requirements.
547
548$head 05-05$$
549Add the inverse hyperbolic sine function $cref asinh$$.
550If you are defining your own base type,
551note that $cref/asinh/base_std_math/erf, asinh, acosh, atanh, expm1, log1p/$$
552was added to the base type requirements.
553
554$head 04-18$$
555In the sparse jacobian and sparse hessian calculations,
556If $icode work$$ is present, and has already been computed,
557the sparsity pattern $icode p$$ is not used.
558This has been added to the documentation; see
559$cref/sparse jacobian/sparse_jacobian/work/p/$$ and
560$cref/sparse hessian/sparse_hessian/work/p/$$ documentation
561for $icode work$$ and $icode p$$.
562
563$head 03-13$$
564Remove the syntax
565$codei%
566        AD<%Base%> %y% = %x%
567%$$
568for the $cref/AD constructor/ad_ctor/$$ documentation because it does not
569work when the constructor is $cref/explicit/ad_ctor/x/explicit/$$.
570Also document the restriction that the constructor in the
571$cref/assignment/ad_assign/$$ must be implicit.
572
573$head 03-06$$
574The developers of the
575$href%https://github.com/kaskr/adcomp%TMB%$$ package reported that
576for large $cref ADFun$$ tapes, the $cref optimize$$ routine uses
577a large amount of memory because it allocates a standard set for
578each variable on the tape. These sets are only necessary for variables in
579$cref/conditional expressions/condexp/$$ that can be skipped once
580the independent variables have a set value.
581The problem has been reduced by using a NULL pointer for the empty set
582and similar changes. It still needs more work.
583
584$head 02-28$$
585It used to be the case that the
586$cref/Reverse mode/reverse/$$ would propagate $cref nan$$
587through the $cref/conditional expression/condexp/$$
588case that is not used.
589For example, if
590$codep
591        Independent(ax);
592        AD<double> aeps = 1e-10;
593        ay[0] = CondExpGt( ax[0], aeps, 1.0/ax[0], 1.0/aeps );
594        ADFun<double> f(ax, ay);
595$$
596The corresponding reverse mode calculation,
597at $code x[0] = 0.0$$, would result in
598$codep
599        Error detected by false result for
600        ! ( hasnan(value) && check_for_nan_ )
601$$
602This has been fixed so that only the conditional expression case that is used
603affects the reverse mode results.
604The example $cref cond_exp.cpp$$ was changed to reflect this
605(a check for $code nan$$ was changed to a check for zero).
606Note that this fix only works when
607$cref/IdenticalPar/base_identical/Identical/IdenticalPar/$$ is true for the
608base type of the result in the conditional expression; e.g.,
609one can still get a $code nan$$ effect from the case that is not selected
610when using $code AD< AD<double> >$$ conditional expressions.
611
612$head 02-18$$
613If the compiler supports the c++11 feature
614$code std::chrono:high_resolution_clock$$ then use it for
615the $cref elapsed_seconds$$ function.
616
617$head 02-16$$
618The new example $cref sub_sparse_hes.cpp$$ shows one way to
619compute a Hessian for a subset of variables without having to compute
620the sparsity pattern for the entire functions.
621
622$head 02-14$$
623Fix another bug in the derivative calculations for the
624c++11 version of the error function; see
625$cref/CPPAD_USE_CPLUSPLUS_2011/erf/CPPAD_USE_CPLUSPLUS_2011/$$.
626
627$head 02-11$$
628Fix a bug in the optimization of conditional expressions. To be specific,
629if $cref/NDEBUG/faq/Speed/NDEBUG/$$ is not defined, one could get
630an assert with the message:
631$codep
632        Error detected by false result for
633                var_index_ >= NumRes(op_)
634$$
635
636$head 02-10$$
637The change on $cref/2014-12-23/whats_new_14/12-23/$$ introduced a
638bug when the c++11 version of the error function was used with
639an $cref/optimized/optimize/$$ function. see
640$cref/CPPAD_USE_CPLUSPLUS_2011/erf/CPPAD_USE_CPLUSPLUS_2011/$$.
641There was also a bug in the sparsity calculations for when
642this erf function was included.
643These bugs have been fixed.
644
645$head 02-09$$
646The test $code test_more/optimize.cpp$$ was failing on some systems
647because an exactly equality check should have been a near equal check.
648This has been fixed.
649
650$head 02-07$$
651On some systems, the library
652corresponding to $code speed/src$$ could not be found.
653This library is only used for testing and so has been changed to always be
654static (hence does not need to be found at run time).
655
656$head 02-06$$
657There was a bug in the coloring method change on
658$cref/2015-01-07/whats_new_15/01-07/$$.
659To be specific, $icode%work%.color_method%$$ was not being set
660to $code "cppad.symmetric"$$ after $icode%work%.color_method.clear()%$$.
661This has been fixed.
662
663$head 02-04$$
664$list number$$
665Enable the same install of CppAD to be used both with and without C++11
666features; e.g., with both $code g++ --std=c++11$$ and with
667$code g++ --std=c++98$$. Previously if the
668$cref/cppad_cxx_flags/cmake/cppad_cxx_flags/$$ specified C++11,
669then it could only be used in that way.
670$lnext
671The $cref/cmake command/cmake/CMake Command/$$ now requires the version
672of $code cmake$$ to be greater than or equal 2.8
673(due a bug in $code cmake$$ version 2.6).
674$lend
675
676$head 02-03$$
677Improved the searching for the boost multi-threading library
678which is used for by the $cref team_bthread.cpp$$ case of the
679$cref thread_test.cpp$$ example and test.
680
681$head 02-02$$
682Improve the documentation for the
683$cref/cmake command/cmake/CMake Command/$$ line options
684$codei%
685        cmake_install_%dir%
686%$$
687for $icode dir$$ equal to
688$code prefix$$, $code postfix$$, $code includedirs$$, $code libdirs$$,
689$code datadir$$, and $code docdir$$.
690
691$head 01-30$$
692Fix bug in $cref link_sparse_hessian$$ speed test introduced on
693$cref/01-09/whats_new_15/01-09/$$ below.
694
695$head 01-29$$
696Fix some warnings generated by $code g++ 4.9.2$$.
697
698$head 01-26$$
699The change of global variables to local in
700$code cppad/local/op_code.hpp$$ on $cref/2014-50-14/whats_new_14/05-14/$$
701created a bug in $cref parallel_ad$$ (some local statics needed to
702be initialized). This has been fixed.
703
704$head 01-23$$
705There was a bug in the $cref cmake$$ install detection of compiler features.
706One symptom of this bug was that on systems that had the $code gettimeofday$$
707function, the cmake install would sometimes report
708$codei%
709        cppad_has_gettimeofday = 0
710%$$
711This has been fixed.
712
713$head 01-21$$
714The deprecated $cref auto_tools$$ procedure had a bug in the
715detection of when the size of an $code unsigned int$$
716was the same as the size of a $code size_t$$. This has been fixed.
717
718$head 01-20$$
719$list number$$
720The new $cref compare_change$$ interface has been created
721and the old $cref CompareChange$$ function has been deprecated;
722see the $cref compare_change.cpp$$ example.
723This enables one to determine the source code during taping
724that corresponds to changes in the comparisons during
725$cref/zero order forward/forward_zero/$$ operations; see
726$cref/abort_op_index/Independent/abort_op_index/$$.
727
728$lnext
729This new $cref compare_change$$ interface can detect comparison changes
730even if $cref/NDEBUG/Faq/Speed/NDEBUG/$$ is defined and
731even if $cref/f.optimize()/optimize/$$ has been called.
732The deprecated function $code CompareChange$$ used to always return zero after
733$codei%
734        %f%.optimize()
735%$$
736and was not even defined when $code NDEBUG$$ was defined.
737There was a resulting speed effect for this; see the wish list
738$cref/compare change/WishList/Comparison Changes and Optimization/$$ entry.
739
740$lnext
741The date when some features where deprecated has been added to the
742documentation. For example, see
743$cref/Deprecated 2006-12-17/include_deprecated/Deprecated 2006-12-17/$$.
744$lend
745
746$head 01-09$$
747$list number$$
748The change 01-07 below included (but did not mention) using
749a sparse, instead of full, structure for the Hessian in the test.
750This has also been done for the
751$cref/sparse Jacobian/link_sparse_jacobian/$$ test.
752$lnext
753For both the
754$cref/sparse_jacobian/link_sparse_jacobian/$$ and
755$cref/sparse_hessian/link_sparse_hessian/$$ tests,
756the sparse function is only chosen once
757(it used to be different for every repeat).
758This reduced the amount of computation not connected what is being tested.
759It also make the $cref/onetape/speed_main/option_list/onetape/$$ a valid
760option for these tests.
761$lnext
762There was a bug in the
763$cref/multiple direction forward/forward_dir/$$ routine.
764Results for function values that are
765$cref/parameter/parvar/$$ were not being computed properly
766(all the derivatives are zero in this case).
767This has been fixed.
768$lend
769
770
771$head 01-07$$
772The following changes were merged in from the $code color_hes$$ branch:
773$list number$$
774Specify the type of
775$cref/coloring/sparse_hessian/work/color_method/$$
776for the sparse hessian calculations.
777To be specific, instead of $code "cppad"$$ and $code "colpack"$$,
778the choices are $code "cppad.symmetric"$$, $code "cppad.general"$$,
779and $code "colpack.star"$$.
780This is not compatible with the change on
781$cref/01-02/whats_new_15/01-02/$$, which was so recent
782that this should not be a problem.
783$lnext
784The $cref/n_sweep/link_sparse_hessian/n_sweep/$$ values were
785not being returned properly by
786$cref cppad_sparse_hessian.cpp$$ and
787$cref adolc_sparse_hessian.cpp$$.
788The CppAD version has been fixed and the ADOL-C version
789has been set to zero.
790$lnext
791The $cref link_sparse_hessian$$ example case was to sparse for good
792testing (by mistake).
793This has been fixed.
794$lnext
795Add $icode n_sweep$$ to
796$cref/link_sparse_hessian/link_sparse_hessian/n_sweep/$$ and
797$cref/speed_main/speed_main/Speed Results/n_sweep/$$.
798$lnext
799Change the $code cppad$$ sparse Hessian
800$cref/color_method/sparse_hessian/work/color_method/$$
801to take advantage of the symmetry of the Hessian
802(in a similar fashion to the $code colpack$$ coloring method).
803$lend
804
805$head 01-02$$
806Added to option to uses
807$cref/colpack/colpack_prefix/$$ for the sparse Hessian
808$cref/coloring method/sparse_hessian/work/color_method/$$;
809see the example $cref colpack_hes.cpp$$.
810
811$end
Note: See TracBrowser for help on using the repository browser.