Prev | Next | whats_new_05 |
The TrackNewDel.cpp example was missing from the Windows install
examples and testing
project file.
This has been fixed.
AD<Base>
type are now freed when the corresponding
ADFun
object is constructed.
This reduces memory requirements and actually had better results
with the speed_cppad
tests.
The speed_cppad
test program now outputs the version of CppAD
at the top (to help when comparing output between different versions).
new[]
and delete[]
.
This is in preparation for making CppAD more efficient in it's use of
memory.
The bug mentioned on 12-01
resurfaced
and the corresponding routine was changed as follows:
static local::ADTape<Base> *Tape(void)
{ // If we return &tape, instead of creating and returning ptr,
// there seems to be a bug in g++ with -O2 option.
static local::ADTape<Base> tape;
static local::ADTape<Base> *ptr = &tape;
return ptr;
}
| x - y | <= r * ( |x| + |y| )
so that there is no problem with division by zero when
x
and
y
are zero
(the code was changed to that form also).
The std::abs
function replaced the
direct computation of the complex norms
(for the complex case in NearEqual
).
In addition, more extensive testing was done in near_equal.cpp
.
lib/CppADlib.a
and an utility in example/NearEqualExt.h
,
to a template functions in
cppad/near_equal.hpp
and
cppad/local/NearEqualExt.h
.
This is another step along the way of removing
the entire CppADlib.a
library.
The change on 12-14
broke the
Microsoft project files example/Example.sln
and TestMore/TestMore.sln
used during CppAD
installation on Windows.
This has been fixed.
Move lib/SpeedTest.cpp
to cppad/speed_test.hpp
.
This was the last change necessary in order to remove the CppAD library,
so remove all commands related to building and linking CppADlib.a
.
The corresponding entry has been removed from the wish_list
.
One of the entries in the wish_list
corresponded to the
Integer
function.
It has also been removed (because it is already implemented).
lib/CppADlib.a
to a template function in cppad/local/Erf.h
.
This is one step along the way of removing
the entire CppADlib.a
library.
Add an example of a C callable routine that computes
derivatives using CppAD (see interface2c.cpp
).
ratio
argument
to a separate function called LuRatio
.
This needed to be done because LuRatio
is more restrictive
and should not be part of the general template utilities
.
void
.
std::vector<bool>
which packs multiple elements into a single storage location
and returns a special type on element access (not the same as bool
).
To be more specific,
if
x
is a std::vector<bool>
object
and
i
has type size_t
,
x[i]
does not have type bool
.
Add a Home icon,
that links to the
CppAD home page
,
to the top left of the navigation frame
(left frame) for each documentation section.
The definition of a sparsity pattern
has been corrected to properly correspond to the more efficient form
mentioned under whats_new_05
below.
The dates in this file used to correspond to
local time for when the change was checked
into the
subversion repository
.
From now on the dates in this file will correspond to the first
version of CppAD where the change appears; i.e., the date in the
unix and windows
download file names
CppAD-yy-mm-dd
.
static local::ADTape<Base> *Tape(void)
{ static local::ADTape<Base> tape;
return &tape;
}
(in cppad/local/AD.h
)
would sometimes return a null value (during VecAD
operations).
A speed improvement in
cppad/local/ExtendBuffer.h
seems to prevent
this problem.
This fix is not well understood; i.e., we should watch to see
if this problem reoccurs.
The source code for
lu_vec_ad_ok.cpp
was mistakenly used for
speed_cppad/LuSolveSpeed.cpp
.
This has been fixed.
If
X
is a
AD<Base>
object,
y
is a
Base
object,
X[y]
uses pointer from the element
back to the original vector.
Optimizing compilers might reorder operations so that
the vector is destroyed before the object is used.
This can be avoided by changing the syntax for VecAD
objects
to use set
and get
member functions.
VecAD
vectors
has been fixed.
CppAD now checks that the domain dimension during
Independent
and
the range dimension during ADFun
(provided that -DNDEBUG
is not defined).
If either of these is zero,
the CppADUsageError
macro is invoked.
An extra exception
has been
added to the use of VecAD
elements.
This makes VecAD
some what more efficient.
Put a try and catch block around all of the uses of
new
so that if a memory allocation error occurs,
it will generate a CppADUsageError/
message.
The get_started.cpp
example has been simplified
so that it is easier to understand.
Add the optional
ratio
argument to the
LuFactor
routine.
(This has since been moved to a separate routine called LuRatio
.)
std::vector
, std::valarray
, and
CppAD::vector
were folded into the standard example and tests
format for the following cases:
rev_two.cpp
,
rev_one.cpp
,
Reverse.cpp
,
hessian.cpp
,
jacobian.cpp
,
forward.cpp
,
for_two.cpp
,
for_one.cpp
,
Fun.cpp
(Fun.cpp
has since been replaced by independent.cpp
,
Reverse.cpp
has since been replaced by
reverse_one.cpp
and rev_checkpoint.cpp
).
--
before of the prefix
command line
argument.
NDEBUG
is defined.
The specialization of CppAD::vector<bool>
was moved to vectorBool
so that CppAD::vector<bool>
does not pack one bit per value
(which can be slow to access).
One of the dates in the Unix installation
extraction discussion was
out of date. This has been fixed.
configure
script
so that is reports information using the same order and notation as its
documentation
.
Some compiler errors in the ode_gear_control.cpp
and
ode_stiff.cpp
examples were fixed.
CppAD::vector<bool>
case.
A test for the push_back
member function as well as a
CheckSimpleVector
test has been added to cppad_vector.cpp
.
The source code for this template vector class,
cppad/vector.hpp
,
has been removed from the documentation.
postfix_dir
(
postfix_dir
has since been removed)
options to the configure
command line.
This gives the user more control over the location where CppAD is installed.
OdeGear
and OdeGearControl
were added to the utilities
and the library was
reorganized.
example/Example.vcproj
and TestMore/TestMore.vcproj
were not up to date.
This has been fixed.
In addition, the example numeric_type.cpp
has been added.
Make the building of the
Example
, TestMore
, and Speed
, directories
optional during the configure
command.
The Unix installation instructions
were
overhauled to make the larger set of options easy to understand.
Neg
examples and tests to UnaryMinus
.
CppAD.unix.tar.gz
and CppAD.dos.tar.gz
to
CppAD-yy-mm-dd.tar.gz
and
CppAD-yy-mm-dd.zip
(the
*.zip
file
uses pkzip compression).
maxabs
argument has been added to the
OdeErrControl
function so that it can be used
with relative errors where components of the ODE solution may be zero
(some of the time).
In addition, some of the rest of the OdeErrControl documentation
has been improved.
The documentation for
replacing defaults
in CppAD error macros has been improved.
Romberg
to RombergOne
and added RombergMul
.
In addition, added missing entries to ListAllExamples
and reorganized utilities
.
Romberg
integration routine
(at this point uncertain of the interface that is most useful in
the context of AD.)
Romberg
integration routine for
where the argument types are template parameters
(for use with AD types).
example/Example.vcproj
and
TestMore/TestMore.vcproj
were missing some necessary routines.
In addition, Speed/Speed.vcproj
was generating a warning.
This has been fixed.
The value.cpp
example has been improved and the old example
has been moved into the TestMore
directory.
sinh
, and cosh
have been added.
In addition, more correctness testing
has been added for the sin
and cos
functions.
The OdeErrControl
routine could lock in an infinite loop.
This has been fixed and a test case has been added to check for this problem.
CondExp
to
CondExpLt
,
CondExpLe
,
CondExpEq
,
CondExpGe
,
CondExpGt
.
This should make code with conditional expressions easier to understand.
In addition, it should reduce the number of tape operations because
one need not create as many temporaries to do comparisons with.
The old CondExp
function has been deprecated.
acos
, asin
, atan
, cos
.
Improve the index entries in the documentation that corresponds
to the cppad/local
directory source code.
Bugs
information
were moved out of this section and into their own separate sections
(the Bugs section has been removed; see the bug
subdirectory
instead).
A discussion of
VecAD speed and memory
was added
as well as an entry in the
wish_list
to make it more efficient.
BOOST_DIR
and CPP_ERROR_WARN
configure
options
were not properly implemented for compiling the
lib
sub-directory.
This has been fixed.
Some compiler warnings in the file lib/ErrFun.cpp
,
which computes the erf
function,
have been fixed.
CppAD::vector
template class.
It appears that the TestMore/Runge45.cpp
file was missing
an include of example/NearEqualExt.h
. This has been fixed.
CppADvector
vector types.
This caused the compilation of the examples to fail when
CppADvector
was defined as something other than
CppAD::vector
(found by Jon Pearce).
This has been fixed.
The CheckSimpleVector
run time code has been improved so that it is
only run once per case that is being checked.
Simple Vector concept checking (CheckSimpleVector
) was
added to the routines:
ForOne
,
ForTwo
,
Forward
,
ADFun
,
Hessian
,
Independent
,
Jacobian
,
RevOne
,
RevTwo
, and
Reverse
.
The previous version of the
routine OdeErrControl
was mistakenly in the global namespace.
It has been moved to the CppAD
namespace
(where all the other utilities
routines are).
The previous distribution (version 05-07-02) was missing the file
cppad/local/Default.h
.
This has been fixed.
<Base>
, < AD<Base> >
, and < VecAD<Base> >
in these declarations.
These macro substitutions have been removed
because Version 6 of Microsoft's C++ compiler
is no longer supported by CppAD.
The copy base section was split into the default
constructor and the
construction for the base type.
The construction from base type has been
extended to include any type that is convertible to the base type.
As a special case, this provides the previous wish list item of
a constructor from an arbitrary
Base
to a
AD< AD<Base> >
,
AD< AD< AD<Base> > >
etc.
README
, file.
This has been fixed.
UWCopy040507.html
which contains the University of Washington's copyright
policy (see Section 2) was added to the distribution.
List2Vector
example utility
is no longer used and has
been removed.
*.dsw
and
*.dsp
have been replaced by the version 7 project files
*.sln
and
*.vcproj
.
TestMore
directory (it is now only a test).
CppADvector
.
In addition, separated the syntax of the function call
from the prototype for each of the arguments.
This was also done for all the easy to use Drivers
as well as the Independent
function and
the ADFun
constructor.
Add a section containing a list of
all the examples
.
Tape of Expansion by Minors Determinant: Length = 350, Memory = 6792
size = 5 rate = 230
size = 4 rate = 1,055
size = 3 rate = 3,408
size = 2 rate = 7,571
size = 1 rate = 13,642
and here is the same output after this change:
Tape of Expansion by Minors Determinant: Length = 350, Memory = 6792
size = 5 rate = 448
size = 4 rate = 2,004
size = 3 rate = 5,761
size = 2 rate = 10,221
size = 1 rate = 14,734
Note that your results will vary depending on operating system and machine.
OdeControl
to OdeErrControl
and improve its documentation.
Correct the syntax for the Parameter
and Variable
functions.
OdeErrControl
.
Add the argument
scur
to OdeErrControl
,
improve OdeErrControl
choice of step size and documentation.
There was a undesired divide by zero case in the file
TestMore/VecUnary.cpp
that just happened to work
in corresponding NearEqual
check.
The NearEqual
routine has been changed
to return false if either of the values being compared
is infinite or not a number.
In addition, the divide by zero has been removed from
the TestMore/VecUnary.cpp
test.
During the process above, the function Variable
was added.
cppad/local/Operator.h
.
OdeImplicit
to use Rosen34
(but do not need to change other arguments
because error estimate is optional).
OdeRunge
to use Runge45
(but do not need to change other arguments
because error estimate is optional).
CppADStandardMathBinaryFun
,
CppADCompareMember
,
CppADBinaryMember
, and
CppADFoldBinaryOperator
have been removed.
An extra requirement was added to the
SimpleVector
template class.
There must be a typedef for value_type
which is the type of elements in the vector
Under Mandrake Linux 10.1,
some template friend declarations were failing because the corresponding
operations were not declared before being indicated as friends
(found by
Jean-Pierre Dussault
).
This has been fixed.