42 if (numericalIntegrationScheme !=
nullptr) {
43 return (*numericalIntegrationScheme)(
function, min, max);
47 <<
"requiere 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);
ELEMENTS_API std::unique_ptr< Function > multiply(const Function &f1, const Function &f2)
std::unique_ptr< Function > m_f1
void operator()(const std::vector< double > &xs, std::vector< double > &out) const override
ELEMENTS_API std::map< std::type_index, MultiplyFunction > multiplySpecificGenericMap
virtual std::unique_ptr< NAryFunction > clone() const =0
Interface class representing a function with an arbitrary number of parameters.
Interface representing an integrable function.
std::unique_ptr< Function > clone() const override
std::unique_ptr< Function > m_f2
ELEMENTS_API std::map< std::pair< std::type_index, std::type_index >, MultiplyFunction > multiplySpecificSpecificMap
ELEMENTS_API double integrate(const Function &function, const double min, const double max, std::unique_ptr< NumericalIntegrationScheme > numericalIntegrationScheme=nullptr)
virtual double integrate(const double a, const double b) const =0
DefaultMultiplication(const Function &f1, const Function &f2)
double operator()(const double x) const override