Prev | Next | whats_new_04 |
cppad/vector.hpp
was included.
OdeRunge
source code
was modified to make the more in line with the introduction
to C++ AD book
(OdeRunge
has been replaced by Runge45
).
In addition, the examples OdeRunge.cpp
and
lu_solve.cpp
were modified to make the simpler.
(The more complex version of OdeRunge.cpp
was moved to the TestMore
directory.)
-Wall
compiler switch (all warnings).
This has been added and the corresponding warnings
have been fixed.
LessThanOrZero
was missing.
This has been fixed.
NDEBUG
is not defined during compile time,
all
AD<Base>
comparison
operations are checked during
zero order
forward mode calculations.
The
CompareChange
function
returns the number of comparison operations that have changed.
example/Example.dsp/
was missing some
new examples that needed to be linked in
the install windows procedure.
This has been fixed.
PrintFor/.deps
and
PrintFor/.deps/PrintFor.Po
had an extra ?
at the end of their names.
This seems to have been fixed by using a newer version of the autoconf
and automake tools.
The specifications for
preprocessor symbols
state that all the CppAD preprocessor symbols
begin with CppAD
(so they do not conflict with other packages).
Some preprocessor symbols in the file cppad/config.h
did
began with WITH_
.
This has been fixed.
size_t
value.
The value has been changed to an int
.
The CppAD::vector
template class
was converted into a library routine so it can be used
separately from the rest of CppAD.
cppad/local/Declare.h
.
This has been added and CppAD should now compile and run
under both Microsoft VC 6.0 and 7.0.
The Compare
operators have been extended to work with
int
operands.
TapeDetLu
was added to speed_cppad/DetLuSpeed.cpp
and
TapeDetMinor
was added to speed_cppad/DetMinorSpeed.cpp
.
These tests just tape the calculations without computing any derivatives.
Using this, and the other tests, one can to separate the taping time
from the derivative calculation time.
The
windows installation steps
do not build a config.h
file.
Hence a default config.h
file was added to the
distribution for use with Microsoft Visual Studio.
The Distribute
section of the
developer documentation was brought up to date.
Links to the ADOLC and FADBAD download pages were added
to the unix installation
instructions.
cppad/cppad.hpp
.
They can still be included individually with out the rest of
the CppAD package.
OdeRunge
was modified
so that it will now integrate functions of a complex arguments.
This was done by removing
all uses of greater than and less than comparisons were removed.
(OdeRunge
has been replaced by Runge45
).
The changes on 09-21
did not fix all
the file date and time problems; i.e., automake was still running
in response to the unix installation
make
command.
B
that should have been
X
in the description of the
X
argument of LuSolve
.
This has been fixed.
AD< AD<Base> >
types; i.e.,
it now works for multiple levels of taping.
The date of the files aclocal.m4
and config.h.in
were later than the date of top level Makefile.am
.
This caused the make
command during the
unix installation
to try to run autoconf
and this did not work on systems with very old versions of autoconf
.
This has been fixed.
PrintFor.h
in cppad/local
.
This has been fixed.
The
Base
type requirements were simplified.
The Unix installation
instructions
were modified so just one make command was executed at the top level.
This was necessary because the order of the makes is now important
(as previously suggested, the makes did not work properly).
./
in front of current directory program names; for example,
./GetStarted
instead of GetStarted
(because some unix systems do not have the current directory
in the default executable path).
All of the include files of the form
<cppad/library/name.h>
were moved to
<cppad/name.h>
.
configure
during the Unix installation
.
The suggested compression program during
Windows installation
was changed from
7-zip
to
WinZip
.
YY-MM-DD
in place of the
date for the current version.
This has been fixed.
All the correctness tests are now compiled with the -g
command line option
(the speed tests are still compiled with -O2 -DNDEBUG
).
The installation instructions
for
Unix and Windows were split into separate pages.
std::vector
or boost::numeric::ublas::vector
.
cppad-yy-mm-dd
where
yy-mm-dd
is the year, month and date
of the distribution.
(Note the distribution directory is different from the directory
where CppAD is finally installed.)
OdeExplicit
into the cppad/library/
directory.
In addition, change it so that the vector type was a template argument; i.e.,
works for any type of vector (not just CppADvector
).
cppad/library/
directory.
In addition, change it so that the vector type was a template argument; i.e.,
works for any type of vector (not just CppADvector
).
cppad/example/NearEqual.h
has been moved
to cppad/example/NearEqualExt.h
because it contains
extensions of the NearEqual
routine to AD
types.
double
and std::complex<double>
cases for the NearEqual
routine arguments
has been moved to the general purpose utilities
.
CppADExternalAssert
and CppADInternalAssert
were changed to
CppADUsageError
and CppADUnknownError
.
The SpeedTest
routine was changed to use CppADUsageError
instead of a C assert.
new
operations.
The definition of a
parameter
and
variable
were changed to reflect that fact that
these are time dependent (current) properties
of an
AD<Base>
object.
int
arguments.
The documentation for these arguments has been changed to reflect this.
In addition,
the corresponding test cases have been changed to test this and to
test high order derivative cases.
The old versions of these tests were moved into the
cppad/Test
directory.
asin
and acos
unary_standard_math
functions were added.
There was a bug the reverse mode theory and calculation of
derivatives of sqrt
for fourth and higher orders.
This has been fixed.
In addition,
the following examples have been changed
so that they test derivative up to fifth order:
asin
,
atan
,
cos
,
exp
,
log
,
sin
,
sqrt
.
A roman (instead of italic) font was used for the name of
for the name of each of the standard math functions
in the assumption statements below the section
for the standard math functions.
For example, @(@
\sin(x)
@)@ instead of @(@
sin(x)
@)@.
example/Poly.h
was corrected to cppad/library/Poly.h
.
In the documentation for SpeedTest
,
the reference to Lib/SpeedTest.h
was corrected to cppad/library/SpeedTest.h
.
In addition, the example case was corrected.
In Reverse
, the definition for @(@
U(t, u)
@)@ had
@(@
t^p-1
@)@ where it should have had @(@
t^{p-1}
@)@.
This has been fixed.
int
has been added.
# include "filename"
to the syntax
# include <filename>
so that examples and other use better reflect how one would use CppAD after
it was installed in a standard include directory; for example
/usr/local/include/cppad
.
The user documentation was moved from the directory
cppad/User
to the directory cppad/Doc
.
The directory cppad/Lib
was moved to cppad/library
to reflect that fact that it is not what one expects in a standard
lib
directory or a standard include
directory.
YY-MM-DD
in the preprocessor symbol CppADVersion
was not being replaced by the current date during distribution.
This resulted in the CppADExternalAssert
macro printing
YY-MM-DD
where is should have printed the date of distribution.
This has been fixed.
All of the include commands of the form
# include "include/name.h"
# include "lib/name.h"
have been changed to the form
# include "cppad/include/name.h"
# include "cppad/lib/name.h"
This will avoid mistakenly loading a file from another package
that is in the set of directories being searched by the compiler.
It is therefore necessary to specify that the directory above the
CppAD
directory be searched by the compiler.
For example,
if CppAD
is in /usr/local/cppad
,
you must specify that /usr/local
be searched by the compiler.
Note that if /usr/local/cppad/
is no longer searched,
you will have to change
# include "cppad.hpp"
to
# include "cppad/cppad.hpp"
.
The window nmake
file Speed/Speed.mak
was out of date.
This has been fixed.
cppad/Lib
directory and the CppAD
namespace.
The Poly
routine was modified to be more efficient in the
derivative case. In addition, it was changed to use an arbitrary
vector for the coefficients (not just a CppADvector
).
include/atan.h
and include/cos.h
to be
mistakenly started with lower case letters.
These have been moved to include/Atan.h
and include/Cos.h
respectively.
test_vector
template class.
A FADBAD correctness and speed comparison with CppAD
was added.
Convert description
from C++ Automatic Differentiation to C++ Algorithmic Differentiation.
The log10
function was added.
The value
n
for
OdeExplicit
and OdeImplicit
is deduced from the argument
x0
and is not passed
as a separate argument.
This documentation has been fixed to this effect.
VecAD
objects
increased the speed and reduced the memory requirements (by about 20%) for
the VecAD
case in the speed_cppad/LuSolveSpeed.cpp/
test.
The VecAD
objects are not being handled correctly by the
Reverse
function.
The VecAD
test was extended to demonstrate the problem
and the problem was fixed
(it is now part of TestMore/VecAD
).
The speed test speed_cppad/LuSolveSpeed.cpp/
has been added.
It shows that the initial implementation of VecAD
is slow
(and uses a lot of memory.)
In fact,
it is faster to use LuSolve
and retape for each set of equations
than it is to use lu_vec_ad.cpp
and not have to retape.
This test will help us improve the speed of lu_vec_ad.cpp
.
size_t
indexing to the VecAD
class.
Fixed a bug connected to the VecAD
class and erasing the tape.
AD< AD<Base> >
class had values that were variables in the
AD<Base>
class.
This has been fixed.
ADVec
to VecAD
.
This class was extended so that
the value of elements in these vectors can be variables
(need not be parameters
).
const char *
to std::string
.
The memory required for the largest test cases was added to the
speed_cppad
tests output.
DetLuADOLC.cpp/
example was returning an error
(because it was checking for exact equality of calculated derivatives
instead of nearly equal).
This has been fixed.
Grad
and Hess
have been removed.
You should use Jacobian
and Hessian
instead.
Documentation errors in ForTwo
and Reverse
were fixed.
The example
documentation was reorganized.
Split all of the "example" and "test" index entries that come from
include/cppad/example/*.cpp
into sorted subheadings.
Grad
routine,
which only computed first derivatives of scalar valued functions,
has been replaced by the Jacobian
routine which
computes the derivative of vector valued functions.
cppad/Test
directory.
The f.Parameter()
function was added so that
one can count how many components of the range space depend
on the value of the domain space components.
This helps when deciding whether to use forward or reverse mode.
The Independent
and Parameter
functions
were moved below ADFun
in the documentation.
Rev
and RevTwo
were removed
because it is easier to use the uniform syntax below:
Old Syntax | Uniform Syntax |
r1 = f.Rev(v)
|
r1 = f.Reverse(1, v)
|
q1 = f.RevTwo(v)
|
r2 = f.Reverse(2, v)
|
q1[i] == r2[2 * i + 1]
|
The Theory
section has been completely changed so that
it corresponds to the arbitrary order calculations.
(Some of this change was made when the arbitrary forward mode
interface was added on
04-02-15
.
The directory cppad/Test
has been added.
It contains tests cases that are not intended as examples.
AD< AD<Base> >
tape and a its value
might be a variable on the
AD<Base>
tape.
This bug in the multiply and divide routines has been fixed.
There was a bug that is some cases reported a divide by zero error
when the numerator was zero. This has been fixed.
Forward
was also faulty.
This has been fixed.
The Microsoft project file example\Example.dsp
was out of date. This has been fixed.
The example that tapes derivative calculations
has been changed to an application of
Taylor's method
for solving ordinary differential
equations.
Arg
, For
and ForTwo
were removed
because it is easier to use the uniform syntax below:
Old Syntax | Uniform Syntax |
v0 = f.Arg(u0)
|
v0 = f.Forward(0, u0)
|
v1 = f.For(u1)
|
v1 = f.Forward(1, u1)
|
v2 = f.For(u2)
|
v2 = f.Forward(1, u2)
|
FunForTwo
routine.
FunArg
function
that were fixed.
FunArg
did not set it's value properly.
(All its derivatives are zero and this was handled properly.)
CppADvector
was placed before its use,
a reference to Ode_ind
and Ode_dep
was fixed in
OdeImplicit
.
FunForTwo
was changed to use
Taylor coefficients
.
This makes the interface to CppAD closer to the interface for
ADOLC
.