535 for(i=0;i<=
n-sum;i++)
545 number old_rest=
n_Init(
n-sum-(i-1),
r->cf);
546 new_coef=
n_Mult(new_coef,old_rest,
r->cf);
549 number i_number=
n_Init(i,
r->cf);
551 new_coef=
n_Div(new_coef,i_number,
r->cf);
560 MC_iterate(
f,
n,
r, f_len,facult,
exp,f_terms,erg_bucket,pos+1,sum+i,new_coef,zw_real,tmp,term_pot);
582 number new_coef=
n_Copy(coef,
r->cf);
583 buildTermAndAdd(
n,facult,f_terms,
exp,f_len,erg_bucket,
r, new_coef,zw, tmp,term_pot);
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
const CanonicalForm CFMap CFMap int &both_non_zero int n
static FORCE_INLINE void n_Normalize(number &n, const coeffs r)
inplace-normalization of n; produces some canonical representation of n;
static FORCE_INLINE number n_Mult(number a, number b, const coeffs r)
return the product of 'a' and 'b', i.e., a*b
static FORCE_INLINE number n_Copy(number n, const coeffs r)
return a copy of 'n'
static FORCE_INLINE number n_Div(number a, number b, const coeffs r)
return the quotient of 'a' and 'b', i.e., a/b; raises an error if 'b' is not invertible in r exceptio...
static void MC_iterate(poly f, int n, ring r, int f_len, number *facult, int *exp, poly *f_terms, kBucket_pt erg_bucket, int pos, int sum, number coef, poly &zw, poly tmp, poly **term_pot)
static void buildTermAndAdd(int, number *, poly *, int *exp, int f_len, kBucket_pt, ring r, number coef, poly &zw, poly, poly **term_pot)
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
void kBucket_Add_q(kBucket_pt bucket, poly q, int *l)
Add to Bucket a poly ,i.e. Bpoly == q+Bpoly.