>
*
* auto wantedLatticeF = restrict(wantedF, sLattice);
* auto relaticeErrorF = norm(wantedLatticeF - f, indicatorF)
* / norm
(wantedLatticeF, indicatorF);
* \endcode
*
* Note that any of the functors managed by std::shared_ptr may be returned
* and reused independently.
*
* i.e. it is not necessary to manually assure the lifetime of any functor
* used by the composition.
**/
namespace functor_dsl {
/// Lifts functor reference to std::shared_ptr functor arithmetic
template
std::shared_ptr> lift(SuperF3D& f);
/// Lifts functor pointer to std::shared_ptr functor arithmetic
template
std::shared_ptr> lift(SuperF3D* f);
/// Lifts functor reference to std::shared_ptr functor arithmetic
template
std::shared_ptr> lift(AnalyticalF3D& f);
/// Lifts functor pointer to std::shared_ptr functor arithmetic
template
std::shared_ptr> lift(AnalyticalF3D* f);
/// Returns baseF raised to the power of exponentF
template
std::shared_ptr> pow(std::shared_ptr> baseF,
std::shared_ptr> exponentF);
/// Returns baseF raised to the power of exponent
template
std::shared_ptr> pow(std::shared_ptr> baseF,
E exponent);
/// Returns base raised to the power of exponentF
template
std::shared_ptr> pow(B base,
std::shared_ptr> exponentF);
/// Returns Lp norm for a functor f on the subset described by indicatorF
template
std::shared_ptr> norm(std::shared_ptr> f,
std::shared_ptr> indicatorF);
/// Returns restriction of a analytical functor f to the lattice sLattice
template
std::shared_ptr> restrict(std::shared_ptr> f,
SuperLattice3D& sLattice);
}
}
#endif