Changeset 3625cb in git


Ignore:
Timestamp:
Nov 15, 2013, 11:51:17 AM (9 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', '48f1dd268d0ff74ef2f7dccbf02545425002ddcc')
Children:
5313c099cf9db0abd520c21bc971ae22d8b655fd
Parents:
6416f83bfe7f396c6c5f1abec8092f44815d0a8f
git-author:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2013-11-15 11:51:17+01:00
git-committer:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2013-11-15 14:27:17+01:00
Message:
pfister: modstd over algebraic extension fields
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/modstd.lib

    r6416f83 r3625cb  
    731731}
    732732
     733static proc algeModStd(ideal i,list #)
     734{
     735//reduces modStd over algebraic extensions to the one over a polynomial ring
     736   list L=#;
     737   def R=basering;
     738   int n=nvars(R);
     739   list rl=ringlist(R);
     740   poly p=minpoly;
     741   rl[2][n+1]=rl[1][2][1];
     742   rl[1]=rl[1][1];
     743   rl[3][size(rl[3])+1]=rl[3][size(rl[3])];
     744   rl[3][size(rl[3])-1]=list("dp",1);
     745   def S=ring(rl);
     746   setring S;
     747   poly p=imap(R,p);
     748   ideal i=imap(R,i);
     749   i=i,p;
     750   ideal j=modStd(i,L);
     751   if(j[1]==p)
     752   {
     753      j[1]=0;
     754   }
     755   j=simplify(j,2);
     756   setring R;
     757   ideal j=imap(S,j);
     758   return(j);
     759}
    733760////////////////////////////// main procedures /////////////////////////////////
    734761
     
    764791   def R0 = basering;
    765792   list rl = ringlist(R0);
    766    if((npars(R0) > 0) || (rl[1] > 0))
    767    {
     793
     794   int algebraic;
     795   if(size(#)>0)
     796   {
     797      if(#[1]<=0)
     798      {
     799         algebraic=1;
     800         #[1]=-#[1];
     801         if(#[1]==0){list LK;#=LK;}
     802      }
     803   }
     804
     805   if((npars(R0) > 0) || (rl[1][1] > 0))
     806   {
     807      if(npars(R0)==1)
     808      {
     809         if(minpoly!=0)
     810         {
     811            list LM=#;
     812            if(size(LM)==0){LM[1]=0;}
     813            LM[1]=-LM[1];
     814            return(algeModStd(I,LM));
     815         }
     816      }
     817
    768818      ERROR("Characteristic of basering should be zero, basering should
    769819             have no parameters.");
     
    10301080      }
    10311081   }
     1082   if(algebraic){variant=2;}
    10321083
    10331084   list P,T1,T2,T3,LL;
Note: See TracChangeset for help on using the changeset viewer.