Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
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