Changeset 651953 in git


Ignore:
Timestamp:
May 30, 2000, 2:31:44 PM (24 years ago)
Author:
Gerhard Pfister <pfister@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'b21a664aa22dc6e196223af8a74ad4885e83547c')
Children:
be70a74ec442eaa575c66b8156585fb404fa7547
Parents:
f0fcdb022938901d200303f5063d8b4d606abed7
Message:
neue Prozedur splitCharp eingefuegt


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

Legend:

Unmodified
Added
Removed
  • Singular/LIB/primdec.lib

    rf0fcdb r651953  
    1 // $Id: primdec.lib,v 1.74 2000-05-25 12:29:34 pfister Exp $
     1// $Id: primdec.lib,v 1.75 2000-05-30 12:31:44 pfister Exp $
    22///////////////////////////////////////////////////////////////////////////////
    33// primdec.lib                                                               //
     
    1111///////////////////////////////////////////////////////////////////////////////
    1212
    13 version="$Id: primdec.lib,v 1.74 2000-05-25 12:29:34 pfister Exp $";
     13version="$Id: primdec.lib,v 1.75 2000-05-30 12:31:44 pfister Exp $";
    1414info="
    1515LIBRARY: primdec.lib   PROCEDURES FOR PRIMARY DECOMPOSITION
     
    716716   l1;
    717717}
     718///////////////////////////////////////////////////////////////////////////////
     719proc splitCharp(list l)
     720{
     721  if((char(basering)==0)||(npars(basering)>0))
     722  {
     723     return(l);
     724  }
     725  def P=basering;
     726  int i,j,k,m,q,d;
     727  int n=nvars(basering);
     728  ideal s,t,u,sact;
     729  poly ni;
     730  string minp,gnir,va;
     731  list sa,keep;
     732  for(i=1;i<=size(l)/2;i++)
     733  {
     734    if(size(l[2*i])==0)
     735    {
     736       if(deg(l[2*i-1][1])==vdim(l[2*i-1]))
     737       {
     738          l[2*i]=l[2*i-1];
     739       }
     740    }
     741  }
     742  for(i=1;i<=size(l)/2;i++)
     743  {
     744    if(size(l[2*i])==0)
     745    {
     746      s=factorize(l[2*i-1][1],1);
     747      t=l[2*i-1];
     748      m=size(t);
     749      ni=s[1];
     750      if(deg(ni)>1)
     751      {
     752        va=varstr(P);
     753        j=size(va);
     754        while(va[j]!=","){j--;}
     755        va=va[1..j-1];
     756        gnir="ring RL=("+string(char(P))+","+string(var(n))+"),("+va+"),dp;";
     757        execute(gnir);
     758        minpoly=leadcoef(imap(P,ni));
     759        ideal act;
     760        ideal t=imap(P,t);
     761        for(k=2;k<=m;k++)
     762        {
     763           act=factorize(t[k],1);
     764           if(size(act)>1)
     765           {
     766
     767             break;
     768           }
     769        }
     770        setring P;
     771        sact=imap(RL,act);
     772        kill RL;
     773        if(size(sact)>1)
     774        {
     775           sa=sat1(l[2*i-1],sact[1]);
     776           keep[size(keep)+1]=std(l[2*i-1],sa[2]);
     777           l[2*i-1]=std(sa[1]);
     778           l[2*i]=primaryTest(sa[1],sa[1][1]);
     779        }
     780      }
     781    }
     782  }
     783  if(size(keep)>0)
     784  {
     785    for(i=1;i<=size(keep);i++)
     786    {
     787       l[size(l)+1]=keep[i];
     788       l[size(l)+1]=primaryTest(keep[i],keep[i][1]);
     789    }
     790  }
     791  return(l);
     792}
    718793
    719794///////////////////////////////////////////////////////////////////////////////
     
    869944     primary=splitPrimary(primary,ser,@wr,act);
    870945  }
    871 
     946  primary=splitCharp(primary);
    872947//test whether all ideals in the decomposition are primary and
    873948//in general position
     
    9351010       psi=@P,jmap;
    9361011       psi1=@P,jmap2;
    937 
    9381012       @qh=phi(@qht);
    9391013       if(npars(@P)>0)
     
    9661040       attrib(@qh,"isSB",1);
    9671041       ser1=phi1(ser);
    968 
    9691042       @lh=zero_decomp (@qh,phi(ser1),@wr);
    9701043//       @lh=zero_decomp (@qh,psi(ser),@wr);
    971 
    9721044
    9731045       kill lres0;
     
    18491921    return(eq);
    18501922  }
    1851 
    18521923  option(returnSB); 
    1853   j=quotient(i,k);
     1924  j=quotient(j,k);
    18541925  option(noreturnSB);
    18551926
     
    21742245  {
    21752246    setring @P;
    2176     return(ideal(0));
     2247    primary=ideal(1),ideal(1);
     2248    return(primary);
    21772249  }
    21782250
     
    46204692 RETURN:  a list of primary ideals, the zero-dimensional decomposition of I
    46214693 NOTE:    the algorithm of C. Monico, works only good for small vdim(std(I))
    4622           (<=100) and without parameters
     4694          (<=100) and without parameters
     4695          in characteristic p>0 it may be wrong
    46234696 EXAMPLE: example zerodec; shows an example
    46244697"
Note: See TracChangeset for help on using the changeset viewer.