void IFunction1D::function(const FunctionDomain &domain, FunctionValues &values) const { auto histoDomain = dynamic_cast<const FunctionDomain1DHistogram *>(&domain); if (histoDomain) { histogram1D(values.getPointerToCalculated(0), histoDomain->leftBoundary(), histoDomain->getPointerAt(0), histoDomain->size()); return; } const FunctionDomain1D *d1d = dynamic_cast<const FunctionDomain1D *>(&domain); if (!d1d) { throw std::invalid_argument("Unexpected domain in IFunction1D"); } function1D(values.getPointerToCalculated(0), d1d->getPointerAt(0), d1d->size()); }
/** * Implements the virtual method. Tests the domain for FunctionDomain1D and calls function1D. * @param domain :: The domain, must be FunctionDomain1D. * @param values :: The output values. */ void IFunction1D::function(const FunctionDomain& domain,FunctionValues& values)const { const FunctionDomain1D* d1d = dynamic_cast<const FunctionDomain1D*>(&domain); if (!d1d) { throw std::invalid_argument("Unexpected domain in IFunction1D"); } function1D(values.getPointerToCalculated(0),d1d->getPointerAt(0),d1d->size()); }
void IFunction1D::derivative(const FunctionDomain &domain, FunctionValues &values, const size_t order) const { const FunctionDomain1D *d1d = dynamic_cast<const FunctionDomain1D *>(&domain); if (!d1d) { throw std::invalid_argument("Unexpected domain in IFunction1D"); } derivative1D(values.getPointerToCalculated(0), d1d->getPointerAt(0), d1d->size(), order); }