30 #include <gsl/gsl_sf_pow_int.h>
44 polynomialSum_m(polynomialSum.polynomialSum_m) {
63 for (std::size_t i = 0; i < pSize; i++) {
65 for (std::size_t j = 0; j < N; j++) {
66 std::vector<std::size_t> tempdS =
71 tempdS[j] = tempdS[j] - 1;
72 if ((j + 1) == N) tempdS.push_back(0);
73 tempdS[j + 1] = tempdS[j + 1] + 1;
112 std::vector<TwoPolynomial> newPoly;
114 newPoly.insert(newPoly.end(),
117 newPoly.insert(newPoly.end(),
124 const std::size_t &p)
const {
126 std::vector<std::size_t> dummy;
160 const std::vector<double> &dSvalues,
161 std::vector<std::vector<double>> &finalPolynomial)
const {
162 finalPolynomial.resize(1);
163 finalPolynomial[0].resize(1, 0.0);
164 std::size_t nx = 0, ns = 0;
169 double dSfactoreval = 1.0;
170 for (std::size_t q = 0;
173 dSfactoreval *= gsl_sf_pow_int(dSvalues[q + 1],
178 for (std::size_t k = nx + 1;
181 finalPolynomial[nx].resize(ns + 1, 0.0);
187 for (std::size_t k = 0; k <= nx; k++) {
188 finalPolynomial[k].resize(ns + 1, 0.0);
191 for (std::size_t i = 0;
194 for (std::size_t j = 0;
198 .coefficients_m[i][j]
208 const std::vector<double> &dSvalues)
const {
209 std::vector<std::vector<double>> coefficients;
212 std::size_t i = coefficients.size();
215 std::size_t j = coefficients[0].size();
219 temp = temp * s + coefficients[i][j];
221 result = result * x + temp;
T::PETE_Expr_t::PETE_Return_t sum(const PETE_Expr< T > &expr)
bool isPolynomialZero(const std::size_t &p) const
void printPolynomial() const
void addPolynomial(const PolynomialSum &poly)
void truncate(const std::size_t &truncateOrder)
PolynomialSum & operator=(const PolynomialSum &sum)
void putSumTogether(const std::vector< double > &dSvalues, std::vector< std::vector< double >> &finalPolynomial) const
void multiplyPolynomial(const TwoPolynomial &poly)
std::vector< TwoPolynomial > polynomialSum_m
std::vector< std::size_t > getdSfactors(const std::size_t &p) const
double evaluatePolynomial2(const double &x, const double &s, const std::vector< double > &dSvalues) const