casacore
Public Member Functions | List of all members
casacore::CompiledFunction< T > Class Template Reference

More...

#include <CompiledFunction.h>

Public Member Functions

 CompiledFunction ()
 The default constructor – no functions, no parameters, nothing, the function operator returns a 0. More...
 
 CompiledFunction (const CompiledFunction< T > &other)
 Make this object a (deep) copy of other. More...
 
template<class W >
 CompiledFunction (const CompiledFunction< W > &other)
 
CompiledFunction< T > & operator= (const CompiledFunction< T > &other)
 Make this object a (deep) copy of other. More...
 
virtual ~CompiledFunction ()
 Destructor. More...
 
virtual T eval (typename Function< T >::FunctionArg x) const
 Evaluate the function at x. More...
 
virtual Function< T > * clone () const
 Return a copy of this object from the heap. More...
 
virtual Function< typename FunctionTraits< T >::DiffType > * cloneAD () const
 
virtual Function< typename FunctionTraits< T >::BaseType > * cloneNonAD () const
 
- Public Member Functions inherited from casacore::CompiledParam< T >
 CompiledParam ()
 The default constructor – no functions, no parameters, nothing, the function operator returns a 0. More...
 
 CompiledParam (const CompiledParam< T > &other)
 Make this object a (deep) copy of other. More...
 
template<class W >
 CompiledParam (const CompiledParam< W > &other)
 
CompiledParam< T > & operator= (const CompiledParam< T > &other)
 Make this object a (deep) copy of other. More...
 
virtual ~CompiledParam ()
 Destructor. More...
 
virtual const Stringname () const
 Give name of function. More...
 
Bool setFunction (const String &newFunction)
 Set a function. More...
 
const StringerrorMessage () const
 Return the error message of the compilation. More...
 
const FuncExpressionfunction () const
 Return the expression. More...
 
virtual uInt ndim () const
 Returns the dimension of function. More...
 
const StringgetText () const
 Returns the text of the function string. More...
 
const FuncExpressiongetFunctionPtr () const
 Returns the function pointer (for debugging) More...
 
- Public Member Functions inherited from casacore::Function< T, U >
 Function ()
 Constructors. More...
 
 Function (const uInt n)
 
 Function (const Vector< T > &in)
 
 Function (const FunctionParam< T > &other)
 
template<class W , class X >
 Function (const Function< W, X > &other)
 
virtual ~Function ()
 Destructor. More...
 
uInt nparameters () const
 Returns the number of parameters. More...
 
virtual U eval (FunctionArg x) const =0
 Evaluate the function object. More...
 
T & operator[] (const uInt n)
 Manipulate the nth parameter (0-based) with no index check. More...
 
const T & operator[] (const uInt n) const
 
virtual U operator() () const
 Evaluate this function object at xor at x, y. More...
 
virtual U operator() (const ArgType &x) const
 
virtual U operator() (const Vector< ArgType > &x) const
 
virtual U operator() (FunctionArg x) const
 
virtual U operator() (const ArgType &x, const ArgType &y) const
 
virtual U operator() (const ArgType &x, const ArgType &y, const ArgType &z) const
 
Boolmask (const uInt n)
 Manipulate the mask associated with the nth parameter (e.g. More...
 
const Boolmask (const uInt n) const
 
const FunctionParam< T > & parameters () const
 Return the parameter interface. More...
 
FunctionParam< T > & parameters ()
 
const Vector< ArgType > & argp () const
 Get arg_p and parset_p. More...
 
Bool parsetp () const
 
void lockParam ()
 Compiler cannot always find the correct 'const' version of parameter access. More...
 
void unlockParam ()
 
virtual void setMode (const RecordInterface &mode)
 get/set the function mode. More...
 
virtual void getMode (RecordInterface &mode) const
 
virtual Bool hasMode () const
 return True if the implementing function supports a mode. More...
 
ostream & print (ostream &os) const
 Print the function (i.e. More...
 
- Public Member Functions inherited from casacore::Functional< FunctionTraits< T >::ArgType, T >
virtual ~Functional ()
 Destructor. More...
 
virtual T operator() (const FunctionTraits< T >::ArgType &x) const=0
 Map a Domain x into a Range y value. More...
 
- Public Member Functions inherited from casacore::Functional< Vector< FunctionTraits< T >::ArgType >, T >
virtual ~Functional ()
 Destructor. More...
 
virtual T operator() (const Vector< FunctionTraits< T >::ArgType > &x) const=0
 Map a Domain x into a Range y value. More...
 

Additional Inherited Members

- Public Types inherited from casacore::Function< T, U >
typedef FunctionTraits< T >::ArgType ArgType
 
typedef const ArgTypeFunctionArg
 
- Protected Attributes inherited from casacore::CompiledParam< T >
uInt ndim_p
 Number of dimensions of underlying function. More...
 
String msg_p
 Possible error message. More...
 
String text_p
 Input text string. More...
 
FuncExpressionfunctionPtr_p
 Pointer to function. More...
 
- Protected Attributes inherited from casacore::Function< T, U >
FunctionParam< T > param_p
 The parameters and masks. More...
 
Vector< ArgTypearg_p
 Aid for non-contiguous argument storage. More...
 
Bool parset_p
 Indicate parameter written. More...
 
Bool locked_p
 Indicate that parameters are expected to be locked from changing. More...
 

Detailed Description

template<class T>
class casacore::CompiledFunction< T >

Form a linear combination of function objects.

Intended use:

Public interface

Review Status

Test programs:
tFuncExpression

Prerequisite

Synopsis

Given a string describing an expression (see FuncExpression class for details of the expression), the CompiledFunctionclass wraps this expression as a Function (see Function class) which can be used in all places where functions can be used (e.g. see Fitting).

The CompiledParam class takes care of the parameter interface.

Example

In the following example a Gaussian profile with three parameters (height, center and halfwidth) is specified and its value and derivatives with respect to the parameters are calculated at x=[1.9,2,2.1].

// the Gaussian
CompiledFunction<Double> prof;
prof.setFunction("p0*exp(-((x-p1)/p2)^2)");
prof[0] = 2; // the height
prof[1] = 1.5; // the center
prof[2] = 1; // the width
Vector<Double> x(3);
x[0] = 1.9; x[1] = 2.0; x[2] = 2.1;
for (uInt i=0; i<3; ++i) {
cout << "Gaussian at x=" << x[i] << ": " << prof(x[i]) << endl;
}
// Calculate automatic derivatives of same function:
CompiledFunction<AutoDiff<Double> > profad;
profad.setFunction("p0*exp(-((x-p1)/p2)^2)");
// Set the parameters (note the specification of the number of
// derivatives and which derivative the parameter is)
profad[0] = AutoDiff<Double>(2, 3,0); // the height
profad[1] = AutoDiff<Double>(1.5,3,1); // the center
profad[2] = AutoDiff<Double>(1, 3,2); // the width
for (uInt i=0; i<3; ++i) {
cout << "Gaussian at x=" << x[i] << ": " << profad(x[i]) << endl;
}
cout << "Value (x=2): " << profad(x[1]).value() << endl;
cout << "Derivatives: " << profad(x[1]).derivatives() << endl;
cout << "Derivative1: " << profad(x[1]).derivatives()[1] << endl;
unsigned int uInt
Definition: aipstype.h:51

will produce the output:

Gaussian at x=1.9: 1.70429
Gaussian at x=2: 1.5576
Gaussian at x=2.1: 1.39535
Gaussian at x=1.9: (1.70429, [0.852144, 1.36343, 0.545372])
Gaussian at x=2: (1.5576, [0.778801, 1.5576, 0.778801])
Gaussian at x=2.1: (1.39535, [0.697676, 1.67442, 1.00465])
Value (x=2): 1.5576
Derivatives: [0.778801, 1.5576, 0.778801]
Derivative1: 1.5576

Template Type Argument Requirements (T)

Motivation

This class was created to allow specialization of the function evaluation in a simple way.

To Do

Definition at line 131 of file CompiledFunction.h.

Constructor & Destructor Documentation

◆ CompiledFunction() [1/3]

template<class T >
casacore::CompiledFunction< T >::CompiledFunction ( )
inline

The default constructor – no functions, no parameters, nothing, the function operator returns a 0.

Definition at line 136 of file CompiledFunction.h.

◆ CompiledFunction() [2/3]

template<class T >
casacore::CompiledFunction< T >::CompiledFunction ( const CompiledFunction< T > &  other)
inline

Make this object a (deep) copy of other.

Definition at line 139 of file CompiledFunction.h.

◆ CompiledFunction() [3/3]

template<class T >
template<class W >
casacore::CompiledFunction< T >::CompiledFunction ( const CompiledFunction< W > &  other)
inline

Definition at line 142 of file CompiledFunction.h.

◆ ~CompiledFunction()

template<class T >
virtual casacore::CompiledFunction< T >::~CompiledFunction ( )
inlinevirtual

Destructor.

Definition at line 150 of file CompiledFunction.h.

Member Function Documentation

◆ clone()

template<class T >
virtual Function<T>* casacore::CompiledFunction< T >::clone ( ) const
inlinevirtual

Return a copy of this object from the heap.

The caller is responsible for deleting the pointer.

Implements casacore::Function< T, U >.

Definition at line 160 of file CompiledFunction.h.

◆ cloneAD()

template<class T >
virtual Function<typename FunctionTraits<T>::DiffType>* casacore::CompiledFunction< T >::cloneAD ( ) const
inlinevirtual

Reimplemented from casacore::Function< T, U >.

Definition at line 162 of file CompiledFunction.h.

◆ cloneNonAD()

template<class T >
virtual Function<typename FunctionTraits<T>::BaseType>* casacore::CompiledFunction< T >::cloneNonAD ( ) const
inlinevirtual

Reimplemented from casacore::Function< T, U >.

Definition at line 164 of file CompiledFunction.h.

◆ eval()

template<class T >
virtual T casacore::CompiledFunction< T >::eval ( typename Function< T >::FunctionArg  x) const
virtual

Evaluate the function at x.

◆ operator=()

template<class T >
CompiledFunction<T>& casacore::CompiledFunction< T >::operator= ( const CompiledFunction< T > &  other)
inline

Make this object a (deep) copy of other.

Definition at line 146 of file CompiledFunction.h.

References casacore::CompiledParam< T >::operator=().


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