Changeset a7c2db in git
- Timestamp:
- Feb 20, 2002, 4:50:34 PM (21 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'f875bbaccd0831e36aaed09ff6adeb3eb45aeb94')
- Children:
- 15d67dbe0d26f75f69401431c375a9cc6f137faa
- Parents:
- 900cea1b1461e5dcef8e13aba10034edc5914c65
- Location:
- Singular
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/eigenval.cc
r900cea ra7c2db 2 2 * Computer Algebra System SINGULAR * 3 3 *****************************************/ 4 /* $Id: eigenval.cc,v 1. 9 2002-02-16 18:26:07mschulze Exp $ */4 /* $Id: eigenval.cc,v 1.10 2002-02-20 15:50:34 mschulze Exp $ */ 5 5 /* 6 6 * ABSTRACT: eigenvalues of constant square matrices … … 63 63 int j=(int)h->Data(); 64 64 res->rtyp=MATRIX_CMD; 65 res->data=(void *)evSwap(mpCopy(M),i,j);65 res->data=(void *)evSwap(mpCopy(M),i,j); 66 66 return FALSE; 67 67 } … … 84 84 85 85 for(int l=1;l<=MATCOLS(M);l++) 86 MATELEM(M,i,l)=pSub(MATELEM(M,i,l),p Mult(pCopy(p),pCopy(MATELEM(M,j,l))));86 MATELEM(M,i,l)=pSub(MATELEM(M,i,l),ppMult_qq(p,MATELEM(M,j,l))); 87 87 88 88 for(int l=1;l<=MATROWS(M);l++) 89 MATELEM(M,l,j)=pAdd(MATELEM(M,l,j),p Mult(pCopy(p),pCopy(MATELEM(M,l,i))));89 MATELEM(M,l,j)=pAdd(MATELEM(M,l,j),ppMult_qq(p,MATELEM(M,l,i))); 90 90 91 91 pDelete(&p); … … 115 115 int k=(int)h->Data(); 116 116 res->rtyp=MATRIX_CMD; 117 res->data=(void *)evRowElim(mpCopy(M),i,j,k);117 res->data=(void *)evRowElim(mpCopy(M),i,j,k); 118 118 return FALSE; 119 119 } … … 137 137 138 138 for(int l=1;l<=MATROWS(M);l++) 139 MATELEM(M,l,i)=pSub(MATELEM(M,l,i),p Mult(pCopy(p),pCopy(MATELEM(M,l,j))));139 MATELEM(M,l,i)=pSub(MATELEM(M,l,i),ppMult_qq(p,MATELEM(M,l,j))); 140 140 141 141 for(int l=1;l<=MATCOLS(M);l++) 142 MATELEM(M,j,l)=pAdd(MATELEM(M,j,l),p Mult(pCopy(p),pCopy(MATELEM(M,i,l))));142 MATELEM(M,j,l)=pAdd(MATELEM(M,j,l),ppMult_qq(p,MATELEM(M,i,l))); 143 143 144 144 pDelete(&p); … … 168 168 int k=(int)h->Data(); 169 169 res->rtyp=MATRIX_CMD; 170 res->data=(void *)evColElim(mpCopy(M),i,j,k);170 res->data=(void *)evColElim(mpCopy(M),i,j,k); 171 171 return FALSE; 172 172 } … … 212 212 matrix M=(matrix)h->Data(); 213 213 res->rtyp=MATRIX_CMD; 214 res->data=(void *)evHessenberg(mpCopy(M));214 res->data=(void *)evHessenberg(mpCopy(M)); 215 215 return FALSE; 216 216 } … … 372 372 matrix M=(matrix)h->Data(); 373 373 res->rtyp=LIST_CMD; 374 res->data=(void *)evEigenvals(mpCopy(M));374 res->data=(void *)evEigenvals(mpCopy(M)); 375 375 return FALSE; 376 376 } -
Singular/gms.cc
r900cea ra7c2db 2 2 * Computer Algebra System SINGULAR * 3 3 *****************************************/ 4 /* $Id: gms.cc,v 1. 5 2002-02-16 13:49:03mschulze Exp $ */4 /* $Id: gms.cc,v 1.6 2002-02-20 15:50:34 mschulze Exp $ */ 5 5 /* 6 6 * ABSTRACT: Gauss-Manin system normal form … … 21 21 #include "gms.h" 22 22 23 23 24 lists gmsNF(ideal p,ideal g,matrix B,int D,int K) 24 25 { 25 26 ideal r=idInit(IDELEMS(p),1); 26 27 ideal q=idInit(IDELEMS(p),1); 28 29 matrix B0=mpNew(MATROWS(B),MATCOLS(B)); 30 for(int i=1;i<=MATROWS(B0);i++) 31 for(int j=1;j<=MATCOLS(B0);j++) 32 if(MATELEM(B,i,j)!=NULL) 33 MATELEM(B0,i,j)=pDiff(MATELEM(B,i,j),i+1); 34 35 for(int k=0;k<IDELEMS(p);k++) 36 { 37 while(p->m[k]!=NULL&&pGetExp(p->m[k],1)<=K) 38 { 39 int j=0; 40 while(j<IDELEMS(g)&&!pLmDivisibleBy(g->m[j],p->m[k])) 41 j++; 42 43 if(j<IDELEMS(g)) 44 { 45 poly m=pDivideM(pHead(p->m[k]),pHead(g->m[j])); 46 p->m[k]=pSub(p->m[k],ppMult_mm(g->m[j],m)); 47 pIncrExp(m,1); 48 pSetm(m); 49 for(int i=0;i<MATROWS(B);i++) 50 { 51 poly m0=pDiff(m,i+2); 52 if(MATELEM(B0,i+1,j+1)!=NULL) 53 p->m[k]=pAdd(p->m[k],ppMult_mm(MATELEM(B0,i+1,j+1),m)); 54 if(MATELEM(B,i+1,j+1)!=NULL&&m0!=NULL) 55 p->m[k]=pAdd(p->m[k],ppMult_mm(MATELEM(B,i+1,j+1),m0)); 56 pDelete(&m0); 57 } 58 pDelete(&m); 59 } 60 else 61 { 62 poly p0=p->m[k]; 63 pIter(p->m[k]); 64 pNext(p0)=NULL; 65 r->m[k]=pAdd(r->m[k],p0); 66 } 67 68 while(p->m[k]!=NULL&&pGetExp(p->m[k],1)<=K&&pWTotaldegree(p->m[k])>D) 69 { 70 int i=pGetExp(p->m[k],1); 71 do 72 { 73 poly p0=p->m[k]; 74 pIter(p->m[k]); 75 pNext(p0)=NULL; 76 q->m[k]=pAdd(q->m[k],p0); 77 }while(p->m[k]!=NULL&&pGetExp(p->m[k],1)==i); 78 } 79 80 pNormalize(p->m[k]); 81 } 82 83 q->m[k]=pAdd(q->m[k],p->m[k]); 84 p->m[k]=NULL; 85 } 86 idDelete(&p); 87 idDelete((ideal *)&B0); 88 89 idNormalize(r); 90 idNormalize(q); 27 91 28 92 lists l=(lists)omAllocBin(slists_bin); … … 34 98 l->m[1].data=q; 35 99 36 int i,j,k;37 poly d;38 for(k=0;k<IDELEMS(p);k++)39 {40 while(p->m[k]!=NULL&&pGetExp(p->m[k],1)<=K)41 {42 j=0;43 while(j<IDELEMS(g)&&!pLmDivisibleBy(g->m[j],p->m[k]))44 j++;45 46 if(j<IDELEMS(g))47 {48 d=pDivideM(pHead(p->m[k]),pHead(g->m[j]));49 p->m[k]=pSub(p->m[k],pMult(pCopy(d),pCopy(g->m[j])));50 pSetExp(d,1,pGetExp(d,1)+1);51 pSetm(d);52 for(i=0;i<MATROWS(B);i++)53 p->m[k]=pAdd(p->m[k],54 pDiff(pMult(pCopy(d),pCopy(MATELEM(B,i+1,j+1))),i+2));55 }56 else57 {58 r->m[k]=pAdd(r->m[k],pHead(p->m[k]));59 pDeleteLm(&p->m[k]);60 }61 62 while(p->m[k]!=NULL&&pWTotaldegree(p->m[k])>D&&pGetExp(p->m[k],1)<=K)63 {64 q->m[k]=pAdd(q->m[k],pHead(p->m[k]));65 pDeleteLm(&p->m[k]);66 }67 }68 69 q->m[k]=pAdd(q->m[k],pCopy(p->m[k]));70 }71 72 100 return l; 73 101 } 102 74 103 75 104 BOOLEAN gmsNF(leftv res,leftv h) … … 97 126 int K=(int)h->Data(); 98 127 res->rtyp=LIST_CMD; 99 res->data=(void *)gmsNF(idCopy(p),g,B,D,K);128 res->data=(void *)gmsNF(idCopy(p),g,B,D,K); 100 129 return FALSE; 101 130 }
Note: See TracChangeset
for help on using the changeset viewer.