Changeset d2d22f in git
- Timestamp:
- Feb 24, 2005, 5:26:18 PM (19 years ago)
- Branches:
- (u'spielwiese', 'ec94ef7a30b928574c0c3daf41f6804dff5f6b69')
- Children:
- 9bea6ef004ce1d30a0df5771578cee93e449259d
- Parents:
- 040ee808c6d9e77d6f896824154bf12c65cd0d97
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/fast_mult.cc
r040ee80 rd2d22f 399 399 return p; 400 400 } 401 static void buildTermAndAdd(int n,number* facult,poly* f_terms,int* exp,int f_len,kBucket_pt erg_bucket,ring r ){402 number denom=n_Init(1,r);401 static void buildTermAndAdd(int n,number* facult,poly* f_terms,int* exp,int f_len,kBucket_pt erg_bucket,ring r, number coef){ 402 403 403 int i; 404 404 poly term=p_Init(r); 405 for(i=0;i<f_len;i++){ 406 if(exp[i]!=0){ 407 number trash=denom; 408 denom=n_Mult(denom,facult[exp[i]],r); 409 n_Delete(&trash,r); 410 } 405 406 // number denom=n_Init(1,r); 407 // for(i=0;i<f_len;i++){ 408 // if(exp[i]!=0){ 409 // number trash=denom; 410 // denom=n_Mult(denom,facult[exp[i]],r); 411 // n_Delete(&trash,r); 412 // } 411 413 412 } 413 number coef=n_IntDiv(facult[n],denom,r); //right function here? 414 n_Delete(&denom,r); 415 poly erg=p_NSet(coef,r); 414 // } 415 // number coef=n_IntDiv(facult[n],denom,r); //right function here? 416 // n_Delete(&denom,r); 417 // poly erg=p_NSet(coef,r); 418 poly erg=p_NSet(n_Copy(coef,r),r); 416 419 for(i=0;i<f_len;i++){ 417 420 if(exp[i]!=0){ … … 424 427 425 428 } 426 int pseudo_len= 0;429 int pseudo_len=1; 427 430 kBucket_Add_q(erg_bucket,erg,&pseudo_len); 428 431 } … … 430 433 431 434 432 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 ){435 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){ 433 436 int i; 437 434 438 if (pos<f_len-1){ 435 439 for(i=0;i<=n-sum;i++){ 436 440 exp[pos]=i; 437 MC_iterate(f, n, r, f_len,facult, exp,f_terms,erg_bucket,pos+1,sum+i); 441 number new_coef=n_IntDiv(coef,facult[i],r); 442 MC_iterate(f, n, r, f_len,facult, exp,f_terms,erg_bucket,pos+1,sum+i,new_coef); 443 n_Delete(& new_coef,r); 438 444 } 439 445 return; … … 442 448 i=n-sum; 443 449 exp[pos]=i; 444 buildTermAndAdd(n,facult,f_terms,exp,f_len,erg_bucket,r); 450 number new_coef=n_IntDiv(coef,facult[i],r); 451 buildTermAndAdd(n,facult,f_terms,exp,f_len,erg_bucket,r, new_coef); 452 n_Delete(& new_coef,r); 445 453 } 446 454 assume(pos<=f_len-1); … … 472 480 } 473 481 assume(f_iter==NULL); 474 MC_iterate(f,n,r,f_len,&facult[0], &exp[0], &f_terms[0],erg_bucket,0,0 );482 MC_iterate(f,n,r,f_len,&facult[0], &exp[0], &f_terms[0],erg_bucket,0,0,facult[n]); 475 483 476 484 … … 483 491 //free facult 484 492 for(i=0;i<=n;i++){ 485 nDelete(&facult[ 0]);493 nDelete(&facult[i]); 486 494 } 487 495 omfree(exp); … … 491 499 poly erg; 492 500 kBucketClear(erg_bucket,&erg, &len); 501 kBucketDestroy(&erg_bucket); 493 502 return erg; 494 503 }
Note: See TracChangeset
for help on using the changeset viewer.