Loading...
Searching...
No Matches
casacore::SparseDiffA< T > Class Template Reference
scimath package (libcasa_scimath) » Mathematics_module

More...

`#include <SparseDiffA.h>`

## Public Member Functions

| SparseDiffA ()
| Construct a constant with a value of zero.
| SparseDiffA (const T &v)
| Construct a constant with a value of v.
| SparseDiffA (const T &v, const uInt n)
| A function f(x0,x1,...,xn,...) with a value of v.
| SparseDiffA (const T &v, const uInt n, const T &der)
| A function f(x0,x1,...,xn,...) with a value of v.
| SparseDiffA (const SparseDiff< T > &other)
| Construct one from another.
| ~SparseDiffA ()
SparseDiffA< T > & | operator= (const T &v)
| Assignment operator.
SparseDiffA< T > & | operator= (const pair< uInt, T > &der)
| Assignment operator.
SparseDiffA< T > & | operator= (const vector< pair< uInt, T > > &der)
| Assignment operator.
SparseDiffA< T > & | operator= (const SparseDiff< T > &other)
| Assign one to another (deep copy).
Public Member Functions inherited from casacore::SparseDiff< T >
| SparseDiff ()
| Construct a constant with a value of zero.
| SparseDiff (const T &v)
| Construct a constant with a value of v.
| SparseDiff (const T &v, const uInt n)
| A function f(x0,x1,...,xn,...) with a value of v.
| SparseDiff (const T &v, const uInt n, const T &der)
| A function f(x0,x1,...,xn,...) with a value of v.
| SparseDiff (const AutoDiff< T > &other)
| Construct from an AutoDiff.
| SparseDiff (const SparseDiff< T > &other)
| Construct one from another (deep copy).
| ~SparseDiff ()
| Destructor.
SparseDiff< T > & | operator= (const T &v)
| Assignment operator.
SparseDiff< T > & | operator= (const pair< uInt, T > &der)
| Assignment operator.
SparseDiff< T > & | operator= (const vector< pair< uInt, T > > &der)
| Assignment operator.
SparseDiff< T > & | operator= (const AutoDiff< T > &other)
| Assign from an Autodiff.
SparseDiff< T > & | operator= (const SparseDiff< T > &other)
| Assign one to another (deep copy).
void | operator*= (const SparseDiff< T > &other)
| Assignment operators.
void | operator/= (const SparseDiff< T > &other)
void | operator+= (const SparseDiff< T > &other)
void | operator-= (const SparseDiff< T > &other)
void | operator*= (const T other)
void | operator/= (const T other)
void | operator+= (const T other)
void | operator-= (const T other)
AutoDiff< T > | toAutoDiff (uInt n) const
| Convert to an AutoDiff of length n.
SparseDiffRep< T > * | theRep ()
| Returns the pointer to the structure of value and derivatives.
const SparseDiffRep< T > * | theRep () const
T & | value ()
| Returns the value of the function.
const T & | value () const
vector< pair< uInt, T > > & | derivatives () const
| Returns a vector of the derivatives of a SparseDiff.
void | derivatives (vector< pair< uInt, T > > &res) const
const vector< pair< uInt, T > > & | grad () const
vector< pair< uInt, T > > & | grad ()
pair< uInt, T > & | derivative (uInt which)
| Returns a specific derivative.
const pair< uInt, T > & | derivative (uInt which) const
uInt | nDerivatives () const
| Return total number of derivatives.
Bool | isConstant () const
| Is it a constant, i.e., with zero derivatives?
void | sort ()
| Sort derivative list; cater for doubles and zeroes.

## Additional Inherited Members

Public Types inherited from casacore::SparseDiff< T >
typedef T | value_type
typedef value_type & | reference
typedef const value_type & | const_reference
typedef value_type * | iterator
typedef const value_type * | const_iterator
Static Public Member Functions inherited from casacore::SparseDiff< T >
static Bool | ltSort (pair< uInt, T > &lhs, pair< uInt, T > &rhs)
| Sort criterium.

## Detailed Description

template<class T>
class casacore::SparseDiffA< T >

Class that computes partial derivatives by automatic differentiation.

### Intended use:

Public interface

### Review Status

Reviewed By:
  UNKNOWN
Date Reviewed:
  before2004/08/25
Test programs:
  tSparseDiff
Demo programs:
  dSparseDiff

### Prerequisite

- SparseDiff

### Etymology

Class that computes partial derivatives by automatic differentiation, thus SparseDiff.

### Synopsis

SparseDiffA is an SparseDiff. It is used to be able to distinguish between two template incarnations; e.g. to have one or more specializations, in addition to the general template version.

### Example

See for an extensive example the demo program dSparseDiff. It is based on the example given in the SparseDiff class, and shows how to have both an automatic and a specific version of a function object.

// The function, with fixed parameters a,b:
template <class T> class f {
public:
T operator()(const T& x) { return a_p*a_p*a_p*b_p*b_p*x; }
void set(const T& a, const T& b) { a_p = a; b_p = b; }
private:
T a_p;
T b_p;
};
// The specialized function
template <> class f<SparseDiffA<Double> > {
public:
T operator()(const T& x) { return a_p*a_p*a_p*b_p*b_p*x; }
void set(const T& a, const T& b) { a_p = a; b_p = b; }
private:
T a_p;
T b_p;
};
// Call it with different template arguments:
SparseDiff<Double> a1(2,0), b1(3,1), x1(7);
f<SparseDiff<Double> > f1; f1.set(a1, b1);
cout << "Diff a,b: " << f1(x1) << endl;
f<SparseDiffA<Double> > f12; f12.set(a1, b1);
cout << "Same....: " << f12(x1) << endl;
// Result will be:
// Diff a,b: (504, [756, 336])
// Same....: (504, [756, 336])
// It needed the template instantiations definitions:
template class f<SparseDiff<Double> >;
casacore::SparseDiffA::SparseDiffA
SparseDiffA()
Construct a constant with a value of zero.
Definition SparseDiffA.h:120
casacore::SparseDiff::SparseDiff
SparseDiff()
Construct a constant with a value of zero.
casacore::Double
double Double
Definition aipstype.h:53

### Motivation

The class was created to enable separate calculations of the same function.

### Template Type Argument Requirements (T)

- any class that has the standard mathematical and comparisons defined

### To Do

- Nothing I know

Definition at line 116 of file SparseDiffA.h.

## Constructor & Destructor Documentation

## SparseDiffA() [1/5]

template<class T>

casacore::SparseDiffA< T >::SparseDiffA | ( |  | ) |

inline

Construct a constant with a value of zero.

Zero derivatives.

Definition at line 120 of file SparseDiffA.h.

References casacore::SparseDiff< T >::SparseDiff().

Referenced by operator=(), operator=(), operator=(), and operator=().

## SparseDiffA() [2/5]

template<class T>

casacore::SparseDiffA< T >::SparseDiffA | ( | const T & | v | ) |

inline

Construct a constant with a value of v.

Zero derivatives.

Definition at line 123 of file SparseDiffA.h.

References casacore::SparseDiff< T >::SparseDiff().

## SparseDiffA() [3/5]

template<class T>

casacore::SparseDiffA< T >::SparseDiffA | ( | const T & | v,
|  | const uInt | n )

inline

A function f(x0,x1,...,xn,...) with a value of v.

The nth derivative is one, and all others are zero.

Definition at line 127 of file SparseDiffA.h.

References casacore::SparseDiff< T >::SparseDiff().

## SparseDiffA() [4/5]

template<class T>

casacore::SparseDiffA< T >::SparseDiffA | ( | const T & | v,
|  | const uInt | n,
|  | const T & | der )

inline

A function f(x0,x1,...,xn,...) with a value of v.

The nth derivative is der, and all other derivatives are zero.

Definition at line 132 of file SparseDiffA.h.

References casacore::SparseDiff< T >::SparseDiff().

## SparseDiffA() [5/5]

template<class T>

casacore::SparseDiffA< T >::SparseDiffA | ( | const SparseDiff< T > & | other | ) |

inline

Construct one from another.

Definition at line 136 of file SparseDiffA.h.

References casacore::SparseDiff< T >::SparseDiff().

## ~SparseDiffA()

template<class T>

casacore::SparseDiffA< T >::~SparseDiffA | ( |  | ) |

inline

Definition at line 138 of file SparseDiffA.h.

## Member Function Documentation

## operator=() [1/4]

template<class T>

SparseDiffA< T > & casacore::SparseDiffA< T >::operator= | ( | const pair< uInt, T > & | der | ) |

inline

Assignment operator.

Add a gradient to variable.

Definition at line 148 of file SparseDiffA.h.

References casacore::SparseDiff< T >::operator=(), and SparseDiffA().

## operator=() [2/4]

template<class T>

SparseDiffA< T > & casacore::SparseDiffA< T >::operator= | ( | const SparseDiff< T > & | other | ) |

inline

Assign one to another (deep copy).

Definition at line 160 of file SparseDiffA.h.

References casacore::SparseDiff< T >::operator=(), casacore::SparseDiff< T >::SparseDiff(), and SparseDiffA().

## operator=() [3/4]

template<class T>

SparseDiffA< T > & casacore::SparseDiffA< T >::operator= | ( | const T & | v | ) |

inline

Assignment operator.

Assign a constant to variable. All derivatives are zero.

Definition at line 142 of file SparseDiffA.h.

References casacore::SparseDiff< T >::operator=(), and SparseDiffA().

## operator=() [4/4]

template<class T>

SparseDiffA< T > & casacore::SparseDiffA< T >::operator= | ( | const vector< pair< uInt, T > > & | der | ) |

inline

Assignment operator.

Assign gradients to variable.

Definition at line 154 of file SparseDiffA.h.

References casacore::SparseDiff< T >::operator=(), and SparseDiffA().

The documentation for this class was generated from the following file:

- scimath/Mathematics/SparseDiffA.h