37 const Integrable* integrable = dynamic_cast<const Integrable*>(&
function);
42 if (numericalIntegrationScheme!=
nullptr){
43 return (*numericalIntegrationScheme)(
function,min,max);
47 <<
"requiere that you provide a NumericalIntegrationScheme";
68 return iter->second(f1,f2);
72 return iter->second(f2,f1);
78 return iter2->second(f1,f2);
82 return iter2->second(f2,f1);
ELEMENTS_API std::unique_ptr< Function > multiply(const Function &f1, const Function &f2)
std::unique_ptr< Function > m_f1
Interface class representing a function.
ELEMENTS_API std::map< std::type_index, MultiplyFunction > multiplySpecificGenericMap
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)
virtual std::unique_ptr< Function > clone() const =0
double operator()(const double x) const override