RFFGen
 All Classes Namespaces Files Functions Typedefs Enumerations Groups
Public Member Functions | List of all members
RFFGen::MathematicalOperations::Chain< F, G, class, class > Struct Template Reference

Chain $ f\circ g $ of functions $f$ and $g$ of type F resp. G (F and G must satisfy the requirements of Concepts::FunctionConcept). More...

#include <chain.hh>

Inheritance diagram for RFFGen::MathematicalOperations::Chain< F, G, class, class >:
RFFGen::Base

Public Member Functions

 Chain ()=default
 Default constructor. May leave member variables uninitialized! Call update before using evaluation.
 
template<class... InitFunction>
 Chain (const InitFunction &...init)
 Constructor. More...
 
 Chain (const F &f_, const G &g_)
 Constructor taking copies of the functions to be chained. More...
 
template<class Arg >
void update (const Arg &x)
 Reset point of evaluation.
 
template<int index, class Arg >
void updateVariable (const Arg &x)
 Propagate call to updateVariable() to f and g.
 
const auto & d0 () const noexcept
 Function value.
 
template<int id, class Arg , class IndexedArg = IndexedType<Arg,id>, class IndexedFArg = IndexedType<FArg,id>, class = std::enable_if_t< ComputeChainD1< F , D1<G,IndexedArg> , IndexedFArg >::present>>
auto d1 (Arg const &dx) const
 First directional derivative. More...
 
template<int idx, int idy, class ArgX , class ArgY , class IndexedArgX = IndexedType<ArgX,idx>, class IndexedArgY = IndexedType<ArgY,idy>, class IndexedFArgX = IndexedType<FArg,idx>, class IndexedFArgY = IndexedType<FArg,idy>, class = std::enable_if_t< D2LazyType<IndexedArgX,IndexedArgY,IndexedFArgX,IndexedFArgY>::present >>
auto d2 (ArgX const &dx, ArgY const &dy) const
 Second directional derivative. More...
 
template<int idx, int idy, int idz, class ArgX , class ArgY , class ArgZ , class IndexedArgX = IndexedType<ArgX,idx>, class IndexedArgY = IndexedType<ArgY,idy>, class IndexedArgZ = IndexedType<ArgZ,idz>, class IndexedFArgX = IndexedType<FArg,idx>, class IndexedFArgY = IndexedType<FArg,idy>, class IndexedFArgZ = IndexedType<FArg,idz>, class = std::enable_if_t< D3LazyType<IndexedArgX,IndexedArgY,IndexedArgZ,IndexedFArgX,IndexedFArgY,IndexedFArgZ>::present >>
auto d3 (ArgX const &dx, ArgY const &dy, ArgZ const &dz) const
 Third directional derivative. More...
 
- Public Member Functions inherited from RFFGen::Base
template<class Arg >
void update (const Arg &)
 Update on changed input.
 
template<int id, class Arg >
void updateVariable (const Arg &)
 Empty variables.
 

Detailed Description

template<class F, class G, class = FunctionConceptCheck<F>, class = FunctionConceptCheck<G>>
struct RFFGen::MathematicalOperations::Chain< F, G, class, class >

Chain $ f\circ g $ of functions $f$ and $g$ of type F resp. G (F and G must satisfy the requirements of Concepts::FunctionConcept).

Constructor & Destructor Documentation

template<class F, class G, class = FunctionConceptCheck<F>, class = FunctionConceptCheck<G>>
template<class... InitFunction>
RFFGen::MathematicalOperations::Chain< F, G, class, class >::Chain ( const InitFunction &...  init)
inline

Constructor.

Parameters
initinput for a constructor of G
template<class F, class G, class = FunctionConceptCheck<F>, class = FunctionConceptCheck<G>>
RFFGen::MathematicalOperations::Chain< F, G, class, class >::Chain ( const F &  f_,
const G &  g_ 
)
inline

Constructor taking copies of the functions to be chained.

Parameters
f_outer function
g_inner function

Member Function Documentation

template<class F, class G, class = FunctionConceptCheck<F>, class = FunctionConceptCheck<G>>
template<int id, class Arg , class IndexedArg = IndexedType<Arg,id>, class IndexedFArg = IndexedType<FArg,id>, class = std::enable_if_t< ComputeChainD1< F , D1<G,IndexedArg> , IndexedFArg >::present>>
auto RFFGen::MathematicalOperations::Chain< F, G, class, class >::d1 ( Arg const &  dx) const
inline

First directional derivative.

Parameters
dxdirection for which the derivative is computed
template<class F, class G, class = FunctionConceptCheck<F>, class = FunctionConceptCheck<G>>
template<int idx, int idy, class ArgX , class ArgY , class IndexedArgX = IndexedType<ArgX,idx>, class IndexedArgY = IndexedType<ArgY,idy>, class IndexedFArgX = IndexedType<FArg,idx>, class IndexedFArgY = IndexedType<FArg,idy>, class = std::enable_if_t< D2LazyType<IndexedArgX,IndexedArgY,IndexedFArgX,IndexedFArgY>::present >>
auto RFFGen::MathematicalOperations::Chain< F, G, class, class >::d2 ( ArgX const &  dx,
ArgY const &  dy 
) const
inline

Second directional derivative.

Parameters
dxdirection for which the derivative is computed
dydirection for which the derivative is computed
template<class F, class G, class = FunctionConceptCheck<F>, class = FunctionConceptCheck<G>>
template<int idx, int idy, int idz, class ArgX , class ArgY , class ArgZ , class IndexedArgX = IndexedType<ArgX,idx>, class IndexedArgY = IndexedType<ArgY,idy>, class IndexedArgZ = IndexedType<ArgZ,idz>, class IndexedFArgX = IndexedType<FArg,idx>, class IndexedFArgY = IndexedType<FArg,idy>, class IndexedFArgZ = IndexedType<FArg,idz>, class = std::enable_if_t< D3LazyType<IndexedArgX,IndexedArgY,IndexedArgZ,IndexedFArgX,IndexedFArgY,IndexedFArgZ>::present >>
auto RFFGen::MathematicalOperations::Chain< F, G, class, class >::d3 ( ArgX const &  dx,
ArgY const &  dy,
ArgZ const &  dz 
) const
inline

Third directional derivative.

Parameters
dxdirection for which the derivative is computed
dydirection for which the derivative is computed
dzdirection for which the derivative is computed

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