42 if (numericalIntegrationScheme !=
nullptr) {
43 return (*numericalIntegrationScheme)(
function, min, max);
47 <<
"requieres that you provide a NumericalIntegrationScheme";
76 return iter->second(f1, f2);
80 return iter->second(f2, f1);
86 return iter2->second(f1, f2);
90 return iter2->second(f2, f1);
void operator()(const std::vector< double > &xs, std::vector< double > &out) const override
double operator()(const double x) const override
std::unique_ptr< Function > m_f1
std::unique_ptr< Function > clone() const override
std::unique_ptr< Function > m_f2
DefaultMultiplication(const Function &f1, const Function &f2)
Interface representing an integrable function.
virtual double integrate(const double a, const double b) const =0
Interface class representing a function with an arbitrary number of parameters.
ELEMENTS_API std::map< std::pair< std::type_index, std::type_index >, MultiplyFunction > multiplySpecificSpecificMap
ELEMENTS_API std::map< std::type_index, MultiplyFunction > multiplySpecificGenericMap
ELEMENTS_API double integrate(const Function &function, const double min, const double max, std::unique_ptr< NumericalIntegrationScheme > numericalIntegrationScheme=nullptr)
ELEMENTS_API std::unique_ptr< Function > multiply(const Function &f1, const Function &f2)