Changeset 81306a in git for kernel/tgbgauss.cc
- Timestamp:
- May 9, 2005, 12:03:25 PM (19 years ago)
- Branches:
- (u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
- Children:
- bafa5b4ac634fe7bcc5d99004b65bffd70c587ad
- Parents:
- b055de970998dfcbcea96c80ca2368175890afb4
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/tgbgauss.cc
rb055de9 r81306a 3 3 4 4 static const int bundle_size=100; 5 6 mac_poly mac_p_add_ff_qq(mac_poly a, number f,mac_poly b){ 7 mac_poly erg; 8 mac_poly* set_this; 9 set_this=&erg; 10 while((a!=NULL) &&(b!=NULL)){ 11 if (a->exp<b->exp){ 12 (*set_this)=a; 13 a=a->next; 14 set_this= &((*set_this)->next); 15 } 16 else{ 17 if (a->exp>b->exp){ 18 mac_poly in =new mac_poly_r(); 19 in->exp=b->exp; 20 in->coef=nMult(b->coef,f); 21 (*set_this)=in; 22 b=b->next; 23 set_this= &((*set_this)->next); 24 } 25 else { 26 //a->exp==b->ecp 27 number n=nMult(b->coef,f); 28 number n2=nAdd(a->coef,n); 29 nDelete(&n); 30 nDelete(&(a->coef)); 31 if (nIsZero(n2)){ 32 nDelete(&n2); 33 mac_poly ao=a; 34 a=a->next; 35 delete ao; 36 b=b->next; 37 38 } else { 39 a->coef=n2; 40 b=b->next; 41 (*set_this)=a; 42 a=a->next; 43 set_this= &((*set_this)->next); 44 } 45 46 } 47 48 } 49 } 50 if((a==NULL)&&(b==NULL)){ 51 (*set_this)=NULL; 52 return erg; 53 } 54 if (b==NULL) { 55 (*set_this=a); 56 return erg; 57 } 58 59 //a==NULL 60 while(b!=NULL){ 61 mac_poly mp= new mac_poly_r(); 62 mp->exp=b->exp; 63 mp->coef=nMult(f,b->coef); 64 (*set_this)=mp; 65 set_this=&(mp->next); 66 b=b->next; 67 } 68 (*set_this)=NULL; 69 return erg; 70 71 } 72 void mac_mult_cons(mac_poly p,number c){ 73 while(p){ 74 number m=nMult(p->coef,c); 75 nDelete(&(p->coef)); 76 p->coef=m; 77 p=p->next; 78 } 79 80 } 81 int mac_length(mac_poly p){ 82 int l=0; 83 while(p){ 84 l++; 85 p=p->next; 86 } 87 return l; 88 } 89 //contrary to delete on the mac_poly_r, the coefficients are also destroyed here 90 void mac_destroy(mac_poly p){ 91 mac_poly iter=p; 92 while(iter) 93 { 94 mac_poly next=iter->next; 95 nDelete(&iter->coef); 96 delete iter; 97 iter=next; 98 } 99 } 100 5 101 void simple_gauss(tgb_sparse_matrix* mat, calc_dat* c){ 6 102 int col, row;
Note: See TracChangeset
for help on using the changeset viewer.