Changeset a7c2db in git


Ignore:
Timestamp:
Feb 20, 2002, 4:50:34 PM (21 years ago)
Author:
Mathias Schulze <mschulze@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'f875bbaccd0831e36aaed09ff6adeb3eb45aeb94')
Children:
15d67dbe0d26f75f69401431c375a9cc6f137faa
Parents:
900cea1b1461e5dcef8e13aba10034edc5914c65
Message:
*** empty log message ***


git-svn-id: file:///usr/local/Singular/svn/trunk@5902 2c84dea3-7e68-4137-9b89-c4e89433aadc
Location:
Singular
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Singular/eigenval.cc

    r900cea ra7c2db  
    22*  Computer Algebra System SINGULAR      *
    33*****************************************/
    4 /* $Id: eigenval.cc,v 1.9 2002-02-16 18:26:07 mschulze Exp $ */
     4/* $Id: eigenval.cc,v 1.10 2002-02-20 15:50:34 mschulze Exp $ */
    55/*
    66* ABSTRACT: eigenvalues of constant square matrices
     
    6363          int j=(int)h->Data();
    6464          res->rtyp=MATRIX_CMD;
    65           res->data=(void*)evSwap(mpCopy(M),i,j);
     65          res->data=(void *)evSwap(mpCopy(M),i,j);
    6666          return FALSE;
    6767        }
     
    8484
    8585  for(int l=1;l<=MATCOLS(M);l++)
    86     MATELEM(M,i,l)=pSub(MATELEM(M,i,l),pMult(pCopy(p),pCopy(MATELEM(M,j,l))));
     86    MATELEM(M,i,l)=pSub(MATELEM(M,i,l),ppMult_qq(p,MATELEM(M,j,l)));
    8787
    8888  for(int l=1;l<=MATROWS(M);l++)
    89     MATELEM(M,l,j)=pAdd(MATELEM(M,l,j),pMult(pCopy(p),pCopy(MATELEM(M,l,i))));
     89    MATELEM(M,l,j)=pAdd(MATELEM(M,l,j),ppMult_qq(p,MATELEM(M,l,i)));
    9090
    9191  pDelete(&p);
     
    115115            int k=(int)h->Data();
    116116            res->rtyp=MATRIX_CMD;
    117             res->data=(void*)evRowElim(mpCopy(M),i,j,k);
     117            res->data=(void *)evRowElim(mpCopy(M),i,j,k);
    118118            return FALSE;
    119119          }
     
    137137
    138138  for(int l=1;l<=MATROWS(M);l++)
    139     MATELEM(M,l,i)=pSub(MATELEM(M,l,i),pMult(pCopy(p),pCopy(MATELEM(M,l,j))));
     139    MATELEM(M,l,i)=pSub(MATELEM(M,l,i),ppMult_qq(p,MATELEM(M,l,j)));
    140140
    141141  for(int l=1;l<=MATCOLS(M);l++)
    142     MATELEM(M,j,l)=pAdd(MATELEM(M,j,l),pMult(pCopy(p),pCopy(MATELEM(M,i,l))));
     142    MATELEM(M,j,l)=pAdd(MATELEM(M,j,l),ppMult_qq(p,MATELEM(M,i,l)));
    143143
    144144  pDelete(&p);
     
    168168            int k=(int)h->Data();
    169169            res->rtyp=MATRIX_CMD;
    170             res->data=(void*)evColElim(mpCopy(M),i,j,k);
     170            res->data=(void *)evColElim(mpCopy(M),i,j,k);
    171171            return FALSE;
    172172          }
     
    212212      matrix M=(matrix)h->Data();
    213213      res->rtyp=MATRIX_CMD;
    214       res->data=(void*)evHessenberg(mpCopy(M));
     214      res->data=(void *)evHessenberg(mpCopy(M));
    215215      return FALSE;
    216216    }
     
    372372      matrix M=(matrix)h->Data();
    373373      res->rtyp=LIST_CMD;
    374       res->data=(void*)evEigenvals(mpCopy(M));
     374      res->data=(void *)evEigenvals(mpCopy(M));
    375375      return FALSE;
    376376    }
  • Singular/gms.cc

    r900cea ra7c2db  
    22*  Computer Algebra System SINGULAR      *
    33*****************************************/
    4 /* $Id: gms.cc,v 1.5 2002-02-16 13:49:03 mschulze Exp $ */
     4/* $Id: gms.cc,v 1.6 2002-02-20 15:50:34 mschulze Exp $ */
    55/*
    66* ABSTRACT: Gauss-Manin system normal form
     
    2121#include "gms.h"
    2222
     23
    2324lists gmsNF(ideal p,ideal g,matrix B,int D,int K)
    2425{
    2526  ideal r=idInit(IDELEMS(p),1);
    2627  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);
    2791
    2892  lists l=(lists)omAllocBin(slists_bin);
     
    3498  l->m[1].data=q;
    3599
    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       else
    57       {
    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 
    72100  return l;
    73101}
     102
    74103
    75104BOOLEAN gmsNF(leftv res,leftv h)
     
    97126              int K=(int)h->Data();
    98127              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);
    100129              return FALSE;
    101130            }
Note: See TracChangeset for help on using the changeset viewer.