528 {
530
531 if (pos<f_len-1)
532 {
534 number new_coef;
535 for(
i=0;
i<=n-sum;
i++)
536 {
539 {
540 new_coef=
n_Copy(coef,r->cf);
541 }
542 else
543 {
544 number old=new_coef;
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);
550 old=new_coef;
551 new_coef=
n_Div(new_coef,i_number,r->cf);
555 }
556
557
558
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);
561 if (pos==f_len-2)
562 {
563
564
565 zw_real->next=zw_l;
566 zw_l=zw_real;
567 }
568
569 }
571 if (pos==f_len-2)
572 {
573 int len=n-sum+1;
575 }
576 return;
577 }
578 if(pos==f_len-1)
579 {
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);
584
585 }
587}
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 FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
static FORCE_INLINE void n_Normalize(number &n, const coeffs r)
inplace-normalization of n; produces some canonical representation of n;
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)
void kBucket_Add_q(kBucket_pt bucket, poly q, int *l)
Add to Bucket a poly ,i.e. Bpoly == q+Bpoly.