1#ifndef CLASSIC_FTpsData_H
2#define CLASSIC_FTpsData_H
47 static inline int getOrder(
int index);
50 static inline int getSize(
int order);
57 static inline int orderStart(
int order,
int nv);
60 static inline int orderEnd(
int order);
63 static inline int orderEnd(
int order,
int nv);
69 static inline int orderLength(
int orderL,
int orderH);
82 static void setup(
int order);
91 void build(
int order);
98 Array1D < FArray1D < int, N + 1 > >
binom;
156template <
int N>
inline
169 for(
int var = N; var-- > 0;) {
171 index +=
theBook->binom[order][var];
178template <
int N>
inline
181 return theBook->expon[index].getOrder();
185template <
int N>
inline
192template <
int N>
inline
199template <
int N>
inline
202 return theBook->binom[order][N-nv];
206template <
int N>
inline
213template <
int N>
inline
216 return theBook->binom[order+1][N-nv];
220template <
int N>
inline
224 return theBook->binom[order+1][1];
228template <
int N>
inline
235template <
int N>
inline
242template <
int N>
inline
245 return theBook->vrblList[index];
266template <
int N>
inline
311 for(
int var = N + 1; var-- > 0;)
binom[0][var] = 0;
312 for(
int ord = 1; ord <=
topOrder + 1; ord++) {
315 for(
int var = N; var-- > 0;)
331 for(
int index = 1; index <
topSize; index++)
expon[index][0] = index;
333 for(
int index = 1; index <
topSize; index++) {
334 int carry = power[N-1];
337 while(power[lastnz] == 0 && lastnz-- > 0) {}
339 if(lastnz == -1) power[0] = 1 + carry;
342 power[lastnz+1] += 1 + carry;
345 expon[index] = power;
353 for(
int xord = 0; xord <=
topOrder; xord++) {
355 int ysize =
bin[yord+1];
356 for(
int i =
bin[xord]; i <
bin[xord+1]; i++) {
359 for(
int j = 0; j < std::min(i, ysize); j++) {
362 for(
int j = i; j < ysize; j++) {
366 for(
int vv = N; vv-- > 0;) {
368 ind +=
binom[ord][vv];
382 int j = 1, N1 = N - 1;
384 for(
int ord = 1; ord <=
topOrder; ord++) {
387 std::fill(vars, vars + ord,
int(0));
389 int last_j =
bin[ord+1];
390 int *vlast = vars + ord;
392 while(++j < last_j) {
395 while(*--vi == N1) {};
397 std::fill(vi, vlast, k);
420 for(
int v = var; v < N; v++) {
425 for(
int vv = N; vv-- > 0;) {
427 ind +=
binom[ord][vv];
FTpsData< N > * FTpsData< N >::theBook
PartBunchBase< T, Dim >::ConstIterator begin(PartBunchBase< T, Dim > const &bunch)
Tps< T > pow(const Tps< T > &x, int y)
Integer power.
Representation of the exponents for a monomial with fixed dimension.
Internal utility class for FTps<T,N> class.
static int orderEnd(int order)
static const FMonomial< N > & getExponents(int index)
void fillSubst(int var, int order, FMonomial< N > &pow, int &next)
static int getIndex(const FMonomial< N > &)
static const Array1D< TpsSubstitution > & getSubTable()
Array1D< Array1D< int > > prod
static FTpsData< N > * theBook
FTpsData(const FTpsData &)
Array1D< Array1D< int > > vrblList
static int getOrder(int index)
static int getSize(int order)
Array1D< TpsSubstitution > subTable
static const Array1D< int > & getVariableList(int index)
static void setup(int order)
static int orderLength(int order)
Array1D< FArray1D< int, N+1 > > binom
void operator=(const FTpsData &)
Array1D< int > Giorgilli2ExponIndex
static int orderStart(int order)
static const Array1D< int > & getProductArray(int index)
Array1D< FMonomial< N > > expon