28#ifndef RECURSION_RELATION_H
29#define RECURSION_RELATION_H
74 const std::size_t &highestXorder);
86 void truncate(std::size_t highestXorder);
101 const std::size_t &xDerivative,
102 const std::size_t &sDerivative)
const;
111 void resizeX(
const std::size_t &xDerivatives);
115 void resizeS(
const std::size_t &sDerivatives);
141 const std::size_t &xDerivative,
142 const std::size_t &sDerivative)
const {
147 const std::size_t &s)
const {
constexpr T power(T base, unsigned exponent)
void printOperator() const
Print operator, for internal debugging.
bool isPolynomialZero(const std::size_t &x, const std::size_t &s) const
Check if polynomial with x x-derivaties and s s-derivatives is a zero polynomial If x or s is larger...
double evaluatePolynomial(const double &x, const std::size_t &xDerivative, const std::size_t &sDerivative) const
Evaluate polynomial with xDerivative x-derivatives and sDerivative s-derivatives If xDerivative or s...
std::size_t getSDerivatives() const
Returns highest derivative in s.
void resizeX(const std::size_t &xDerivatives)
Set highest derivative in x to xDerivatives.
void differentiateX()
Differentiate wrt x using product rule.
std::size_t getXDerivatives() const
Returns highest derivative in x.
void resizeS(const std::size_t &sDerivatives)
Set highest derivative in s to sDerivatives.
std::size_t highestXorder_m
void resizeX(const std::size_t &xDerivatives)
Change number of x-derivatives to xDerivatives.
std::size_t getMaxXDerivatives() const
Returns highest derivative of x.
std::size_t getMaxSDerivatives() const
Returns highest derivative of s.
void differentiateX()
Apply a differential operator in x.
~RecursionRelation()
Desctructor, does nothing.
bool isPolynomialZero(const std::size_t &x, const std::size_t &s) const
Check if polynomial with x x-derivatives and s s-derivatives is zero.
RecursionRelation & operator=(const RecursionRelation &recursion)
Assigment operator.
void truncate(std::size_t highestXorder)
Truncate series in x at highestXorder.
RecursionRelation()
Default constructor, initialises identity operator.
void resizeS(const std::size_t &sDerivatives)
Change number of s-derivatives to sDerivatives.
void applyOperator()
Increase power n by one.
void printOperator() const
Print operator, used for internal debugging.
DifferentialOperator operator_m
double evaluatePolynomial(const double &x, const std::size_t &xDerivative, const std::size_t &sDerivative) const
Evaluates polynomial.