Changeset 76b4bd in git for Singular/eigenval_ip.cc


Ignore:
Timestamp:
Mar 4, 2004, 11:08:24 AM (20 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
cec18c94b438d2504bc3c731cea94331af31cd83
Parents:
c4097df6269597fe0c7c72d02451429687a8b584
Message:
*hannes: eigenval->eigenval_ip, kernel/eigenval


git-svn-id: file:///usr/local/Singular/svn/trunk@7073 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 moved

Legend:

Unmodified
Added
Removed
  • Singular/eigenval_ip.cc

    rc4097d r76b4bd  
    22*  Computer Algebra System SINGULAR      *
    33*****************************************/
    4 /* $Id: eigenval.cc,v 1.13 2002-05-31 09:00:12 Singular Exp $ */
     4/* $Id: eigenval_ip.cc,v 1.1 2004-03-04 10:06:50 Singular Exp $ */
    55/*
    66* ABSTRACT: eigenvalues of constant square matrices
     
    2222#include "clapsing.h"
    2323#include "eigenval.h"
    24 
    25 
    26 matrix evSwap(matrix M,int i,int j)
    27 {
    28   if(i==j)
    29     return(M);
    30 
    31   for(int k=1;k<=MATROWS(M);k++)
    32   {
    33     poly p=MATELEM(M,i,k);
    34     MATELEM(M,i,k)=MATELEM(M,j,k);
    35     MATELEM(M,j,k)=p;
    36   }
    37 
    38   for(int k=1;k<=MATCOLS(M);k++)
    39   {
    40     poly p=MATELEM(M,k,i);
    41     MATELEM(M,k,i)=MATELEM(M,k,j);
    42     MATELEM(M,k,j)=p;
    43   }
    44 
    45   return(M);
    46 }
     24#include "eigenval_ip.h"
    4725
    4826
     
    7452  return TRUE;
    7553}
    76 
    77 
    78 matrix evRowElim(matrix M,int i,int j,int k)
    79 {
    80   if(MATELEM(M,i,k)==NULL||MATELEM(M,j,k)==NULL)
    81     return(M);
    82 
    83   poly p=pNSet(nDiv(pGetCoeff(MATELEM(M,i,k)),pGetCoeff(MATELEM(M,j,k))));
    84   pNormalize(p);
    85 
    86   for(int l=1;l<=MATCOLS(M);l++)
    87   {
    88     MATELEM(M,i,l)=pSub(MATELEM(M,i,l),ppMult_qq(p,MATELEM(M,j,l)));
    89     pNormalize(MATELEM(M,i,l));
    90   }
    91   for(int l=1;l<=MATROWS(M);l++)
    92   {
    93     MATELEM(M,l,j)=pAdd(MATELEM(M,l,j),ppMult_qq(p,MATELEM(M,l,i)));
    94     pNormalize(MATELEM(M,l,j));
    95   }
    96 
    97   pDelete(&p);
    98 
    99   return(M);
    100 }
    101 
    10254
    10355BOOLEAN evRowElim(leftv res,leftv h)
     
    13486}
    13587
    136 
    137 matrix evColElim(matrix M,int i,int j,int k)
    138 {
    139   if(MATELEM(M,k,i)==0||MATELEM(M,k,j)==0)
    140     return(M);
    141 
    142   poly p=pNSet(nDiv(pGetCoeff(MATELEM(M,k,i)),pGetCoeff(MATELEM(M,k,j))));
    143   pNormalize(p);
    144 
    145   for(int l=1;l<=MATROWS(M);l++)
    146   {
    147     MATELEM(M,l,i)=pSub(MATELEM(M,l,i),ppMult_qq(p,MATELEM(M,l,j)));
    148     pNormalize(MATELEM(M,l,i));
    149   }
    150   for(int l=1;l<=MATCOLS(M);l++)
    151   {
    152     MATELEM(M,j,l)=pAdd(MATELEM(M,j,l),ppMult_qq(p,MATELEM(M,i,l)));
    153     pNormalize(MATELEM(M,j,l));
    154   }
    155 
    156   pDelete(&p);
    157 
    158   return(M);
    159 }
    160 
    161 
    16288BOOLEAN evColElim(leftv res,leftv h)
    16389{
     
    192118  return TRUE;
    193119}
    194 
    195 
    196 matrix evHessenberg(matrix M)
    197 {
    198   int n=MATROWS(M);
    199   if(n!=MATCOLS(M))
    200     return(M);
    201 
    202   for(int k=1,j=2;k<n-1;k++,j=k+1)
    203   {
    204     while(j<=n&&MATELEM(M,j,k)==0)
    205       j++;
    206 
    207     if(j<=n)
    208     {
    209       M=evSwap(M,j,k+1);
    210 
    211       for(int i=j+1;i<=n;i++)
    212         M=evRowElim(M,i,k+1,k);
    213     }
    214   }
    215 
    216   return(M);
    217 }
    218 
    219120
    220121BOOLEAN evHessenberg(leftv res,leftv h)
Note: See TracChangeset for help on using the changeset viewer.