Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tada -- templated automatic differentiation
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
cmake
demos
mpfrc++
src
tests
CMakeLists.txt
README
TODO

README

tada -- templated automatic differentiation
-------------------------------------------

quick install
-------------
  $ git clone http://github.com/quantumelixir/tada
  $ cd tada
  $ mkdir build
  $ cd build
  $ cmake ..
  $ make
  $ ls demos/ tests/

about
-----
tada is an Automatic Differentiation engine written in C++ with a focus on
support for arbitrary types through templates.

Currently, it has native support for:

  * floats (32-bit)
  * doubles (64-bit)
  * mpfr::mpreal (GNU MP multiprecision types with correct rounding semantics)
  * complex type (std::complex from the C++ standard)
  * rational types (boost::rational<T> and mpq_class from gmpxx.h)

The idea is to not limit, in any way, the generality of the simplest scalar
types. The data types themselves are decoupled from the actual forward mode
differentiation algorithms through templated univariate taylor propagation.
Automatic differentiation in the forward mode has been implemented through
operator overloading.

current
-------
As of now, tada can differentiate (upto any order) basic arithmetic operations,
elementary functions and trigonometric, hyperbolic functions and their inverses.
Operator overloading yields a very high level of abstraction in specifying the
function to be differentiated.

An example expression from the set of standard demos included:
sin(x*x)/(1 + log(x)) + asin(1/(1 + cosh(x)*tanh(x)))

testing
-------
All features currently in tada are continually tested using the unit testing
framework CPPUnit. The values encoded in the unit tests (against which our
results are compared) are themselves derived from the symbolic differentiation
program SymPy.

libraries
---------
  * GMP: Arbitrary precision arithmetic
  * MPFR++: C++ Wrapper for MPFR
  * CPPUnit: Test driven development

related
-------
  * algopy - http://github.com/b45ch1/algopy (A library for Automatic Differentation in Python)
  * taylorpoly - http://github.com/b45ch1/taylorpoly (Vectorized taylor polynomial algorithms written in ANSI C)
  * pydx - http://gr.anu.edu.au/svn/people/sdburton/pydx/doc/user-guide.html
Something went wrong with that request. Please try again.