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);
547 n_Delete(&old_rest,r->cf);
548 n_Delete(&old,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);
552 n_Normalize(new_coef,r->cf);
553 n_Delete(&old,r->cf);
554 n_Delete(&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 }
570 n_Delete(&new_coef,r->cf);
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 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.