Changeset 08a6e5e in git


Ignore:
Timestamp:
Jul 30, 2014, 6:12:54 PM (10 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'fc22d02675885785e1818dd2f838cdc17aaa11ec')
Children:
19190c3574476190ce6cd8a024bc62329384dd92
Parents:
7285819d1585a41bced3847a9757208b8b1f00dcb169a9a50f58f2785486891cd30a33016c4e6e01
Message:
Merge pull request #624 from surface-smoothers/normal.lib.add.quotientCheck

add quotient ring check to normal.lib
Files:
2 added
34 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/normal.lib

    r728581 r08a6e5e  
    145145"
    146146{
     147  ASSUME(0, not isQuotientRing(basering) );
     148
    147149  intvec opt = option(get);     // Save current options
    148150
     
    602604"
    603605{
     606   ASSUME(0, not isQuotientRing(basering) );
     607
    604608//---------- initialisation ---------------------------------------------------
    605609   int isIso,isPr,isHy,isCo,isRe,isEq,oSAZ,ii,jj,q,y;
     
    961965EXAMPLE: example iMult; shows an example
    962966"
    963 {    int i,mul,mu;
     967{   
     968     ASSUME(0, not isQuotientRing(basering) );
     969
     970     int i,mul,mu;
    964971     int sp = size(prim);
    965972     int y = printlevel-voice+2;
     
    10121019"
    10131020{
     1021   ASSUME(0, not isQuotientRing(basering) );
     1022
    10141023   int ii,jj, caz;                   //caz: conzentrated at zero
    10151024   int dbp = printlevel-voice+2;
     
    11071116"
    11081117{
     1118   ASSUME(1, not isQuotientRing(basering) );
    11091119   //Note: this procedure calls itself as long as the test for
    11101120   //normality, i.e if R==Hom(J,J), is negative.
     
    20152025
    20162026{
     2027   ASSUME(1, not isQuotientRing(basering) );
     2028
    20172029   def newRing = basering;
    20182030   int ii,jj;
     
    21212133static proc deltaP(ideal I)
    21222134{
     2135   ASSUME(1, not isQuotientRing(basering) );
    21232136   def R=basering;
    21242137   int c,d,i;
     
    21702183"
    21712184{
     2185   ASSUME(0, not isQuotientRing(basering) );
     2186
    21722187   int w = printlevel-voice+2;  // w=printlevel (default: w=0)
    21732188
     
    26262641"
    26272642{
     2643   ASSUME(0, not isQuotientRing(basering) );
     2644
    26282645   intvec save_opt=option(get);
    26292646   option(redSB);
     
    32113228  intvec V;
    32123229  string mapstr;
    3213   for (i=1; i<=n; i++) { def R(i) = L[i]; }
     3230  for (i=1; i<=n; i++)
     3231  {
     3232    ASSUME(0, not isQuotientRing( L[i] ) );
     3233    def R(i) = L[i];
     3234  }
    32143235
    32153236// The quotient representing f is computed as in 'closureGenerators' with
     
    33883409  for (int i=1; i<=n; i++)
    33893410  {
    3390      def R(i)=L[i];          //give the rings from L a name
     3411     ASSUME(0, not isQuotientRing(L[i]) );
     3412     def R(i) = L[i];          //give the rings from L a name
    33913413  }
    33923414
     
    33983420  {
    33993421      setring R(n);
     3422
    34003423      if (j==1)
    34013424      {
     
    35723595"
    35733596{
     3597   ASSUME(0, not isQuotientRing(basering) );
     3598
    35743599   int i,j,y, sr, del, co;
    35753600   intvec deli;
     
    38053830static proc normalityTest(list mstdid)
    38063831{
     3832   ASSUME(1, not isQuotientRing(basering) );
     3833
    38073834   int y = printlevel-voice+2;
    38083835   intvec op = option(get);
     
    39033930static proc substpartSpecial(ideal endid, ideal endphi)
    39043931{
     3932   ASSUME(1, not isQuotientRing(basering) );
     3933
    39053934   //Note: newRing is of the form (R the original basering):
    39063935   //char(R),(T(1..N),X(1..nvars(R))),(dp(N),...);
     
    40614090static proc computeRing(ideal J, ideal I, list #)
    40624091{
     4092  ASSUME(1, not isQuotientRing(basering) );
     4093
    40634094  int i, ii,jj;
    40644095  intvec V;                          // to be used for variable weights
     
    43174348// denomOption = 0      -> Uses the smallest degree polynomial
    43184349// denomOption = i > 0  -> Uses a polynomial in the i-th variable
     4350
     4351  ASSUME(1, not isQuotientRing(basering) );
    43194352
    43204353  intvec save_opt=option(get);
     
    46164649// If withDelta = 1, computes the delta invariant.
    46174650{
     4651  ASSUME(1, not isQuotientRing(basering) );
    46184652  int step = 0;                       // Number of steps. (for debugging)
    46194653  int dbg = printlevel - voice + 2;   // dbg = printlevel (default: dbg = 0)
     
    48424876"
    48434877{
     4878  ASSUME(0, nvars(basering)==2 );
     4879  ASSUME(0, (vari==2) || (vari==1) );
     4880
    48444881  def R = basering;
    48454882  list RL = ringlist(R);
     
    48824919"
    48834920{
     4921
    48844922// Computes the polynomial of smallest degree of J.
    48854923//
     
    49284966static proc getGenerators(ideal J, ideal U, poly c)
    49294967{
     4968
    49304969// Computes the generators of J as an ideal in the original ring,
    49314970// where J is given by generators in the new ring.
     
    49655004static proc testIdeal(ideal I, ideal U, ideal origJ, poly c, poly D)
    49665005{
     5006
     5007  ASSUME(1, not isQuotientRing(basering) );
     5008
    49675009// Internal procedure, used in normalM.
    49685010// Computes the test ideal in the new ring.
     
    51385180"
    51395181{
     5182  ASSUME(0, not isQuotientRing(basering) );
    51405183// Let A = R / I. Given an A-module in the form 1/c1 * U1 (U1 ideal of A), it
    51415184// computes a new ideal U2 such that the the A-module is 1/c2 * U2.
     
    52395282static proc degSubring(poly p, intvec @v)
    52405283{
     5284  ASSUME(1, not isQuotientRing(basering) );
    52415285// Computes the degree of a polynomial taking only some variables as variables
    52425286// and the others as parameters.
     
    52585302static proc mapBackIdeal(ideal I, poly c, intvec @v)
    52595303{
     5304   ASSUME(1, not isQuotientRing(basering) );
     5305
    52605306// Modifies all polynomials in I so that a map x(i) -> y(i)/c can be
    52615307// carried out.
     
    52755321static proc mapBackPoly(poly p, poly c, intvec @v)
    52765322{
     5323  ASSUME(1, not isQuotientRing(basering) );
     5324
    52775325// Multiplies each monomial of p by a power of c so that a map x(i) -> y(i)/c
    52785326// can be carried out.
     
    56165664"
    56175665{
     5666   ASSUME(0, not isQuotientRing(basering) );
     5667
    56185668   int i,j;
    56195669   int withGens, withEqui, withPrim, isPrim, noFac;
     
    62866336proc timeNormal(ideal I, list #)
    62876337{
     6338  ASSUME(0, not isQuotientRing(basering) );
     6339
    62886340  def r = basering;
    62896341
     
    65226574"
    65236575{
     6576   ASSUME(0, not isQuotientRing(basering) );
    65246577//### Sollte erweitert werden auf den reduziblen Fall: einen neuen affinen
    65256578// Ring nor[1][1]+...+nor[1][r] (direkte Summe) erzeugen, map dorthin
  • Singular/LIB/primdec.lib

    rb169a9 r08a6e5e  
    2222    They work in any characteristic.@*
    2323    Baserings must have a global ordering and no quotient ideal.
     24    Exceptions: primdecGTZ, absPrimdecGTZ, minAssGTZ, primdecSY, minAssChar, radical accept non-global ordering.
    2425
    2526
     
    6465"
    6566{
     67  ASSUME(1, hasFieldCoefficient(basering) );
     68  ASSUME(1, not isQuotientRing(basering) ) ;
     69  ASSUME(1, hasGlobalOrdering(basering) ) ;
     70
    6671  int @k;
    6772  ideal inew=std(id);
     
    8994"
    9095{
     96  ASSUME(1, hasFieldCoefficient(basering) );
     97  ASSUME(1, not isQuotientRing(basering) ) ;
     98  ASSUME(1, hasGlobalOrdering(basering) ) ;
    9199  int @k,@i;
    92100  def @P= basering;
     
    154162proc minSat(ideal inew, ideal h)
    155163{
     164  ASSUME(0, hasFieldCoefficient(basering) );
     165  ASSUME(0, not isQuotientRing(basering) ) ;
     166  ASSUME(0, hasGlobalOrdering(basering) ) ;
    156167  int i,k;
    157168  poly f=1;
     
    200211static proc quotMin(list tsil)
    201212{
     213  ASSUME(1, hasFieldCoefficient(basering) );
     214  ASSUME(1, not isQuotientRing(basering) ) ;
     215  ASSUME(1, hasGlobalOrdering(basering) ) ;
    202216  int i,j,k,action;
    203217  ideal verg;
     
    260274static proc testFactor(list act,poly p)
    261275{
     276  ASSUME(1, hasFieldCoefficient(basering) );
     277  ASSUME(1, not isQuotientRing(basering) ) ;
     278  ASSUME(1, hasGlobalOrdering(basering) ) ;
    262279  poly keep=p;
    263280
     
    284301"
    285302{
     303  ASSUME(1, not isQuotientRing(basering) ) ;
     304  ASSUME(1, hasGlobalOrdering(basering) ) ;
    286305  ideal @i;
    287306  list @l;
     
    380399{
    381400  int j;
    382 
    383401  if(size(k1)==size(k2))
    384402  {
     
    402420proc primaryTest (ideal i, poly p)
    403421{
     422  ASSUME(0, hasFieldCoefficient(basering) );
     423  ASSUME(0, not isQuotientRing(basering) ) ;
     424  ASSUME(0, hasGlobalOrdering(basering) ) ;
    404425  int m=1;
    405426  int n=nvars(basering);
     
    495516proc gcdTest(ideal act)
    496517{
     518  ASSUME(0, not isQuotientRing(basering) ) ;
     519  ASSUME(0, hasGlobalOrdering(basering) ) ;
    497520  int i,j;
    498521  if(size(act)<=1)
     
    516539static proc splitPrimary(list l,ideal ser,int @wr,list sact)
    517540{
     541  ASSUME(1, hasFieldCoefficient(basering) );
     542  ASSUME(1, not isQuotientRing(basering) ) ;
     543  ASSUME(1, hasGlobalOrdering(basering) ) ;
    518544  int i,j,k,s,r,w;
    519545  list keepresult,act,keepprime;
     
    705731static proc splitCharp(list l)
    706732{
     733  ASSUME(1, hasFieldCoefficient(basering) );
     734  ASSUME(1, not isQuotientRing(basering) ) ;
     735  ASSUME(1, hasGlobalOrdering(basering) ) ;
    707736  if((char(basering)==0)||(npars(basering)>0))
    708737  {
     
    833862"
    834863{
     864  ASSUME(0, hasFieldCoefficient(basering) );
     865  ASSUME(0, not isQuotientRing(basering) ) ;
     866  ASSUME(0, hasGlobalOrdering(basering) ) ;
     867
    835868  def   @P = basering;
    836869  int uytrewq;
     
    12911324proc extF(list l,list #)
    12921325{
     1326  ASSUME(0, hasFieldCoefficient(basering) );
     1327  ASSUME(0, not isQuotientRing(basering) ) ;
     1328  ASSUME(0, hasGlobalOrdering(basering) ) ;
    12931329//zero_dimensional primary decomposition after finite field extension
    12941330  def R=basering;
     
    13821418//the radical of the intersection of the pe[l] is equal to the radical of i
    13831419
     1420  ASSUME(0, hasFieldCoefficient(basering) );
     1421  ASSUME(0, not isQuotientRing(basering) ) ;
     1422  ASSUME(0, hasGlobalOrdering(basering) ) ;
    13841423  def R=basering;
    13851424
    13861425  //i has to be a reduced groebner basis
     1426  ASSUME(1, dim(i)==0);
    13871427  ideal F=finduni(i);
    13881428
     
    14711511//i.e. var(i)----->var(i)^(p^v[i])
    14721512
     1513  ASSUME(0, hasFieldCoefficient(basering) );
     1514  ASSUME(0, not isQuotientRing(basering) ) ;
     1515  ASSUME(0, hasGlobalOrdering(basering) ) ;
     1516
    14731517  if(homog(I)==1){return(maxideal(1));}
    14741518
     
    15101554//and transforms it back to a decomposition of i
    15111555
     1556  ASSUME(0, hasFieldCoefficient(basering) );
     1557  ASSUME(0, not isQuotientRing(basering) ) ;
     1558  ASSUME(0, hasGlobalOrdering(basering) ) ;
    15121559  def R=basering;
    15131560  list pr=zeroSp(i);
     
    15541601"
    15551602{
     1603  ASSUME(1, hasFieldCoefficient(basering) );
     1604  ASSUME(1, not isQuotientRing(basering) ) ;
     1605  ASSUME(1, hasGlobalOrdering(basering) ) ;
    15561606  int k,j;
    15571607  poly m;
     
    16311681"
    16321682{
     1683 ASSUME(1, hasFieldCoefficient(basering) );
     1684 ASSUME(1, not isQuotientRing(basering) ) ;
     1685 ASSUME(1, hasGlobalOrdering(basering) ) ;
    16331686 int k,j;
    16341687 intvec m,n,v,w;
     
    17551808"
    17561809{
     1810  ASSUME(1, hasFieldCoefficient(basering) );
     1811  ASSUME(1, not isQuotientRing(basering) ) ;
     1812  ASSUME(1, hasGlobalOrdering(basering) ) ;
    17571813  int n,k,di;
    17581814  list resu,hilf;
     
    18211877"
    18221878{
     1879  ASSUME(1, hasFieldCoefficient(basering) );
     1880  ASSUME(1, not isQuotientRing(basering) ) ;
     1881  ASSUME(1, hasGlobalOrdering(basering) ) ;
    18231882  ideal @ih,@jh;
    18241883  int npar=npars(basering);
     
    18851944"
    18861945{
     1946   ASSUME(1, hasFieldCoefficient(basering) );
     1947   ASSUME(0, not isQuotientRing(basering) ) ;
     1948   ASSUME(0, hasGlobalOrdering(basering) ) ;
    18871949   def @P=basering;
    18881950   if(size(i)==0){return(list(ideal(0)));}
     
    20112073static proc primT(ideal i)
    20122074{
     2075   ASSUME(1, hasFieldCoefficient(basering) );
     2076   ASSUME(1, not isQuotientRing(basering) ) ;
     2077   ASSUME(1, hasGlobalOrdering(basering) ) ;
     2078
    20132079   //assumes that all generators of i are irreducible
    20142080   //i is standard basis
     
    20382104"
    20392105{
     2106  ASSUME(1, hasFieldCoefficient(basering) );
     2107  ASSUME(1, not isQuotientRing(basering) ) ;
     2108  ASSUME(1, hasGlobalOrdering(basering) ) ;
     2109
    20402110  if(size(i) == 0){return(list(ideal(0)));}
    20412111  string algorithm;    // Algorithm to be used
     
    23282398"
    23292399{
     2400  ASSUME(0, hasFieldCoefficient(basering) );
     2401  ASSUME(0, not isQuotientRing(basering) ) ;
    23302402  if(attrib(basering,"global")!=1)
    23312403  {
     
    23342406      );
    23352407  }
     2408
    23362409  intvec op ;
    23372410  def  P = basering;
     
    24342507"
    24352508{
     2509  ASSUME(0, hasFieldCoefficient(basering) );
     2510  ASSUME(0, not isQuotientRing(basering) ) ;
    24362511  if(attrib(basering,"global")!=1)
    24372512  {
     
    24402515      );
    24412516  }
     2517
    24422518  def  P = basering;
    24432519  ideal eq;
     
    25612637proc algeDeco(ideal i, int w)
    25622638{
     2639   ASSUME(0, hasFieldCoefficient(basering) );
     2640   ASSUME(0, not isQuotientRing(basering) ) ;
     2641   ASSUME(0, hasGlobalOrdering(basering) ) ;
     2642
    25632643//reduces primery decomposition over algebraic extensions to
    25642644//the other cases
     
    26812761static proc prepare_absprimdec(list primary)
    26822762{
     2763  ASSUME(1, not isQuotientRing(basering) ) ;
     2764  ASSUME(1, hasGlobalOrdering(basering) ) ;
     2765
    26832766  list resu,tempo;
    26842767  string absotto;
     
    27052788"
    27062789{
     2790  ASSUME(1, hasFieldCoefficient(basering) );
     2791  ASSUME(1, not isQuotientRing(basering) ) ;
     2792  ASSUME(1, hasGlobalOrdering(basering) ) ;
     2793
    27072794  intvec op,@vv;
    27082795  def  @P = basering;
     
    36883775//the p^e th power of the coefficients of f
    36893776{
     3777   ASSUME(1, hasFieldCoefficient(basering) );
     3778   ASSUME(1, not isQuotientRing(basering) ) ;
     3779   ASSUME(1, hasGlobalOrdering(basering) ) ;
     3780
    36903781   int i;
    36913782   poly g;
     
    37083799 EXAMPLE: example sep; shows an example
    37093800{
     3801   ASSUME(0, hasFieldCoefficient(basering) );
     3802   ASSUME(0, not isQuotientRing(basering) ) ;
     3803   ASSUME(0, hasGlobalOrdering(basering) ) ;
     3804
    37103805   def R=basering;
    37113806   int k;
     
    37583853 EXAMPLE: example zeroRad; shows an example
    37593854{
     3855   ASSUME(0, hasFieldCoefficient(basering) );
     3856   ASSUME(0, not isQuotientRing(basering) ) ;
     3857   ASSUME(0, hasGlobalOrdering(basering) ) ;
     3858
    37603859   if(homog(I)==1){return(maxideal(1));}
    37613860   //I needs to be a reduced standard basis
     
    37803879
    37813880   option(redSB);
     3881   ASSUME(1, dim(I)==0);
    37823882   ideal F=finduni(I);//F[i] generates I intersected with K[var(i)]
    37833883
     
    38533953"
    38543954{
     3955   ASSUME(0, hasFieldCoefficient(basering) );
     3956   ASSUME(0, not isQuotientRing(basering) ) ;
    38553957   if(attrib(basering,"global")!=1)
    38563958   {
     
    38593961      );
    38603962   }
     3963
    38613964   if((char(basering)<100)&&(char(basering)!=0))
    38623965   {
     
    39564059"
    39574060{
     4061
    39584062  M=prune(M);  //to obtain a small embedding
    39594063  ideal ann=quotient1(M,freemodule(nrows(M)));
     
    39774081static proc int_ass_primary_e(ideal i, int e)
    39784082{
     4083  ASSUME(1, hasFieldCoefficient(basering) );
     4084  ASSUME(1, not isQuotientRing(basering) ) ;
     4085  ASSUME(1, hasGlobalOrdering(basering) ) ;
     4086
    39794087  if(homog(i)!=1)
    39804088  {
     
    39974105static proc AnnExt_R(int n,list re)
    39984106{
     4107
    39994108  if(n<nvars(basering))
    40004109  {
     
    40194128static proc analyze(list pr)
    40204129{
     4130   ASSUME(1, hasFieldCoefficient(basering) );
     4131   ASSUME(1, not isQuotientRing(basering) ) ;
     4132   ASSUME(1, hasGlobalOrdering(basering) ) ;
     4133
    40214134   int ii,jj;
    40224135   for(ii=1;ii<=size(pr) div 2;ii++)
     
    40494162static proc simplifyIdeal(ideal i)
    40504163{
     4164  ASSUME(1, hasFieldCoefficient(basering) );
     4165  ASSUME(1, not isQuotientRing(basering) ) ;
     4166  ASSUME(1, hasGlobalOrdering(basering) ) ;
     4167
    40514168  def r=basering;
    40524169
     
    41534270static proc min_ass_prim_charsets0 (ideal PS)
    41544271{
     4272  ASSUME(1, hasFieldCoefficient(basering) );
     4273  ASSUME(1, not isQuotientRing(basering) ) ;
     4274  ASSUME(1, hasGlobalOrdering(basering) ) ;
     4275
    41554276  intvec op;
    41564277  matrix m=char_series(PS);  // We compute an irreducible
     
    42544375static proc min_ass_prim_charsets1 (ideal PS)
    42554376{
     4377  ASSUME(1, hasFieldCoefficient(basering) );
     4378  ASSUME(1, not isQuotientRing(basering) ) ;
     4379  ASSUME(1, hasGlobalOrdering(basering) ) ;
     4380
    42564381  intvec op;
    42574382  def oldring=basering;
     
    43934518static proc prim_dec(ideal I, int choose)
    43944519{
     4520  ASSUME(1, hasFieldCoefficient(basering) );
     4521  ASSUME(1, not isQuotientRing(basering) ) ;
     4522  ASSUME(1, hasGlobalOrdering(basering) ) ;
     4523
    43954524  if((choose<0) or (choose>3))
    43964525  {
     
    46164745static proc pseudo_prim_dec_charsets (ideal I, ideal SI, int choo)
    46174746{
     4747  ASSUME(1, hasFieldCoefficient(basering) );
     4748  ASSUME(1, not isQuotientRing(basering) ) ;
     4749  ASSUME(1, hasGlobalOrdering(basering) ) ;
     4750
    46184751  list L;          // The list of minimal associated primes,
    46194752                   // each one given by a standard basis
     
    46664799static proc pseudo_prim_dec_special_charsets (ideal SI,list V6, int choo)
    46674800{
     4801  ASSUME(1, hasFieldCoefficient(basering) );
     4802  ASSUME(1, not isQuotientRing(basering) ) ;
     4803  ASSUME(1, hasGlobalOrdering(basering) ) ;
     4804
    46684805  int i,j,l;
    46694806  list m;
     
    47644901static proc pseudo_prim_dec_i (ideal SI, list L)
    47654902{
     4903  ASSUME(1, hasFieldCoefficient(basering) );
     4904  ASSUME(1, not isQuotientRing(basering) ) ;
     4905  ASSUME(1, hasGlobalOrdering(basering) ) ;
     4906
    47664907  list Q;
    47674908  if (size(L)==1)               // one minimal associated prime only
     
    48334974static proc extraction (ideal SI, ideal SP)
    48344975{
     4976  ASSUME(1, hasFieldCoefficient(basering) );
     4977  ASSUME(1, not isQuotientRing(basering) ) ;
     4978  ASSUME(1, hasGlobalOrdering(basering) ) ;
     4979
    48354980  list indsets=indepSet(SP,0);
    48364981  poly f;
     
    49385083static proc minsat(ideal SI, poly p)
    49395084{
     5085  ASSUME(1, hasFieldCoefficient(basering) );
     5086  ASSUME(1, not isQuotientRing(basering) ) ;
     5087  ASSUME(1, hasGlobalOrdering(basering) ) ;
     5088
    49405089  ideal fac=factorize(p,1);       //the irreducible factors of p
    49415090  fac=sort(fac)[1];
     
    49845133static proc minsat_ppd(ideal SI, ideal fac)
    49855134{
     5135  ASSUME(1, hasFieldCoefficient(basering) );
     5136  ASSUME(1, not isQuotientRing(basering) ) ;
     5137  ASSUME(1, hasGlobalOrdering(basering) ) ;
     5138
    49865139  fac=sort(fac)[1];
    49875140  int i,k;
     
    50285181static proc minquot(list tsil)
    50295182{
     5183   ASSUME(1, hasFieldCoefficient(basering) );
     5184   ASSUME(1, not isQuotientRing(basering) ) ;
     5185   ASSUME(1, hasGlobalOrdering(basering) ) ;
     5186
    50305187   intvec op;
    50315188   int i,j,k,action;
     
    51655322"
    51665323{
     5324   ASSUME(0, hasFieldCoefficient(basering) );
     5325   ASSUME(0, not isQuotientRing(basering) ) ;
    51675326   if(size(#)>0)
    51685327   {
     
    52415400"
    52425401{
     5402  ASSUME(0, hasFieldCoefficient(basering) );
     5403  ASSUME(0, not isQuotientRing(basering) ) ;
    52435404  if (char(basering) != 0)
    52445405  {
     
    54095570"
    54105571{
     5572   ASSUME(0, hasFieldCoefficient(basering) );
     5573   ASSUME(0, not isQuotientRing(basering) ) ;
    54115574   if(size(#)>1)
    54125575   {
     
    54845647"
    54855648{
     5649   ASSUME(0, hasFieldCoefficient(basering) );
     5650   ASSUME(0, not isQuotientRing(basering) ) ;
    54865651   if(size(#)>0)
    54875652   {
     
    55885753"
    55895754{
     5755   ASSUME(0, hasFieldCoefficient(basering) );
     5756   ASSUME(0, not isQuotientRing(basering) ) ;
    55905757   if(size(#)>1)
    55915758   {
     
    56415808"
    56425809{
     5810  ASSUME(0, hasFieldCoefficient(basering) );
     5811  ASSUME(0, not isQuotientRing(basering) ) ;
    56435812  if(attrib(basering,"global")!=1)
    56445813  {
     
    56475816     );
    56485817  }
     5818
    56495819  return(radical(i, 1));
    56505820}
     
    56755845"
    56765846{
     5847  ASSUME(0, hasFieldCoefficient(basering) );
     5848  ASSUME(0, not isQuotientRing(basering) ) ;
    56775849  dbprint(printlevel - voice, "Radical, version 2006.05.08");
    56785850  if(attrib(basering,"global")!=1)
     
    58586030static proc radicalKL(ideal I, ideal ser, list #)
    58596031{
     6032  ASSUME(1, hasFieldCoefficient(basering) );
     6033  ASSUME(1, not isQuotientRing(basering) ) ;
     6034  ASSUME(1, hasGlobalOrdering(basering) ) ;
     6035
    58606036// ideal I     The ideal for which the radical is computed
    58616037// ideal ser   Used to reduce components already obtained
     
    58956071// obtained in intermediate steps.
    58966072{
     6073  ASSUME(1, hasFieldCoefficient(basering) );
     6074  ASSUME(1, not isQuotientRing(basering) ) ;
     6075  ASSUME(1, hasGlobalOrdering(basering) ) ;
     6076
    58976077  ideal rad = 1;
    58986078  ideal equiRad = 1;
     
    59776157//                    only equiradical is required.
    59786158//                    It is used to set the value of done.)
     6159  ASSUME(1, hasFieldCoefficient(basering) );
     6160  ASSUME(1, not isQuotientRing(basering) ) ;
     6161  ASSUME(1, hasGlobalOrdering(basering) ) ;
    59796162
    59806163  attrib(I, "isSB", 1);   // I needs to be a reduced standard basis
     
    62506433// Output: ideal. Intersection of some primes of I different from the ones in P.
    62516434{
     6435  ASSUME(1, hasFieldCoefficient(basering) );
     6436  ASSUME(1, not isQuotientRing(basering) ) ;
     6437  ASSUME(1, hasGlobalOrdering(basering) ) ;
     6438
    62526439  int k = 1;                     // Counter
    62536440  int good  = 0;                 // Checks if an element of P is in rad(I)
     
    63176504"
    63186505{
     6506  ASSUME(0, hasFieldCoefficient(basering) );
     6507  ASSUME(0, not isQuotientRing(basering) ) ;
     6508  ASSUME(0, hasGlobalOrdering(basering) ) ;
     6509
    63196510  int n, k, di;
    63206511  list resu, hilf;
     
    64086599"
    64096600{
     6601  ASSUME(1, hasFieldCoefficient(basering) );
     6602  ASSUME(1, not isQuotientRing(basering) ) ;
     6603  ASSUME(1, hasGlobalOrdering(basering) ) ;
     6604
    64106605  ideal @ih,@jh;
    64116606  int npar=npars(basering);
     
    64546649"
    64556650{
     6651  ASSUME(0, hasFieldCoefficient(basering) );
     6652  ASSUME(0, not isQuotientRing(basering) ) ;
    64566653  if(attrib(basering,"global")!=1)
    64576654  {
     
    64606657      );
    64616658  }
     6659
    64626660  ideal j=std(i);
    64636661  int cod=nvars(basering)-dim(j);
     
    65026700"
    65036701{
     6702  ASSUME(0, hasFieldCoefficient(basering) );
     6703  ASSUME(0, not isQuotientRing(basering) ) ;
    65046704  if(attrib(basering,"global")!=1)
    65056705  {
     
    65086708      );
    65096709  }
     6710
    65106711  ideal j=groebner(i);
    65116712  int cod=nvars(basering)-dim(j);
     
    65386739"
    65396740{
     6741   ASSUME(0, hasFieldCoefficient(basering) );
     6742   ASSUME(0, not isQuotientRing(basering) ) ;
     6743   ASSUME(0, hasGlobalOrdering(basering) ) ;
     6744
    65406745   int i;
    65416746   pr=reconvList(pr);
     
    65706775"
    65716776{
     6777  ASSUME(0, hasFieldCoefficient(basering) );
     6778  ASSUME(0, not isQuotientRing(basering) ) ;
    65726779  if(attrib(basering,"global")!=1)
    65736780  {
     
    65766783    );
    65776784  }
     6785
    65786786  def R=basering;
    65796787  poly q;
     
    66876895"
    66886896{
     6897  ASSUME(1, hasFieldCoefficient(basering) );
     6898  ASSUME(1, not isQuotientRing(basering) ) ;
     6899  ASSUME(1, hasGlobalOrdering(basering) ) ;
     6900
    66896901  intvec op,@vv;
    66906902  def  @P = basering;
     
    75897801static proc newReduction(ideal @j, ideal ser, intvec @hilb, intvec @w, int jdim, int abspri, int @wr, list data)
    75907802{
     7803   ASSUME(1, hasFieldCoefficient(basering) );
     7804   ASSUME(1, not isQuotientRing(basering) ) ;
     7805   ASSUME(1, hasGlobalOrdering(basering) ) ;
     7806
     7807
    75917808   string @va;
    75927809   string quotring;
     
    78868103// associated primes and the primary components corresponding to these primes.
    78878104{
     8105  ASSUME(1, hasFieldCoefficient(basering) );
     8106  ASSUME(1, not isQuotientRing(basering) ) ;
     8107  ASSUME(1, hasGlobalOrdering(basering) ) ;
     8108
    78888109  ideal P = 1;
    78898110  list pd = list();
     
    79268147static proc minAssSLIteration(ideal I, ideal P);
    79278148{
     8149  ASSUME(1, hasFieldCoefficient(basering) );
     8150  ASSUME(1, not isQuotientRing(basering) ) ;
     8151  ASSUME(1, hasGlobalOrdering(basering) ) ;
     8152
    79288153  int k = 1;
    79298154  int good  = 0;
     
    79788203"
    79798204{
     8205  ASSUME(0, hasFieldCoefficient(basering) );
     8206  ASSUME(0, not isQuotientRing(basering) ) ;
     8207  ASSUME(0, hasGlobalOrdering(basering) ) ;
     8208
    79808209  int n, k, di;
    79818210  list resu, hilf;
     
    80788307"
    80798308{
     8309  ASSUME(0, hasFieldCoefficient(basering) );
     8310  ASSUME(0, not isQuotientRing(basering) ) ;
     8311  ASSUME(0, hasGlobalOrdering(basering) ) ;
     8312
    80808313  def   @P = basering;
    80818314  int uytrewq;
  • Singular/LIB/primdecint.lib

    rb169a9 r08a6e5e  
    1616  The first procedure 'primdecZ' can be used in parallel.
    1717
    18   Reference: Pfister,   Sadiq, Steidel , \"An Algorithm for primary decomposition in polynomial rings over the integers\" , arXiv:1008.2074 
     18  Reference: Pfister,   Sadiq, Steidel , \"An Algorithm for primary decomposition in polynomial rings over the integers\" , arXiv:1008.2074
    1919
    2020PROCEDURES:
     
    291291         //while(size(reduce(intersect(W,TQ),J))!=0)
    292292         {
    293             //W=stdZ(addIdealZ(I,K^m));
    294             W=stdZ(addIdealZ(I,specialPowerZ(K,m)));
     293            W=stdZ(I+specialPowerZ(K,m));
    295294            m++;
    296295         }
     
    369368         pr[size(pr)+1]=M[i];
    370369      }
    371      
    372370   }
    373371   return(pr);
     
    924922   ideal I = imap(S,I);
    925923   ideal J = imap(S,J);
    926    ideal K = addIdealZ( var(1)*I,(1-var(1))*J);
     924   ideal K =  var(1)*I+(1-var(1))*J;
    927925   K = stdZ(K);
    928926   int i;
     
    970968   {
    971969      //=== p is of multiplicity > 1 in q
    972       list A = minAssGTZ(J);   
     970      list A = minAssGTZ(J);
    973971   }
    974972   else
     
    976974      list A = primdecGTZ(J);
    977975   }
    978    sizeA = size(A);     
     976   sizeA = size(A);
    979977   setring R;
    980978   list A;
     
    991989   number h=1;
    992990   int i;
     991   I = simplify(I,2); // del zero generators
    993992   for(i=1;i<=size(I);i++)
    994993   {
     
    10551054//=== computes the ideal generated by the m-th power of the generators of I
    10561055   int i;
    1057    for(i=1;i<=size(I);i++)
     1056   for(i=1;i<=ncols(I);i++)  // use ncols to allow zero generators in I
    10581057   {
    10591058      I[i]=I[i]^m;
     
    10971096   //=== first compute a pseudo primary ideal I, radical of I is P
    10981097   //=== method of Eisenbud
    1099    //ideal I=addIdealZ(J,specialPowerZ(P,20));
     1098   //ideal I=J+specialPowerZ(P,20);
    11001099
    11011100   //=== method of Shimoyama-Yokoyama
     
    11241123            C[1]= ideal(0); //add dummy entry to tie C to current ring
    11251124            int i;
     1125            ASSUME(1, size(I)==ncols(I) || size(I)==0);
    11261126            for(i=1;i<=size(I);i++)
    11271127            {
     
    11391139            C[1]= ideal(0); //add dummy entry to tie C to current ring
    11401140            int i;
     1141            ASSUME(1, size(I)==ncols(I) || size(I)==0);
    11411142            for(i=1;i<=size(I);i++)
    11421143            {
     
    11551156         C[1]= ideal(0); //add dummy entry to tie C to current ring
    11561157         int i;
     1158         ASSUME(1, size(I)==ncols(I) || size(I)==0);
    11571159         for(i=1;i<=size(I);i++)
    11581160         {
     
    11741176      setring R;
    11751177      ideal fac=imap(Shelp,fac);
     1178      ASSUME(1, size(fac)==ncols(fac) || size(fac)==0);
    11761179      for(i=1;i<=size(fac);i++)
    11771180      {
     
    11931196   number n;
    11941197   poly p;
    1195    for(i=2;i<=size(I);i++)
     1198   for(i=2;i<=ncols(I);i++)
    11961199   {
    11971200      j=1;
     
    12381241   ideal K=imap(R,K);
    12391242   poly f=imap(R,f);
    1240    for(i=1;i<=size(K);i++)
     1243   ASSUME(1, ncols(K)==size(K) || size(K)==0 ); // postcondition intersectZ
     1244   for(i=1;i<=ncols(K);i++)
    12411245   {
    12421246      K[i]=K[i]/f;
     
    12541258//=== replaced by quotient later
    12551259   if ( size(J)==0 ) { return( ideal(1) ); }
     1260   J = simplify(J, 2); // del zero generators
    12561261   int i;
    12571262   ideal K=quotientOneZ(I,J[1]);
    1258    for(i=2;i<=size(J);i++)
     1263   // we had a bug here: either it is mandatory to kick out zero generators  of J(done) or to use ncols(J)
     1264   for(i=2;i<=ncols(J);i++)
    12591265   {
    12601266      K=intersectZ(K,quotientOneZ(I,J[i]));
     
    12711277//=== replaced by reduce later
    12721278   if(f==0){return(f);}
     1279   if (not attrib(I,"isSB") ) { print ("// ** I is no standard basis"); }
    12731280   def R=basering;
    12741281   execute("ring Rhelp=0,("+varstr(R)+"),dp;");
     
    12781285   poly m;
    12791286   number n;
     1287   I = simplify(I, 2); // del zero gens (otherwise the following loop may fail with an error (div by 0))
    12801288   while(!i)
    12811289   {
     
    12921300            {
    12931301               f=f-leadcoef(f)/leadcoef(I[j])*m*I[j];
    1294                if(f==0){setring R;return(0);}
     1302               if(f==0){setring R;return(poly(0));}
    12951303               i=0;
    12961304               break;
     
    13171325//=== otherwhise reduce gives wrong results! should be replaced later by std
    13181326   I=simplify(I,2);
    1319    I=normalizeZ(I);
     1327   I=normalizeZ(I);  // why is this done before std() call?
     1328                     // normalizeZ works only if I[1] == ( std(I) )[1]
    13201329   ideal J=std(I);
    13211330   int i;
     
    13271336   attrib(J,"isSB",1);
    13281337   return(J);
    1329 }
    1330 
    1331 ////////////////////////////////////////////////////////////////////////////////
    1332 
    1333 static proc addIdealZ(ideal I,ideal J)
    1334 {
    1335 //=== this is needed because I+J does not work, should be replaced by + later
    1336    int i;
    1337    for(i=1;i<=size(J);i++)
    1338    {
    1339       I[size(I)+1]=J[i];
    1340    }
    1341    return(I);
    13421338}
    13431339
     
    14861482      h=1;
    14871483      ideal fac=imap(Shelp,fac);
     1484      ASSUME(1, size(fac)==ncols(fac) || size(fac)==0);
    14881485      for(i=1;i<=size(fac);i++)
    14891486      {
  • Singular/iparith.cc

    rb169a9 r08a6e5e  
    53295329{
    53305330  res->data = (char *)id_Head((ideal)v->Data(),currRing);
     5331  setFlag(res,FLAG_STD);
    53315332  return FALSE;
    53325333}
  • Singular/ipassign.cc

    rb169a9 r08a6e5e  
    17321732      /* a = ... */
    17331733      if ((lt!=MATRIX_CMD)
     1734      &&(lt!=BIGINTMAT_CMD)
     1735      &&(lt!=CMATRIX_CMD)
    17341736      &&(lt!=INTMAT_CMD)
    17351737      &&((lt==rt)||(lt!=LIST_CMD)))
  • Singular/singular.dox

    rb169a9 r08a6e5e  
    11/*!
    2 
    32 \page singular_page Singular Interpreter and related functionality
    43
    5  Iterpreter and wrappers over kernel (\ref kernel_page)
     4
     5 \brief Main Singular application and its iterpreter (also available as a library)
     6
     7 Some functions are just wrappers over \ref kernel_page.
    68 
    79 Singular can be easily extended by means of dynamic modules:
    810 - \subpage dynmodules_page
    911
    10  TODO: The sub-package structure is not yet defined for Singular package...
    11 
    1212 How to add kernel functions to the interpreter:
    1313 \verbinclude Singular/HOWTO.addKernelCmds
    14  
     14
     15 \verbinclude Singular/README
     16
     17 TODO: The sub-package structure is not yet defined for Singular package...
    1518*/
  • Tst/Long/ok_l.lst

    rb169a9 r08a6e5e  
    4646mora_4
    4747mora_8
    48 ; mpsr_l
    4948mre
    5049mre_nonhom
    5150ncfactor_lee_l
    52 ncfactor_counterExOld_l
     51;;ncfactor_counterExOld_l ;; too long
    5352paraplan
    5453pAdd0L_l
  • Tst/Manual/multiDegBasis.res.gz.uu

    rb169a9 r08a6e5e  
    11begin 640 multiDegBasis.res.gz
    2 M'XL("'=7O5,``VUU;'1I1&5G0F%S:7,N<F5S`*U676^;,!1]SZ^XBO9`F)/@
    3 M:X<FJY))5:6I4C.M'WO9U$1TH`B-T@W<%/CUNP2P21JJ5AH08>SCX^MS[H7<
    4 MW)Y??`4`OH#+BS/HJU2-HO"^?PK46H=QJ*S!*8SMZG$3/R:!U9<JQ#YUV^->
    5 MB8#%`AZ>(A6>!YLS+PW341P\CU+EJ=Y-38\U_0ZV23P_C#?5.AHB%I!0+US#
    6 M'!P&5L8@'S#P_QB(7$`8JP=/P8;_Q#NZYIPY='*#F6A,5$+XW1R98X9=0X&:
    7 M8G<:S,D.LPU^P9;/97OVU(P@C4@S,C.\@A:M>?4X=Q:0!HK4"98M":R-&!@,
    8 M-^QB+C^U9I-\6W':D[I#'"AN;4NB=;G=3-*=EL_+NZ#G7%!#4@-SI-:$6B+7
    9 M3+(C,,ZB5FB3%^OQ9CVN06X'%;:(3EX084.4UX%G3>`4Y6'@M)>&::H57U9&
    10 M4MYP!L/ZUU)OIG7U"3-$!J@'L<.8I8D9^6',O@X9-8@L\I1*PGMKS:#_(T@>
    11 MOWF)ZFM7M.)(WOT.HPBN&2PIO\TZ\D@%,"CVBP`G^_L6S;YI6W0K#[YKF;1%
    12 MD_2754U4"[14.-F32+;EPVF'0@PN6R+-.D7*"E%G9.'6SKJ-LZ)H"(3SNH`Y
    13 M%DU^Y$5-(XW^@G>H*O`MJ@HRY>\.=D6P5/E6Z`=>9$&^<C]"9N<K81?#;(5V
    14 ML4(8F'T+>=P.NK!RH_+%Z"G(P/$8FEFWQQT1[J@K+\O99]^_?*9#H_?]<QFX
    15 MAFEZS!GBL&U80YA"_$@;]F+?2WRX+P&O#U:>8H&-&RT/9Z][Z#1`Z1BWK@X,
    16 MD_PMADGL,"PCAP0,(0=JD!#DG5T`=60K23;NF2?%NVM)&K\[G).3[EJ2':](
    17 M$N#VJ+'RQ?OR?YC7%&15AV*O#N7T/7783"+CRS\(Y3?_*;7HV_"A]P\"4O,S
    18 $6@@`````
     2M'XL("/KHV%,``VUU;'1I1&5G0F%S:7,N<F5S`)5576_:,!1]YU=<H3T$9B"^
     3M-@&&8%)5::H$T]JRETT%I4N$HJ5T(RY+\NMW0Q([`5*U^5`<^_CX^IQ[D_O5
     4M]<U7`.!S6-Q<05M%JA\&C^TI4&L3[`)E=:8PZ.:OV]WSWK?:4@78IN[NH)4A
     5M8#Z'IY=0!=?^]LJ-@JB_\__U(^6JUGU!CP7]$;;=NUZPV^;K:(B8PYYZX0YF
     6M8#.P8@9)AX'WQT#D'(*=>G(5;/E/?*!KQIE-)S>8H<:$&80_S)#99M@Q%*@I
     7MCJ?!C(Z8@_\+#GPFJ[/'9@1I1)J1B>$5M&C!J\>Y/8?(5Z2.OZQ(8&U%QV"X
     8M81<S^:DRF^0[B&E+Z@YQHKAUR(@VV79C24]:/LF>@MX300U)#4R06D-JB40S
     9MR8;`.`LKH0W/UN/E>ER#G`8JK!"-SHBP)$J*P.,R<(KR-'#:2\DTUHHO<R,I
     10M;SB#7G%7U)MH73W"])`!ZD%L,&9I8D9^&K.G0T8-(HM<I?;!H[5AT/[A[Y^_
     11MN7O5UJYHQ9&\^QV$(=PQ6%)^FW7DA0I@D-:+`(?U?8MRW[0M>F0'/[9,VJ))
     12M^D5>$_D"%15&-8ED53X<-RC$8%$1:=(H4IR*(B-3IW#6*9T5:4D@[-<%3#`M
     13M\R-)"QII]!>\056!;U%5D"E_C[!;@D7*LP+/=T,+DK7S$>)NLA;=M!>OL9NN
     14M$3IFWT)>MH,NS-W(?3%Z"C)P,(!RUNJR(\+I-^5E-OOJ^Y?/=&ATW3^'@6.8
     15MQLW.8(JEIA4G)J\[89=`:1O-;T]DE_PMLDMLD#TFG07T(`%JT';(@6X*U!&O
     16M)9E1LT"*=U>$-*XUZ"^'S14A&SYT),#JHCWR[*MW7AQY38A:3<CQ>VJBG$3V
     17693_K[/_[$EGTG?[0^@^[%<;(Y@<`````
    1918`
    2019end
  • Tst/Old/err3.res.gz.uu

    rb169a9 r08a6e5e  
    11begin 640 err3.res.gz
    2 M'XL(")1#P4T``V5R<C,N<F5S`+U86V_;R!5^KG_%8%%@*5-4.#=>;,AM%]Z'
    3 M#8H\-$6Q0.#=4"(ETZ%(@:02THO^]WYG*`[E1&[7+EH!DH9GSN4[ESDSP_=_
    4 MO_WI'6.,W[`W;[R7?B[>'\7%`N))R;*ZKFI6;9B_B!9Z=<72JDS:_,_W69TL
    5 M#F6^SA:;VDK)!:OS<LMJMF3^G#G=O)_-6=I<6PYUP_95T;,-.#KE]MKM1"^G
    6 M>7W#\C1+"I:#X2%95RMG,YNF@W'Z`=--FSKYR61XPQZN+QX^\+NEZ*3;]1(/
    7 MXFXI84*XNE=XE'?+S@S4W;(/K&A$T;*2G$3'J7AAII[H.<YQ?YB#4NYW)W0^
    8 MT&&#3T8X8FK'%*DL/:PS9XK"G#W`&_XFZ+7E4Z](HQ76YY(87#&G3HK-C*7Y
    9 M9[;JV6-65\R[8<FJJELK&P!@4J;5SM%S#5@3I/`UE66EH^<P;;,Z_S1#5)I#
    10 MT;(O2<,V2=%D5U82B=@L?9MNX=_@F0C<DEY5]%;Z;,V'@':_K9.FF;%U56<L
    11 M/>SV5@1IW"5MG7<L0850D?"YF,NYFF`B@T>6%>KK@W\W3:'85]>P"<6'(F5E
    12 MU2(GS;Y(>M0VHK_-!M%UUEQ8(2R!9&G$)BF@R[?EMT*C#%)6Y$W[.:F=I"B0
    13 M3=BLV9D/X#%V26N86,QG]2S?T2W..N9;]N1E[`_/L@_KW'G_`SJ(8MNL1,=I
    14 MJ]II9E8X__?"<R;.RVV>E:/>1&QMT_[:M$E[:'[=Y$5VPH$84X=#C<A%F7U9
    15 M$)>-<_1?K%81GRV_%.67E&6&\JOJ-#/&$Y:7J,4Z6UO3TC^VWOMFZ<^'QNNL
    16 MYPE6KYS-T_W4)B46R7US/01C?9_4R;J%VJ;-U^QJS$QYV*TR`P(UTX`N;/!0
    17 M$46U_H1_#KK%M#[#($X9DA.&Z7/%RF27-33L6/\,RY<LW]ZW8-),GC$C3\VD
    18 M^]]C9XR%&+>C92?<DWU(2C27ZPM#M#2L9)@Q^Q'W+16+.,VV7U.#EU>"E0V?
    19 M*X3M;CMC#^@_K*W8H4RS35YF*4O2%%W3KG89C;NPK83$05,"0'C_)]3.YZ3(
    20 M4S2=W2JGS;PJR<@8P6;@6J/HT%EVR:?,:!NH1TCK]0'5ET(5Q-@JVU!C',P7
    21 M@`0(5^SC>0P?CXJZ/:H7*HC+PQ-Y`"0+UO;[C'U_GQ5[,W?]O?4KGI(U[TT!
    22 M7U[2+DIA(%L;/`_:C_V0',AW^V+Q,O`QP)\8^AHQ33V'F.8FQ,HW563$/VX^
    23 MLKR9LO8B2,H'I`V0C(I?OM%9T;.[7+1F3GM?[1*T&:=(FI9E95OW;)?#QW([
    24 ML]+VA'<F_C7%?V14]B#'$46?$C9.36<\,1'I9,==HOQ*Q[`.?]A-[4I5V,(^
    25 MY45!AD?2R[NM%3W;:RD(VSH[9,638XAO0>BQR=:^+>MT;P%I;@N4^W[G<I]/
    26 M7FNTFN:P:EIG,T<\3+?@DV;Y:E^T.NM+>M:7MFIQ`.C9E[K"DAXUF',B0]$A
    27 MWQW*<&H%(T<P.BYQ[I;"]^7<:>?#+E/L'8XX--,6H\/34WSGM=)K]9SU7LNG
    28 M\YN.+%/S[6%>8['GV*7RAJJA%;VK6H%#LD=_RFL[*,-)O7<#$%V0B%,09R<-
    29 MCQPDM->"LQ>>;DE:=L2,1YS794\R.+M#F2NU#DAAR+G"LZ!!!`)$="!!P:U`
    30 M"8$Y[7+BA`ZI58CGWL.,%D0S3#349EH'_?`K!F%"`+U^+V$_""(X0H]TK1CH
    31 MBE0)OU/].&$0^5V`/Q&`+ES"@PEUG.A)511CZL@:N0,A,!#`&QD_<1>A,$1(
    32 M'47";0$"#[S%_8,\)0SX4Q0VLHOP!B[%A&R"%/0NL7?FSX20@J.Z08U/89$F
    33 M*ER8D`0F'+(+72E,.$`)#1)-$==NS'4XQ%$A-_`G4I$8PAG'_A!-V`U='2M_
    34 MB"B/#!V`8P&9$%&*`S,G72UH%`)L3-C@80QH82R%N;5);H(:!=PX)^$<UN@0
    35 M42W\(:"Q""F@<:`IG%X<(I@J]"G*PA5^1(E!BGBL$51/DUQ`RI3?<=]5B`/H
    36 M@"D#(AAG`_0PZ<8RA'Y3`'`JPGV/DR[AQ3H8;'.M1-@';JR4;XQ'\!HS&MI"
    37 MK7N$<8#!,3'`4$K'X`BH9D+11ZY!)6/D@5!Q&9,F,B6D!F,((V$<];%GT`:2
    38 M^*DR0R,!?$,=!4AH0,LJ\I`C<@06--(:$:Q(:#!K5\0!A33T(DYNQ2@%#M<Y
    39 MHD`B5*<F3.2:5%2.@:O\D"!%G@PI9)0CY4>=61`!`@UV3?K(T]`-12R("6O7
    40 M#SEQH49H,B*(6@4TB<5.2C&I:9)(IA6$*#*J'RP5%VW`=($.=4&KWT-W&/M,
    41 MX+^Z\0;\;.-=;*;.VV3;'3;2X8RU2="%K;`8.ZJBCLJ/[73^^&1'">1Q1VF3
    42 MP]+A;\3LTN%N,+7)8'R?DA3[^X18%%C$)?A=?L)FM]Q]5J[S`B8=L/R"VIE=
    43 MTOIX%!X]JTO'K(A>/0KW$7F=N406(%.1@D^YCVBVL[G5C)WA#\<SMM<:1K"Y
    44 MI`]@I_T]".TU>+]/:KHL\SO`X/,!^L1HMP5Z1;3+2US=2.)RD'8&!V;S4^^P
    45 M5^RJ](![VH,1,F-G?'LT,8:^9?P$1MIR'D[>+H78O]-\YWPBFGV9$V+CWB%S
    46 M`UE8LC3G_CK+A@ELH)#-2CH2,F=?5P^+&:/4FAG#.)%!GQ2I\60SO30(]:NK
    47 M,@R^K<IX(<;;0U[N#^WPSH#.!57Q&?6966%</?[ZTP_LNR'8BR)??7=M"#@;
    48 M5D6U'2B6';FRXWAZNQ7AG)27,+/4UT]N898!D2:&W7*Z<D5BH+U;EI=.B>HU
    49 M[Z?$J.#-F[^4CPM$LF;_2.H\6159:461"[.8_K8<SB:=PQ>+=T^64C2]A_EY
    50 MV?0[C)UR=CVH3@X-FURV(G;5O%T.A?CS?'>ZK"(<6M^:,GI[0@QMD=TNWUYN
    51 MD/AC0;[#:JJ3LME7S5B=;U&=S!1(S6[SS2:KD8X\*8R$U8@PWZ)D)N';$W,H
    52 M_G)=%0T165E77\SH@NL+H>Q]-$;E5WMJ0U2#[>"WG>13&F/TI2/Z'Y<_=BTN
    53 M;;=S\NZ#O))WRN%JUCA<SIJF.8XU_03T$X/J"(&AD/1#,R(PQ'#6Z&<*-_"\
    54 MT/O`]96ZB[P+H$L/ZY:MZYS>2E3EE4\O*7`QFBAA>/$;?/LG(*E32`XGVYS3
    55 MCX\?X'$B?&'<(8"$AW@-./+@=UGS+\A'LD)&R`:9(`LP`/U0#^U0#MU0[=#\
    56 M#,WM@KZ[B]_X@-,$ZO\`=K2G'$$J16129<:2['P](MV.)&N2S$K"(./CZ.DP
    57 MM$R&W:"31QV.Y$_TDEU->?]/6=<OR+JIP?]]")^T<C10+(-?Q!7V-V[?PL;R
    58 <9,FH8]-LFW;HC]/;0Y3"]1\O_@7>U0PJE!D`````
     2M'XL("*3UV%,``V5R<C,N<F5S`+U86V_;R!5^KG[%8%%@*5-2.#=>;,AM%]Z'
     3M#8H\-$6Q0.!-*)&2:5.D0%()Z47_>[\S%(=RHA2V>Q$@B3QS+M^YS)G+^[_?
     4M_/*.,<:OV9LW\Y=^)N^/XF(!\;A@:565%2LWS%N$"[VZ9$E9Q$WVY[NTBA>'
     5M(ENGBTUEI>2"55FQ915;,F_&G';636<LJ:\LA[IF^S+OV`8<K7([[;:BD^.X
     6MOF99DL8YR\!P'Z_+E;.9CL/^,'R/X;I)G.QD,+AF]U>3^P_\=BE:Z;:=Q(NX
     7M74J8$*[N%%[E[;(U#^IVV?E6-*1H64E.HL-0M#!#3_0<Q[C7CT$I]]H3.N_I
     8ML,%'(QPQM<\4J30YK%-GC,*,W<,;_L;OM.53KTBC%=;GDNA?,J>*\\V4)=EG
     9MMNK88UJ5;'[-XE59-5;6!\"X2,J=HV<:L$9(P6LJRTJ'W\.T3:OL88JHU(>\
     10M85_BFFWBO$XOK202L5EZ-MW"N\8[$;@EO:KHK?39F@\`[6Y;Q74]9>NR2EER
     11MV.VM"-*XBYLJ:UF,"J$BX3,QDS,UPD0&CRPKU-<'[W8<0K&OKF`3B@]YPHJR
     12M04[J?1YWJ&U$?YOVHNNTGE@A3(%X:<1&*:#+ML6W0H,,4I9G=?,YKIPXSY%-
     13MV*S8O_T`*&,7-)N)V7Q6SY`XNLI9RSPK&+]6\/X9@GT_<-[_A$ZCV#8MT)F:
     14MLG+JJ563/5?-C(GS&C;/T$!]C02:NOE8-W%SJ#]NLCP]RXM,49]$I<E%D7Y9
     15M$+_-5O@?S'D1G2WB!$4<%T6*(BZK)#7&8Y85J.@J75O3TCLV\+MZZ<WZ]NVL
     16M9S%Z@)S.DOW8;"6FVEU]U0=H?1=7\;J!VKK)UNQRR&!QV*U2`P*55X,N;$!1
     17M37FY?L`_!]UB6I]A$*<,\0G#^+ED1;Q+:WIL6?<=EB]IMKUKP*29/&-&GII)
     18M]L^Q,\1"#(O:LA7NR6HF)5K4U<00+0W]`&;,JL8]2T4K2-+MUU3_Y95@98/O
     19M%<)VMYVR>W0QUI3L4"3I)BO2A,5)@MYK>X8,A[7<5D+LH+4!(+S_$VKG<YQG
     20M"5K7;I71EJ`LR,@0P;KG6J/HT)]V\4-JM/74(Z3U^H#J2Z`*8FR5;JB]]N9S
     21M0`*$2_;I/(9/1T7M'M4+%<0UQQMY`"0+UG3[E/UXE^9[,W;UH_4K&I,UZTP!
     22M7US06DQA(%L;O/?:CUV5',AV^WSQ,O`1P)\8^AHQ#7T/,8V-B)5GJLB(?]I\
     23M8ED]9NU%D)0'2!L@&12_?+FTHF?7RG#-G.:NW,5H,TX>UPU+BZ;JV"Z#C\5V
     24M:J7M/O%,_"N*_\"H[':0(XH>)6P8&G>*8B32_I"[1/E(F[D6?UB3[4Q56`@?
     25MLCPGPP/IY=W6BI[MM12$;94>TOS)9L:S(/309"O/EG6RMX`TMP7*/:]UN<='
     26MKS5:37U8U8VSF2$>IEOP4;-\M2]:G?4E.>M+4S;81G3L2U5B2@\:S&Z3H>B0
     27M[Q9E.+:"@<,?')?8O4OA>7+F-+-^E<GW#D<<ZG&)T<'I6:"=-W+>Z!GKY@T?
     28M=X$ZM$SUMT<"C<F>897*:JJ&1G2N:@2VVG/Z4_.FA3+L]SO7!]$%B3@%<;;2
     29M\,A>0L\;<'9BKAN2EBTQXQ6[?MF1#$X`4.9*K7U2&'"N\"[H(00!(MJ7H.!L
     30MH83`F'8Y<4*'U"K`>S?'B!9$,TSTJ,VP]KO^5_3"A`!ZO4["ON^'<(1>Z7#2
     31MTQ6I$EZKNF'`(/):'W_"!UVXA`<#ZCC0D:HPPM"1-71[@F\@@#<T?N)$0V$(
     32MD3J*A-L`!%YX@U,,>4H8\*<H;&07X?5=B@G9!,GO7&)OS9\)(05'M;T:C\(B
     33M352X,"'Q33AD&[A2F'"`$A@DFB*NW8CKH(^C0F[@3ZA"T8<SBKP^FK`;N#I2
     34M7A]1'AHZ`$<",@&B%/EF3+I:T%,`L!%A@X<1H`61%.;L)[D):NASXYR$<YBC
     35M?42U\/J`1B*@@$:^IG#.HP#!5(%'41:N\$)*#%+$(XV@SC7)^:1,>2WW7(4X
     36M@`Z8TB>"<=9'#Y-N)`/H-P4`IT*<&CGI$O-(^[UMKI4(.M^-E/*,\1!>8T1#
     37M6Z!UAS#V,#@&>AA*Z0@</M5,(+K0-:ADA#P0*BXCTD2FA-1@#&`DB,(NFANT
     38MOB1^JLS`2`!?7T<^$NK3M`KGR!$Y`@L::0T)5B@TF+4K(I]"&LQ#3FY%*`4.
     39MUSFB0")4IR9,Y)I45(Z^J[R`((5S&5#(*$?*"ULS(7P$&NR:])&G@1N(2!`3
     40MYJX7<.)"C=!@2!"U\FD0DYV48E#3()%,*PA09%0_F"HNVH#I`BWJ@F;_'-UA
     41MZ#.^]^K&Z_.SC7>Q&3MOG6YW6$C[/=8F1A>VPF+HJ(HZ*C^VT]GCDQ7%E\<5
     42MI8D/2X>_$=,+A[O^V";]X58FSO=W,;$HL(@+\+O\A,TNN?NT6&<Y3#I@^0VU
     43M,[V@^?$HYO2N+APS(SKU*-Q'Y'7J$EF`3$4*/N4^HME.9U8S5H8_'/?8\\8P
     44M@LTE?0`[KN]^8`_3^WU<T9&;WP(&G_701T:[+-!%TRXK<)PCB8M>VND=F,Y.
     45MO<-:L2N3`TYL]T;(/#O#'=3(&'B6\0&,M.3<G]Q1!5B_DVSG/!#-7@D%6+AW
     46MR%Q/%I8LS;Z_2M-^``LH9-."MH3,V5?E_6+**+5FQ#".9-!'16K8V8Q7#X%^
     47M=54&_K=5&2W$<'K(BOVAZ6\>:%]0YI]1GZD5QM'CK[_\Q'[H@[W(L]4/5X:`
     48MO6&9E]N>8MF1*_L<C7=D(?9)60$S2WWUY!1F&1!I8M@MQR-7*'K:NV5QX12H
     49M7G/+)08%;][\I7A<()(5^T=<9?$J3PLKBER8R?2W9;\W:1V^6+Q[,I7"\3;G
     50MUV7=[?#L%-.K7G5\J-GHLA6QL^;MLB_$7V>[TVD58M/ZUI31VQ-B8(OL9OGV
     51M8H/$'POR'693%1?UOJR'ZGR+ZF2F0"IVDVTV:85T9'%N)*Q&A/D&)3,*WYR8
     52M0_$7ZS*OB<B*JOQBGB9<3X2RY]$(E5_NJ0U1#3:]WW:0CVF,T)>.Z']>_MPV
     53M.+3=S,B[#UQ?REOE<#6M'2ZG=5T?GS7]^/03@>H(@4<AZ8=&A&^(P;36WZE<
     54M?S['*C*?`%AR6#=L765T(5$6EQ[=3^!,-%*"8/([W/HGH5&G:!Q.9CFG'P\_
     55M@.*$^,*N0]@("O$:7`3^6>:\";E'5L@(V2`39`$&H!_JH1W*H1NJ'1J?HK%-
     56MZ+N;_,Z/0$V0_@]HK4'E"-(I0I,G\RS)T-=/I-R19$Z274D@9'1\>OH86";#
     57M;N#)HPY'\B=ZR:ZFI/]W4M[7WO\^?$]Z.#HGZO\W<8F%C=M+W.CU![7('-0P
     58MBQ>^YS'G>$?1E.;FE+-5MD7[0Q>RA^U(CRTU0ENW'/U]M%D_`]L(HN!D%H?'
     598/M[43=^RQZM-5.C5'R?_`O9]1I-M&@``
    5960`
    6061end
  • Tst/Old/err3.tst

    rb169a9 r08a6e5e  
    9191
    9292module E=Ext(2,D,J);
     93//---------------------------------------------
     94// tr.600 (assign to 1 x 1 bigintmat)
     95
     96bigintmat b[1][1] = 7;
    9397
    9498LIB "tst.lib";tst_status(1);$
  • Tst/Short.lst

    rb169a9 r08a6e5e  
    218218; Short/primdec3.tst ; too long!
    219219Short/primdec_s.tst
     220Short/primdecint_some_special_cases.tst
    220221Short/primefactors.tst
    221222Short/primitiv_s.tst
  • Tst/Short/bug_40.res.gz.uu

    rb169a9 r08a6e5e  
    1 begin 644 bug_40.res.gz
    2 M'XL("-DOPE```V)U9U\T,"YR97,`M5U+C]Q&DK[[5Q0&>^ANJ:W*=W(-ZS!8
    3 M###`SER\YS;DD=9HP-884AL+Z==O%<F,=Y(L5LF`[>XF&8R,_#+>F?SI?_[K
    4 M[_\\'`[N[>&___[7PU]>/K]\_]OS+W_YX;N?YBO^[>'TQY^?/SZ_W-W_\-WY
    5 M_X>W;P^__/GKS_'X_<</__?]YY=W+W![>'MX\^;PZ</[/__U\OSOCX?GCX<_
    6 MWGUZ]_N'EP^?#I^>/_[Z^3_AWOC]`7Y.WX]7#Y]^O#N^_N)>'[[XT[_A_O7=
    7 MU],O7T^_?`VG?^/IWW3Z-]^_?O\',IG?'O[]Q_E]=Z<W__37>[Q2WAZ>WW]X
    8 M]]OA;X<?#X]?_9-__.(>OH:G_/`UGO^3SO_)3_GQJWL*CZ<+SI^ON--]X>&+
    9 M>_+G6\Y_R^>_C5?FG[_X^?KTS/FN5U]/M,]_.9$X_>5TXVL<8OW^L/+X>9"+
    10 M[R?4AN\/CV<*UEA>C6,!TB.UT[W&>.:K\)O)5'NG.YY&<)9@Z+SW=(&^,IBO
    11 M#.R5P7HE3)]S;?J>?WIY?YK!SR_O[_Z&T^L\7O_M^?=??SG?,O[`[CJ!$GX^
    12 M@6Y^XA_O?OW]W8]PX83`\S_G`9ZY\,/(83D\'MP;Y]_<G9A,)V:?SH(\_7'D
    13 M.HW<AR=_>'68?@U/YXM`-$]$S_^X-_21D6S[PT3@])K<_G#_,"+I:11H&24V
    14 MG&X!N@7IWIWHQ!/1D<+YIXGVD.]'GH/D.7">@^*Y*IZ#Y#E(GH/)<YFF\_`*
    15 M:`^$[T?W)C>^\YG\-(")[2C9CISM*-GV1\5VE&Q'R7:<V/:G'V90IJ?SJGU*
    16 M1-C>,6&//#]://N1Y\:PG]\^LCNS3MCUBEW?"+??`N'4-S9/`BTCAZ^!5)B1
    17 M.Z_%$P;.R*VGI^_.T&TR=B",6->P`;0CLLGAL@H-()'H2!E<_+3L,PH_-\F.
    18 M"X[*$Z0)=,G:.E^>Y#MQ027)Y,A>FF8A(1"!=J$\WP"<>DU=`,Y)G]91Q4Z3
    19 M>F87:),UM1N6'(*-=-!KRH2E!SLPZ?4,V`SSVCE="L<9EB.3^_1IT*MFLSYE
    20 M8*MDLD-@ZWO?@NDHTQ#W*U/*<&Z:%"FG;Z9*@[9:%Z/5HU=`F2[?0)4&O;@V
    21 MJ-+)U:@"K@-7I=-U'XF6>`(I>V3Z]`OE>Y)4(QK)*J+#:?+W0J5Z*6NX&2@Z
    22 MK5(]`XW#)9E[=@"HL45U,=05K(%NL+"_"O59A9B&`$A'+E*"CS5#`"2T69+&
    23 MP0N-NP)5H)SM^5Y4N1RJ0*H8$RU4;IY#`WBF<D=V<A?\,#NRLT0O5V5QV*_*
    24 MT"]TP^@8DC&F(],)-_5ED[L%S\V7S<R736397*X<E"(`LF35[%(.*2XHAXAA
    25 M%OBY&]`-M,FBN<"?L,&=<@_<$?AS!7"=BM#-X_(,1Z+>GE#!$=/=Y&^HYE0M
    26 M/3+#B4M>R%U)?5"#X0JY@B[N8:61RMSKVHB?1:P`:;T>O(1_QY"LJ>3L+5%>
    27 MI))S4#(4*CFW17BA2L["7ER!VFR$,UPEGYU<0&W.X`!/SL0)L%2,E^NT7/;K
    28 M-`+&R!RS7+^),LO#E<JL'!>4&<D996*J^YY.8?"_G:=3=%BRT:GOHQEH<R]J
    29 M=TQ'T0RT671O^,<2S84ER<)91T.FS,VZ38K_%1$U#46`IG27>N'):B@"%`VO
    30 M*4JC/OF:07G(CX1Q(%@MW-QH#H;>''!>,5UA^4B-6F7KI?E-8YP=1)S]1(7<
    31 M`F\>1T_W`&VR>MA=1L#MN;CCZ/=-)@3(L47CJ#84"Y$L0\^7(==XZ)M5;4F>
    32 M.#_%RE;42.%]8MJA`^U*3_:V?PHTDX#W9NW22ZA5PV^R?=8YV0)._V(^K9)5
    33 M<TD^3;Q39RJJL"VFJ_:*NFK`99M]P@LUZU6&)(TSRA:)\Y<U[2#\KENN\L'U
    34 M5GG+/3OTR0&/@[?4;;@&CD.X-1P'(][089^'1==\8&TG@")SL2S;<9F=`+IF
    35 M7LM,8QEVHCG`7%,![4*5XS[MA<3J)O5UD3<,M`?%Z&YGV!TM]PP#S1&O9V03
    36 M4+NCXTKV>E"[H[\QJ-W1,B"VCB5UBTV*UAWC#11M8CEL=TR&CMW@A"TM)*!]
    37 M13J8:&%:P@#2WR`?[(Z[\L$1L*@`.QA:>,ZJ!:K,%FV:F1MV[M:Y8>?ZN6&B
    38 MCNOL4>85A](YYJ5=G(CKA4S.;4\.&U9D41<[%V^GBYVSRI=2%V.Y=7M2PKF;
    39 MY8F=Z^:)40]/^30'L';5T,.W@O5P:UC[?B*`X"/(JD<?V-Y]&V`;A?V-&69:
    40 M^."6!&@'">S+LVS.:W_-,"Z7U3Z`M@QV]D/:+V6'HPWI5K;G\5N:ZQ\(B">$
    41 M!,!NR`_=/+'SM\H3.]_+$\L2"4U*/&%:0DB)5^@W!U`0+`$=8374LDHT![SL
    42 MY[1!`VU/4;LGH&Q>+FHDH$U6Q/YX4HLC]L5AY,5<2)8N==<#+^1;`2]H$V$!
    43 M3\1G6O<#O6HB[P95"A=TI1$(K.O^915*B_&[5:A1?]<JE$5G.K<H\XA`VROG
    44 M9;\2C488XZ5;+L$<618LC/E=JG#3Z75?PIL33\0CIC>,M6:@QORG_.;<.8J2
    45 M&ELK)L,R3Q7A[MQY@5QESM7X3C]PKB`R,5B;TM2)LE;ZK$7"&IAYO)P8:]5@
    46 MC>4.W5844.XZ/M0.&*1.F"ZS'/Z"]9_<;2Q/\@N6IS7I:5]_T:\'VF:0H7U]
    47 MVZ]G2</F2`)IWM@ETQ2+AK&G8(!V$D9-*!B[U\XE:X70[,K."HU+12#QV@J-
    48 M2T:"JY-YJY<JT'3+!%?>MG):TGL#3H$R63^7QJ39:ZX$=E55="&GQL27;Q%C
    49 MY,480_7=N:SKBJ!!'>O#W^)X(G*S2EUM<SQ[[7.$,G>G^NI\,P"!LIF^D@DK
    50 M0W5G0W4#T4&R>P,O61;G#=7M+T`@D0$MU.^$8-%K1*M0T3OG6K'=P&'"Q$@W
    51 M*E/"!+J\_V1-P#H"JRW)#!23FM#==H<(30?=]KJPL&:Z";P6?P76ZAK6F+]]
    52 M"=:&J[%6M9606&,>=G4]2SW'C"OY-Z#C3>'>(@:KVG4"`LMIY5Z.`"A?W;OK
    53 MJMF[RV%J]01M<1]H=?UJ]Z%V\K+:?=@.7:!=;V"HJTY',4,MD=MJY$;'MD<!
    54 M861(K("G[QU4(Z+1U,QZEFGT->?(3C<B8UXQAB'?JP/Z9'Q'#?@7CC)':^1O
    55 M)&O@3(\94>BO>3#J70.R)SI+2+V30NRL&4=M.!*/A%=']E`6RBM;"F?$N&G=
    56 M"3I6EP;Z5)P!H$V6@DUL9(K4QK-X-U#B5H"W/=!:VR!":>*():P0/S90OYIQ
    57 MSSOKB!HE+!"DL_G$]#!M;C52LDC,\[JW3&J4$9O4L?!'9XTKX1(;QS7KDA%+
    58 MF`YA2TT-S-/B-TW+4/)M>(+1,>%'2865824Y+-DPY9G+/NDST)*OF)8DKV48
    59 MKICI]Z(UX*RSK>G!S::9DN7.?VS*7J]3UMV!^RPY-OVQ&"J&-H>1Z9O4;9O$
    60 MII(I<SQ]^H"MSE%`^!7?WM5*+T;F`VB+'8'1+J:&MA.CJ;'06'T*G%EWE,P^
    61 M*2&V_1&H%3V0$_/-2]11%"MQ4:+H6Q4:M';&FBMS7[B;$L%+&972XX&S$:12
    62 M8KN^6-IIFMDVB7S"P`JB6O:.!\">J.5'I=[!3,JYSHQUH)W$]%H;@C+*+J/L
    63 MZ$[\NK8\R5)DFXJ!<-'K2ZIB"*))9L23FVC5$^A6(3O8R>3%R`:A?;!XO<FH
    64 M)N:<(`.BUNQ7#"I6G<%KDS88*#L).5$T*'U;RNRFJ'QZ[RU%S&+6=3WLPY(>
    65 M!ND^SH-4/ED@325`DRV$9?5MZ&`USL04P;PW<WFV6;K41RE<($WWDZL5.CLB
    66 M$(EU9]CP=,3^E>7I);M(T,ZV^C//[$W[4C<O81`8X5:GA=Z0X@D6!!;7-U^^
    67 M0:X>OID`!Q6L*)BFJK=@EN\(YYCE>41/W/:S-K.*'Y2PV'<!$%,Y+LS\.)5@
    68 M*EQCA6@,F3E-;@'.0"5U,,:3_5SEVJ:8;_4&4ZS:7UE(KQE2H#?V+G@&(\LG
    69 M"I9/9/6\$H&*WCRKZD;Q,R\*E@@BI?-&-BJ'A[GB27AILW-*A?UH"#O:?H](
    70 MKZ&]G%W6@(SJ?B,O=F^WVH&>Q**R=G;"&@BKC:B>>C_C'^C\6$M<EI*S:#2;
    71 MIN@2OYF7D[G?;!8,EO$?U_!?B`^SP5/F)67;4^:Y>NG8=X:]M#2"Y1Q%W;4:
    72 M6;2RVV_FU>0HE@5QJN9EP1PB26O!(9KT8@%_PS5U^&CY80DB$*!-5L:B8\V=
    73 M*QP'C4!2,)!,*@,\,3$%9A[:<$CR[1X5*-!F_:J&BXJA(-M_:^`D6<M#N:K+
    74 MVISORS:<U"SP&];QF]2ZL+M04'4DLZG""X%?!F*@+0-D84)AF:`6Y@%@(Y25
    75 MG;#ZE87A,\@HPV`T&*]$AY2<UPM4]`$CL#,#]J0BKA`Q92.:>B)>*N-E2!>(
    76 MO9<U35Y#]24"[J4S30'7K@TD>;)+;"`OYEHV,&U6&&4%P<$*WVU;6M;<&VSG
    77 MO,SX%>7BV/V8J#QD'?<L%8:[\=R+-K$8`Q8!696$U8T)CCXNBK*TZ*#"C293
    78 MGF3%3A(@VDEC,N?+S/R48DF!&BW7UIN%<K'KV;3S5G.&)C2L&?F\JB+K,DXS
    79 M@]9<Y;-XJ5V'0Z.HZNV77#^Z_2:HAB439#C)NF_+5$U5*5VK56F#O)>T+M^K
    80 M8/EF0*:K=;7'6DVX)K'6G.09EU_MYM1U)\=BR$9(*E5KA6PL7K-Y&U;Q*SKL
    81 ME_D:EG6M=J>@/GJ^A21T?1,I"2VAH"#%A]"GF9*!94JX!/JH3@>L%*BMNGY@
    82 M>R3G!D*!0!*/<3D)E*$,DI`!I`1/-J?9R"8"(0!7=!,TT,V7"2`1I0GGP'@M
    83 M`[8A?]8K`GQ;9,!QH+T1*'BX%L+,-ID5FGC=?.8?J-(>&E4QAVA0%P%DT331
    84 MH\$"+[.&Q@XYLC4S7RM`F;5QP'M?P[F_8>;BWD9>8.54BKPGSVN&H[`FBJ\(
    85 MQ7D:@)P^SDL1XS`-4%1%,;)B8,A0_9YM`EH"3GMRWZA`Z39AH/.X1D<5?D.K
    86 MK1)!4QYMT@;(P[$'<C&*N%'<=8NX^5#,%&*K<_0R<%(U5EC8I/H1>.%45A+-
    87 MA&*A3@QIR2:#=$Y"5*RFN:1M6!(@X4TYT5S>N&I!2L[PJ)OB..M"W6!#)$-U
    88 M2Z#BX4WT'7>;ZA!'GQ8[2_K.=F&I_<!/Y28"DB+@V?O@=`-`,VEUJ=&(J"`@
    89 M53L*TRA6B#Z,J>:`3`UB)5(_GRD^<ZDW,K3FJ=6(G]0(Z)Z@O5`@Y+J$I!+Q
    90 MNF<K,I^7%K)(FX`4/@H+**ON12'@S"R2F?`EL^759@\Y(0(I/EDC(\DK!Q$T
    91 M"52,EH"BAV:TM!L$9'U"!FA`;J%TTTRRCA;L%)X40C61R;SY#2K=ZS/D#'A&
    92 MV[X+6K0V:=&2MB%(?\((_C<,(=C:5G@4?MM*I85)PU`S]ILG`9MIH$EG!@[B
    93 MDG34C%GLMB,%5P$O.\(]I+;<#O<6%6)*@Z$W-"9HA1@!%/#$3XA6^"8_#&/P
    94 MH4K'G'#,R[YMI$,`6LJMY=:(GF7.G0*(LANIN.3*8LT?!Q]EQZ"CZ)L&L>Q/
    95 MD'"-U.=#5`<4T-B]'[`MN1.Z5JBW(UF)&9T/P/%CZ7!:Y,=QNN<D;6TKCA]R
    96 M3EE*C"7B).%J?W(C>J;&Z]IT!SW<@!+,*[KCB<:4.(ZBM.#41IPF#PU]O#:#
    97 M@31#(!G9&(N%23S(=ZDO5N@M,B[5&$O]+A:KRO;16>\V2FFA*U8NT^0ZMI]O
    98 MYYTZ+CK58SEFH*V.HJ71JY2#X6#Q9K[`MY'."EJ57W%HT9HJ;,9-(M^OW5[A
    99 MP.%<T?)>;PMV7IDQZMCP4I^]"UMZ;4D!&N#\U`5T<X(Q5"?UO8G`I%*/]EK4
    100 M<7H:Y/K6@>,TX;&C,L3ZSBN^P4S.B]G.CHXCCGHJ,SV%-8[%4'UTM2CL:!GO
    101 M#B@]KE*:TAYBUDB9;\(K8=.F;47K.2H9Z6A]3,ST]+04>MHJ=#X:F7Z8M-4X
    102 MI#0MJ];(-A$9IP;!ER6&L7NE^WRBSX-K^X1+<#R+P$\N(7B$Q7?L4U;XM>S3
    103 M.*0QI0*N;;%]S++FVM*D.]J5XHR1Q"4#A=HD"!M5/#?9B9()D@Q_'R<4-%.H
    104 M9.("4TW/$%K<CT`R:9&I1B@BH:28.D_W^:;!G""MLTI>UUGSO-LHDG.NDV<6
    105 M-6F@BD9O?!JW2A'T-JU5EA.,XQSCR;N!UOKN:"RS3&=D4>2J0ZOY,8D3/DWR
    106 MEMJJ;H/:&BUHV"3WNA;/@=SY>#2LXU,T]983J@OQ7".W-XD^'^!YLKHF"@CD
    107 MJH$\+OBXQD:B;&3&!C8=++*1*!N%:XNS18JSF]]S`^0\K&1[86LB-<9XDKW*
    108 M7=%JG\Q=*<>>;(44_#,W9IO-GF)P#[39<<%+K"LVI:D<O&8S,3;7K?2P5L28
    109 MRZ#;`JE!.Q$ZD.)C2!SSN\:P$KXU;W'!(V+D2A<J0?F(@^4N^-'JQ0,<IB2T
    110 M`CW]*`P#G\7I87824],&]+EX%/MUI^<R?0Z3#_2YCEL0I_T#-`>C'0="1GL$
    111 M!@7F+I"'K99+XV$24Y.'8T?DR19YDB*/QZ1%GI3(DQ9YUB)/2N1)BYSYI.,K
    112 MQZ*2GP`>(,<8.RF/*(I?'9<R3S[4.=<(V=)HKIEX7$F]QB>L%*%FCT[;[9;!
    113 MZX.GI?((&1%93=?U.5\D#YCP8;$A:KJ>+?"TAS,^',14G&?A?$NUQ:8\O>AZ
    114 M_0M$2TP;H'-G=L54N-5`*9+YP)%D,9+X-.T"0E!!)3DN6Z@\K9U7R!(]O#D0
    115 MA;E""9T-RFA5(B>,VM0-5R\Z#5GMZN5)\VX2O%]-"T10V&0\WE*@P^QHIT[$
    116 M(%^]XF8V]R80ISV`TRZ]F^C[A0,5%T8?I39:3EJ*$"Z2"E@4#W>"KB`IY`4)
    117 MDIC+##"`R)*9GIRNK=*K"](+<O8'F_=$>%^+,N):L:IY75O2`S'H$$BG!]@8
    118 M@C>T^,5C6/4<2>UK=3;IL:QV"$GY3U+U=3)$<8I.\,%,H<N>DH%-D(\6AOJY
    119 ML7P251AK+9.+6FO'A(=-)ARSWS/11TI43L&J$2=5=#2@\4B'DN8/^)3>2[4)
    120 MC*I+16OBN4[5E8\82ER-N^D6)!Q*8!,Z[Z>@LP(IVEH7;>!4GR`VD'Z(]"[P
    121 MPW:6:9%.0,)IXD(GG/:(6T;0*%5I(SA5)3:+?C75A+NFZ(!$Y#-[TLH##\(9
    122 MCH,T/U/H0AZDA27R9#JJ-_:#EB"BAN2TU;.>9C:1/.Y-KI/F6@8-27J<L\?:
    123 M>?'LLN+CT1BT=4AH3$G=J8YCC"GWR(FVXIA8$J<=!C3N%PZLSY/8P5;=0B(:
    124 M).K,M)@&@W%Y4SYR_4N1YE6$1THW=FCK54";]0S7V:E.O>A`K*2\8A*;5Q>)
    125 MAQ[00U>.2>X;11V:968483KFB8/^-=_*D32SQ5IH@:#HI;NGSY-!06H*L9/-
    126 M@'<.4&K?[5](H$6@3>SHLAB5R*0GG[4JJA">U&U!Q%IQIKERV\+RLNK+R3$4
    127 M"=NX8PRKKEPD;4S=F0-R2[Z<#&.+@BU1-H["EE2<Y_KYT8)MZ<'62@J.V$5>
    128 M*&PY)["90O8"R?(_T&)MH,;A.+Q-P6J<?\!#\&*1O:!SN\.LD\]=(8"W20F;
    129 MPA''6:KN=[62JVJ3(ST6\TYH5D^==8[]=K]M:B!13/@(;&I(<DIR034?Z<N-
    130 M?/N4G$G1%I/[T\*L<U7[3M!*ZEDW#&1E61SR:;6"MQ1N'C'B-#6[4+D.ZFET
    131 M(MAVJM)5[41MHJ&I(F$]I^QG7H)!"N/[^>".RMGI?Y[1:L,*/)TQ."%!Z"'"
    132 M6W2\2];V()6,$WJF&A+D.Z-*7\M$%"/RHPO7,VZ.5(*R;.VP(JTDF#H2-&-R
    133 MSPI^<=#IF"D=0)6+$_K%%$H10C'">`&F@?4*S?4?>&^PW$M;`(,0@%&VX<!)
    134 M1R.7#3D0KE6<4&_&X-/1;40$FO&(O+!J2B0UL$D,1M%UXL021CJ&C6CPD!TB
    135 M8HEB/;70K^`M22TY=8O6:V339\+[BJ7_8#\GWE?M^^8]I'A?QZ7K.,$ME0,^
    136 M,!<DW^3#W">K6L*/!TA.:B8B`W:?[\N`W1=,>OJ]>@;M^^0TVI_U3$[.I?TU
    137 MQ>24UX^:K6I/CIP26RS9UY[LS?1$Y'CA>V?$V2\$+_Y([_,8HY%]'$T!>.)T
    138 M6!%3XF<`:N^*'FN<O#GKZER\Y.6LVU](2RRM3\;AY3C(*.8C&9@31#?"`FUQ
    139 M+F5N*A'?;E:CA'M*EH`UXWS#RGG&C=!!8-C+XE*$X$<ZAF3!F&\?MN(M&FLX
    140 M:&/2(K^SBM;]6)@7)SP$:4-ZK50H^"";0#QX_]2FMA=*4R'/PNLVG'I\HVR"
    141 M]J`_V88L%1[EB2<:_GC*BOSN`=,CQ.M.H5L_(FCWROU,':$O>2W1%GH50C_J
    142 MEW/OV!;^DM,23>%'T?4Q!Q3BS30&(GW'B1]3Q^8*`R!V5@&+>]@D1`0>6M&"
    143 MJVNU?)$Z6TM4NHQFLJ%3ZIPEEPFS%-<39KADHVZ6:\FF\Y(U^DCZ"Y<?-M<-
    144 MJ&CW(*(IRG8Y#R$T[T=96LC\&+EN#$6[K@FJY$9I#^$S[D42:0\:+"/"$MML
    145 M2IMBR(KO[<P5T74B.TD2YH[(=0W!Y4`T`/>S`6\@!8I<'5+@6I4UOK$KD>TA
    146 MDX.4N9>?K+VCN.:F3<9?3$_$B_UT<`EH9V&BU<X7ZGPDD5/@SMK8N.(?<,6V
    147 MG^EW149LQ"`%R&`82O!1E1&A9'B`DW3@<Q@UPY'F%%5,49:8XZ`^4V)]="#)
    148 MJ@&>1TR4U,:RWKS)%YC*HI-S24$I922J:2E[-2'T6-0",X)?#X,OM?#Z?)LI
    149 ME%YFH)YV6Q-A3T7^4:9$ED&%5CD:JPUEN:'4F-;WA,Q?3]AH0?+JQCTE9PU\
    150 M>IXO'O4XC<-E4[:X:YV*F4%_ENUC5[:1R7:@LHU[9+M>B$@DB;\`?"#8W^[?
    151 MP(%R+5P5HRY9<@8D4>(O$KG2ZH25&R.9.E3%13>)-GTZL("(F'>\+,T[/_W-
    152 M\LN;GX@,\"[ZIK"/].7,,>&-\4!&G,3?W;=&IJ)3<\5@K*/;\2#N">!AQAP0
    153 M'GJZ?6EYD*70"/$JA+$\YC0)#*DZO3R,)"%)3V;3O/,"Q!F*!JJ%49=;.UJ,
    154 MF0UQZL\"HKU\H!M9DSC,+=#E.$G6:`*!A@\TG+P])/&SW2;!0^_;;#:#$C5-
    155 MG%35(C6WJEB)2)(2[0B\2($O)G&DZ#',:CF>3/T_4HE(6-_%ZP-+[A#[4L>0
    156 MG&8JFELMD@+\,+9.2D+D<H=.(X&(345^TGQ[6'I[M-^.!T/,@3E9F33U@T_(
    157 M;KKFZE02!8&R6I!5EMSV/'!LJR5\%\9W:I$"(1$-WH6NB]@NB)`>S%P@1@K[
    158 MU&$61Y@)5[<=*D6_F-M<7:H6FT,'5)W6C0\H`XR$J/^0CU[)(;4MIGB3RA^C
    159 MF4Y].:RX_/D8E^2PT^7/_,M1RN7W-$4><8@94"2"JPS!%<N,0EQ%<J*C#FYQ
    160 M&)+N5"K02]OIGV?]P:@%_WP&P)162LB=Q/CL0Z:KN3.^$+7*W;2\CL"=40E)
    161 MM_"YL_/:WG&?F\B+>!19U5+BK3B*&SF:\$MD9+;O><Y/<R.V:RE^(AI=G0'&
    162 M$#Q965:!C<A-UGC::JJJ7$(&4+6YR+J^T]OT@LO;Z4Y!=H;Z/D7N>XJ\W:[#
    163 M8I[]SW)+2$"WR5\Q=]Y?/7>,2QOS5X8%V7?U_V5A0?:&RB<K>%3=B`6OJI*8
    164 M5]GIE6=Q9-J-O/+LC<R`Y963D5+4RRTGK:4D$R<GRP)4A+(%O4GCE'[_:L><
    165 M\8\TS7-F&Q3;>`"A8$Z^B&&I\Y>#2$CA-QF("<PLXT$YYRTS=BPH5I`L/)%\
    166 M\K3.$5*;QUTZ`J3*1^:J>)R423F*-#2(FA#)D'<$,BP)Q/P"0B;E*&)FA=:.
    167 M.HW?-GJ3FW0"E!XAOW7)L>4%M`ULS<E9HB&$?HA$/R!5ZJK':)'E$Z;ZZK,L
    168 M.R&&X&2Y$4<!T$-4O*U6@;3QR2.^;,V5I;82Y%CTRIKJ>K3C/BVN+U&0ZI92
    169 M;%L5!P,S4;B5QH80]L'-R[50,J(O/$]06-PM2S/IP*P%J-=%G[Q2=:OH,YF0
    170 MQM&"C?(B`"6E+5*J:T,,9(B!##'0R1BST&R(XO,8M09YY-*>(1H*5T]HFR<^
    171 M2"/;@"'T@@NU%D*G;F;UFA`Z&VE6Z2R2*!I55'8=K4Y#[>P[6IW=%#0EF;+*
    172 MF95-8^<F$V#R=9E3LF\JC!).8.Q#]1&A^@JABA.8ZQ)4=T_@2MF3N(/3%&*N
    173 MIW14(_M*SSXK8WT,:).5D9:P6#5/\@F]/=(#VD0]OM+"VQ.>%$,WKMA1>;`8
    174 M&JA,1@F>WJK?#'299C3+N`M^<RFV3;I%+JM<DLM"<U)YEJ%8UI^4[1ESXR:D
    175 M3<SI+PTM,4>$,W#VJDQGL3[6??:\]F)]$@?0S%$4+(F-T)@X@J1,RPIC2DGY
    176 M;+PJ9<9$*B,DSQS#W&.X&DW5<FC7T31R6)'#PJU"`?-R'9HN@CI!T\C>@.SI
    177 M\#Z0#-(UR4B^L:;;DM"6($V0#E;O%>U(:`S)387+#*WF:\6R8RP%`VDW$M1J
    178 MUM;QY8?H&I+A<UPO*$O#=P4UOA@1-<A21:+Z:6<R<NAV=G62D51<B0?[0R>Z
    179 MRR2Z*\>C@4!UDS.DKVZ2K?8M,^1VZ^MR[,5?IKZ>$R<169)[-!)E:=\4%5XS
    180 MNWR*&(.YL]BN3!>78^DQ>9D_5GC9S%BH4\;8XY`&C14<S:X8M8C/`!''_\+1
    181 M."OSP%?Y-![P\8O3N062]=V9`R^.=PO>*`=>K+I8MS.%I,%Q^AQ7M+C0^?0]
    182 MT0D4P5O+#$S3>/H-:(ONV6DB+QHH'Q00-K,-P9C91&=6[W8CC9$[P&4$DGNR
    183 M],4O=VZI?LOB>WO@(`+U%^7+B^\5'/K%.IZ2*ZH,QEK"][!D!88=ELS&\>+-
    184 MG7@1TY@[$EY`.UL(7/1P5X9K52QTXS#!@(WFQ-"\;WEY,T-R;6:_!#-S1N=1
    185 M=7"7H)%.]DGLS[<47F);R[<(CP\Q%GJ[1SN5OS48A![JNZERCFVQ!()>`KP=
    186 M>$^BI(3U1(D(X0E'NN$GP[:8/0*S_)4M`F-[;9`]UO'3DO(G]M"'B\?.+5>5
    187 M'@K?17:CTD.)AF(GPO!G(8B$?(E!#A"SN0L-(2OI^!*_14=;B6L=;1E0B`/,
    188 M8H"I?=@(;S%AVKZ?>H7>B59^8UWO3-E&,D>Z,XULZ]LGTT8[+54X]GCA9OV/
    189 M:57/ZI0EZ5W<?$/7+K7%BWO+:DO*.T5KT=\@MUM2,@#1[P3,T'!`Q&5%E0/G
    190 M[&)]E'H1I?2_,-CU@BW1:#Z5C#`[>'%8F,3.7@@+*4LR@1,X4UEJ[SESZ:^>
    191 MR&Q5<%8F<NJ.1.:\;5JNS<25;$'_T496I-*2L(^W8LC84F$R-,T0,J2AG@C4
    192 M=Z9X<C=[LM02*!)Q:#PR`WZBP'\,A,'MR,\]Y'<9E,L@\5A85C(Q?3?L5QFE
    193 MY\+T5$;[&`"R977<(UL[I[=TNSHV3R]C4E36"VXTVZ?72KI8K\V2(Q.:.>8(
    194 M4SLQ)S?)[<(<8[&:RN3:U.>M-M"5S@:Z61&-"188"R]6MLR9ORI'R(N5-\L1
    195 M5D/W6SE",DXT`-4T`)G&0^RTOED5RENTUF:'L>^8JUZ#YZ7Q8^WDNY]8?I[E
    196 M)*JHLY"C2"\?R&"!;L]`!MO)9IO\<`SR\#ZL#.Y-(0Y6J_&"$L/F%0S,AB@D
    197 M>]S#$7\[T!:G+;%B4K28L4`[!H'#7A%M[TK&*JSDJG(13>'M\38B&KHBBI:(
    198 MJCSLC_3W[<ZQ`FW'F;D^QUJ/5I;;0"6NDWH4K7;QV@0R,K/4%+IK=(L;/:(<
    199 M6$\E)Z:2+TH@`^U.>>:Z_'&U2I,/HKU4?5JD'JU&D`&6%[@G57Z%222;P_ZD
    200 M3W4[FOLPLL'U9M0FY_4VB+'(#M%Q8N/>B<6!F*"]>F:=F<0#Y:/.&*\N&UH0
    201 M/KBT>YK*!=/$8CLR1=;>Z6%_1:#VJXS+S?.(#:&TO;&[9#=W_M+6?JI')6,6
    202 MNC,:PIUYO^K7\WXR;T:8B@;2XBY^X-U`F\!>;_B-"EOR"T^8&!UVSE[7BU[%
    203 M5M.*@L/.R0'S%`YXXZ#$VLXWOWP85F%Q'81-8?`1R,U\S%R0:+;*SSV)&L$U
    204 MYB)81TMM,1?CFU'((2Z8"S86J]N4?"OMR_Z>\4J+A;?I&:_F[CXN"?%YMAJZ
    205 M:EE.J[4MU+HQ=MR%1.9_C[;B=<`U;25F7.[W0Y]6S'CL=GW*&RW]AY_$W(GP
    206 M:!4]5BQMYOV'-8IM*>0K,'OP2O1)[&]FV@?8:"<9F@OA69-@E;OT$%3Q:I-#
    207 M:WN6R9%"3BK/-9U5L[^P5-.FGGQ(_K/R34VR-IT(/_O2PS5U"]/=!D\L3222
    208 M+:M)IL+FY'"]0EJ]DR9,:4UI8>2G*&DA/WNE=7G',I,6X:[3HC^;6M1JN9-F
    209 M2.I&;;RC?:,NM)$O<E^^P',O^76I*Y,[VZ%$]A4CH2PA-^\YV)G&J]EH;.O7
    210 M<+R1%,H2=+/1J'LYZG7X&!Q%FR.SJ><FC8"U])LE]J5QRD*S!&DV0@04&\N)
    211 M87E?N%^^R1;_:NWY>V!;H9/">=$XQZ`?CHG8X8J4B[;W<ZN#$"L:]/6*L+KL
    212 MZFI#9(L%4/0"R+A8]GJJU=H'96X>BU)<JGPV>SEUG[AJ][R4%7$U_`CN,'N6
    213 MH?L-KT9Z=6Z,PZM]G.:K<&KNVEO'Z?C>BNQ)G#:_F:K"?7UCU2JE7>4V5ROU
    214 M10<WLPZC&W1K)CK/?B_.A_6(C/O/*.[!4ZRHW;;^PDZ!RHMLBYT"I,<"V1'0
    215 M%1OJFM:^@)]>Y\)*CP#IK4#F,I/55$K'JX6Q+J]6MF(G9VZ?*S?<:%?'<%QH
    216 M)Q#Y[(%LN,,VK.OJGH]`6[85D+Y?Z2H-1Z[Z9M3>B!%Y.B^1AF8D"1U\F[+;
    217 M<+SQQHW!*G8Q"=-I-F!Z]7:-X?A-MFL,KKM=@RQ!')MS!G+R/+X+;5YC#V@3
    218 M"/>S1*C2$$8NJ(6UURD;K.+72IJY05>`VR4MJ^M*"H1+*X![8`:(,%(4(_.7
    219 M9G:\^%*?U2-&!%>##:4]YZM(*/GC9BB-DP:MIX-WW):/SL?UV<;!VGMWC=LT
    220 M>/O0O^:N>N*N#CX:`,@PL*N0V#UY$AUB(EVY)V/.8WC66CMX'6?Y.;Y@M\E6
    221 M0WJH?\7;=%S47DK<RB&8.W[FH(;<IH.:"M$%N4W&Z]&^3>W"F;D7MW4ZM.5M
    222 M.BSQ,%(42-"SX($W<IN.(LS;JE*^D:1+A\#7>>O%A^OD',3Y.FN7'Z+A-5%P
    223 M1V_1)]<-X\"N1[[BU77IHR1!7WJT\GK1XZ-K(E9)7UP?)'U^79[D-P5$>-FI
    224 MRY%>]NIRHI>#NDQU.-\P,V6`\6(2%R.]F,7%1"\6<3'3BZ+(-[XUX&445QE[
    225 M$."*3#!/30=XV=$'(WW0JP<3?3#0!Q-],*H',WTPT0<S?9!)9QP'KG*>>AUY
    226 M)1>KN$@5)D^1%JX\Y&8!1%AA*@]7/OEPS8!_1&F<M!,.EO335])C/91$_X[3
    227 M3%K=*UU.!9=3`'5Q-F6/])/'>#N5A[A?WHJ5BND;Y./!3_Z'=KT>WQZ>__'N
    228 MU]_?_?C\\>7#IT\?WM]-O]_C/>[MX8]/I\MWGY]__^.WY__]<G>Z[<]_?;C[
    229 M[<.[T^T__?;\^Z^_W+^>?WMY?W__VM^?GG_SYO#P</CY\/SY\/'?A\\O[SZ^
    230 M?_?I_>&7=Y^?/W]W!/+^$O(3;Y>](*R\X,3Q:_:NR\C'S>3W,)^6J4\DKV$_
    231 M7_*"BR>W`/67T_]^!1Y__+']81;*#]\Y>*BN/C0R0A\9U".G.Y9>,IR0#S^?
    232 ME($M@S.9UTT&9-S3GU8&/W21/0]H/^4NI">&VYH9Z>)37:1.+^T^U\4@C&,$
    233 IN7BJ"RQXF_%0(;-R4G,OGU]^/@GAY<_/=^[^A__X[O\!'V!VYL8,`0``
     1begin 640 bug_40.res.gz
     2M'XL("-;GV%,``V)U9U\T,"YR97,`M5U+C]Q&DK[[5Q0&>^ANJ:W*=W(-ZS!8
     3M#+#`SEZ\YQ[((ZW0@*TQI#86TJ_?*I(9[R19K)(!V]U-,A@9^66\,_G+__S'
     4M?_[WX7!P;P__]9]_/?SEY<O+C[\]__J7GW[X9;[BWQY.?_S'\Z?GE[O[GWXX
     5M___P]NWAUS\__B,>?_STX?]^_/+R[@5N#V\/;]X</G]X_^<_7Y[_]>GP_.GP
     6MQ[O/[W[_\/+A\^'S\Z>/7_X=[HT_'N#G].-X]?#YY[OCZZ_N]>&K/_T;[E_?
     7M?3O]\NWTR[=P^C>>_DVG?_/]Z_=_()/Y[>%??YS?=W=Z\R]_O<<KY>WA^?V'
     8M=[\=_G;X^?#XS3_YQZ_NX5MXR@_?XOD_Z?R?_)0?O[FG\'BZX/SYBCO=%QZ^
     9MNB=_ON7\MWS^VWAE_OFKGZ]/SYSO>O7M1/O\EQ.)TU].-[[&(=8?#RN/GP>Y
     10M^'Y";?CQ\'BF8(WEU3@6(#U2.]UKC&>^"K^93+5WNN-I!&<)ALY[3Q?H*X/Y
     11MRL!>&:Q7PO0YUZ;O^9>7]Z<9_/+R_NYO.+W.X_7?GG__^.OYEO$'=M<)E/#S
     12M"73S$W]_]_'W=S_#A1,"S_^<!WCFP@\CA^7P>'!OG']S=V(RG9A].@OR],>1
     13MZS1R'Y[\X=5A^C4\G2\"T3P1/?_CWM!'1K+M#Q.!TVMR^\/]PXBDIU&@9938
     14M<+H%Z!:D>W>B$T]$1PKGGR;:0[X?>0Z2Y\!Y#HKGJG@.DN<@>0XFSV6:SL,K
     15MH#T0OA_=F]SXSF?RTP`FMJ-D.W*VHV3;'Q7;4;(=)=MQ8MN??IA!F9[.J_8I
     16M$6%[QX0]\OQH\>Q'GAO#?G[[R.[,.F'7*W9](]Q^"X13W]@\";2,'+X&4F%&
     17M[KP63Q@X([>>GKX[0[?)V($P8EW#!M".R":'RRHT@$2B(V5P\=.RSRC\W"0[
     18M+C@J3Y`FT"5KZWQYDN_$!94DDR-[:9J%A$`$VH7R?`-PZC5U`3@G?5I'%3M-
     19MZIE=H$W6U&Y8<@@VTD&O*1.6'NS`I-<S8#/,:^=T*1QG6(Y,[M.G0:^:S?J4
     20M@:V2R0Z!K>]]"Z:C3$/<KTPIP[EI4J2<OILJ#=IJ78Q6CUX!9;I\!U4:].+:
     21MH$HG5Z,*N`Y<E4[7?21:X@FD[)'ITR^4[TE2C6@DJX@.I\G?"Y7JI:SA9J#H
     22MM$KU##0.EV3NV0&@QA;5Q5!7L`:ZP<+^*M1G%6(:`B`=N4@)/M8,`9#09DD:
     23M!R\T[@I4@7*VYWM1Y7*H`JEB3+10N7D.#>"9RAW9R5WPP^S(SA*]7)7%8;\J
     24M0[_0#:-C2,:8CDPGW-273>X6/#=?-C-?-I%E<[ER4(H`R))5LTLYI+B@'"*&
     25M6>#G;D`WT":+Y@)_P@9WRCUP1^#/%<!U*D(WC\LS'(EZ>T(%1TQWD[^AFE.U
     26M],@,)RYY(7<E]4$-ABOD"KJXAY5&*G.O:R-^%K$"I/5Z\!+^'4.RII*SMT1Y
     27MD4K.0<E0J.3<%N&%*CD+>W$%:K,1SG"5?'9R`;4Y@P,\.1,GP%(Q7J[3<MFO
     28MTP@8(W/,<OTNRBP/5RJS<EQ09B1GE(FI[GLZA<'_=IY.T6')1J>^CV:@S;VH
     29MW3$=13/09M&]X1]+-!>6)`MG'0V9,C?K-BG^5T34-!0!FM)=ZH4GJZ$(4#2\
     30MIBB-^N1K!N4A/Q+&@6"U<'.C.1AZ<\!YQ72%Y2,U:I6ME^8WC7%V$''V$Q5R
     31M"[QY'#W=`[3)ZF%W&0&WY^*.H]\WF1`@QQ:-H]I0+$2R##U?AESCH6]6M25Y
     32MXOP4*UM1(X7WB6F'#K0K/=G;_BG03`+>F[5++Z%6#;_)]EGG9`LX_8OYM$I6
     33MS27Y-/%.G:FHPK:8KMHKZJH!EVWV"2_4K%<9DC3.*%LDSE_6M(/PNVZYR@?7
     34M6^4M]^S0)P<\#MY2M^$:.`[AUG`<C'A#AWT>%EWS@;6=`(K,Q;)LQV5V`NB:
     35M>2TSC678B>8`<TT%M`M5CONT%Q*KF]371=XPT!X4H[N=87>TW#,,-$>\GI%-
     36M0.V.CBO9ZT'MCO[&H'9'RX#8.I;4+38I6G>,-U"TB>6PW3$9.G:#$[:TD(#V
     37M%>E@HH5I"0-(?X=\L#ONR@='P*("[&!HX3FK%J@R6[1I9F[8N5OGAIWKYX:)
     38M.JZS1YE7'$KGF)=V<2*N%S(YMSTY;%B115WL7+R=+G;.*E]*78SEUNU)">=N
     39MEB=VKILG1CT\Y=,<P-I50P_?"M;#K6'M^XD`@H\@JQY]8'OW?8!M%/8W9IAI
     40MX8-;$J`=)+`OS[(YK_TUP[A<5OL`VC+8V0]IOY0=CC:D6]F>QV]IKG\@()X0
     41M$@"[(3]T\\3.WRI/['PO3RQ+)#0I\81I"2$E7J'?'$!!L`1TA-50RRK1'/"R
     42MG],&#;0]1>V>@+)YN:B1@#99$?OC22V.V!>'D1=S(5FZU%T/O)!O!;R@380%
     43M/!&?:=T/]*J)O!M4*5S0E48@L*[[EU4H+<;O5J%&_5VK4!:=Z=RBS",";:^<
     44ME_U*-!IAC)=NN01S9%FP,.9WJ<)-I]=]#6]./!&/F-XPUIJ!&O.?\IMSYRA*
     45M:FRMF`S+/%6$NW/G!7*5.5?C._W`N8+(Q&!M2E,GREKILQ8):V#F\7)BK%6#
     46M-98[=%M10+GK^%`[8)`Z8;K,<O@+UG]RM[$\R2]8GM:DIWW]1;\>:)M!AO;U
     47M;;^>)0V;(PFD>6.73%,L&L:>@@':21@UH6#L7CN7K!5"LRL[*S0N%8'$:RLT
     48M+AD)KD[FK5ZJ0-,M$UQYV\II2>\-.`7*9/U<&I-FK[D2V%55T86<&A-?OD6,
     49MD1=C#-5WY[*N*X(&=:P/?XOCB<C-*G6US?'LM<\1RMR=ZJOSS0`$RF;Z2B:L
     50M#-6=#=4-1`?)[@V\9%F<-U2WOP"!1`:T4+\3@D6O$:U"1>^<:\5V`X<)$R/=
     51MJ$P)$^CR_I,U`>L(K+8D,U!,:D)WVQTB-!UTV^O"PIKI)O!:_!58JVM88_[V
     52M)5@;KL9:U59"8HUYV-7U+/4<,Z[DWX".-X5[BQBL:M<)""RGE7LY`J!\=>^N
     53MJV;O+H>IU1.TQ7V@U?6KW8?:R<MJ]V$[=(%VO8&AKCH=Q0RU1&ZKD1L=VQX%
     54MA)$AL0*>OG=0C8A&4S/K6:;1UYPC.]V(C'G%&(9\KP[HD_$=->!?.,H<K9&_
     55MD:R!,SUF1*&_YL&H=PW(GN@L(?5."K&S9ARUX4@\$EX=V4-9**]L*9P1XZ9U
     56M)^A871KH4W$&@#99"C:QD2E2&\_BW4")6P'>]D!K;8,(I8DCEK!"_-A`_6K&
     57M/>^L(VJ4L$"0SN83T\.TN=5(R2(QS^O>,JE11FQ2Q\(?G36NA$ML'->L2T8L
     58M83J$+34U,$^+WS0M0\FWX0E&QX0?)156AI7DL&3#E&<N^Z3/0$N^8EJ2O)9A
     59MN&*FWXO6@+/.MJ8'-YMF2I8[_[$I>[U.67<'[K/DV/3'8J@8VAQ&IF]2MVT2
     60MFTJFS/'TZ0.V.D<!X5=\>U<KO1B9#Z`M=@1&NY@:VDZ,IL9"8_4I<&;=43+[
     61MI(38]D>@5O1`3LPW+U%'4:S$18FB;U5HT-H9:Z[,?>%N2@0O951*CP?.1I!*
     62MB>WZ8FFG:6;;)/()`RN(:MD['@![HI8?E7H',RGG.C/6@782TVMM",HHNXRR
     63MHSOQZ]KR)$N1;2H&PD6O+ZF*(8@FF1%/;J)53Z!;A>Q@)Y,7(QN$]L'B]2:C
     64MFIAS@@R(6K-?,:A8=0:O3=I@H.PDY$31H/1M*;.;HO+IO;<4,8M9U_6P#TMZ
     65M&*3[.`]2^62!-)4`3;80EM6WH8/5.!-3!//>S.799NE2'Z5P@33=3ZY6Z.R(
     66M0"36G6'#TQ'[5Y:GE^PB03O;ZL\\LS?M2]V\A$%@A%N=%GI#BB=8$%A<WWSY
     67M!KEZ^&8"'%2PHF":JMZ"6;XCG&.6YQ$]<=O/VLPJ?E#"8M\%0$SEN##SXU2"
     68MJ7"-%:(Q9.8TN04X`Y74P1A/]G.5:YMBOM4;3+%J?V4AO69(@=[8N^`9C"R?
     69M*%@^D=7S2@0J>O.LJAO%S[PH6"*(E,X;V:@<'N:*)^&ES<XI%?:C(>QH^STB
     70MO8;V<G99`S*J^XV\V+W=:@=Z$HO*VMD):R"L-J)ZZOV,?Z#S8RUQ64K.HM%L
     71MFJ)+_&9>3N9^LUDP6,9_7,-_(3[,!D^9EY1M3YGGZJ5CWQGVTM((EG,4===J
     72M9-'*;K^95Y.C6!;$J9J7!7.()*T%AVC2BP7\#=?4X:/EAR6(0(`V61F+CC5W
     73MKG`<-`))P4`RJ0SPQ,04F'EHPR')MWM4H$";]:L:+BJ&@FS_K8&39"T/Y:HN
     74M:W.^+]MP4K/`;UC';U+KPNY"0=61S*8*+P1^&8B!M@R0A0F%98):F`>`C5!6
     75M=L+J5Q:&SR"C#(/18+P2'5)R7B]0T0>,P,X,V).*N$+$E(UHZHEXJ8R7(5T@
     76M]E[6-'D-U9<(N)?.-`5<NS:0Y,DNL8&\F&O9P+198905!`<K?+=M:5ES;["=
     77M\S+C5Y2+8_=CHO*0==RS5!CNQG,OVL1B#%@$9%425C<F./JX*,K2HH,*-YI,
     78M>9(5.TF`:">-R9PO,_-3BB4%:K1<6V\6RL6N9]/.6\T9FM"P9N3SJHJLRSC-
     79M#%ISE<_BI78=#HVBJK=?<OWH]IN@&I9,D.$DZ[XM4S55I72M5J4-\E[2NGRO
     80M@N6;`9FNUM4>:S7AFL1:<Y)G7'ZUFU/7G1R+(1LAJ52M%;*Q>,WF;5C%K^BP
     81M7^9K6-:UVIV"^NCY%I+0]4VD)+2$@H(4'T*?9DH&EBGA$NBC.AVP4J"VZOJ!
     82M[9&<&P@%`DD\QN4D4(8R2$(&D!(\V9QF(YL(A`!<T4W00#=?)H!$E":<`^.U
     83M#-B&_%FO"/!MD0''@?9&H.#A6@@SVV16:.)U\YE_H$I[:%3%'*)!70201=-$
     84MCP8+O,P:&CODR-;,?*T`9=;&`>]]#>?^AIF+>QMY@953*?*>/*\9CL*:*+XB
     85M%.=I`'+Z."]%C,,T0%$5Q<B*@2%#]7NV"6@)..W)?:,"I=N$@<[C&AU5^`VM
     86MMDH$37FT21L@#\<>R,4HXD9QURWBYD,Q4XBMSM'+P$G56&%AD^I'X(5364DT
     87M$XJ%.C&D)9L,TCD)4;&:YI*V84F`A#?E1'-YXZH%*3G#HVZ*XZP+=8,-D0S5
     88M+8&*AS?1=]QMJD,<?5KL+.D[VX6E]@,_E9L(2(J`9^^#TPT`S:35I48CHH*`
     89M5.TH3*-8(?HPIIH#,C6(E4C]?*;XS*7>R-":IU8C?E(CH'N"]D*!D.L2DDK$
     90MZYZMR'Q>6L@B;0)2^"@LH*RZ%X6`,[-(9L*7S)97FSWDA`BD^&2-C"2O'$30
     91M)%`Q6@**'IK1TFX0D/4)&:`!N87233/).EJP4WA2"-5$)O/F-ZATK\^0,^`9
     92M;?LN:-':I$5+VH8@_0DC^-\PA&!K6^%1^&TKE18F#4/-V&^>!&RF@2:=&3B(
     93M2])1,V:QVXX47`6\[`CWD-IR.]Q;5(@I#8;>T)B@%6($4,`3/R%:X9O\,(S!
     94MARH=<\(Q+_NVD0X!:"FWEELC>I8Y=PH@RFZDXI(KBS5_''R4'8..HF\:Q+(_
     95M0<(U4I\/41U00&/W?L"VY$[H6J'>CF0E9G0^`,>/I<-ID1_'Z9Z3M+6M.'[(
     96M.64I,9:(DX2K_<F-Z)D:KVO3'?1P`THPK^B.)QI3XCB*TH)3&W&:/#3T\=H,
     97M!M(,@61D8RP6)O$@WZ6^6*&WR+A48RSUNUBL*MM'9[W;**6%KEBY3)/KV'Z^
     98MG7?JN.A4C^68@;8ZBI9&KU(.AH/%F_D"WT8Z*VA5?L6A16NJL!DWB7R_=GN%
     99M`X=S1<M[O2W8>67&J&/#2WWV+FSIM24%:(#S4Q?0S0G&4)W4]R8"DTH]VFM1
     100MQ^EID.M;!X[3A,>.RA#K.Z_X!C,Y+V8[.SJ...JIS/04UC@60_71U:*PHV6\
     101M.Z#TN$II2GN(62-EO@FOA$V;MA6MYZADI*/U,3'3T]-2Z&FKT/EH9/IATE;C
     102MD-*TK%HCVT1DG!H$7Y88QNZ5[O.)/@^N[1,NP?$L`C^YA.`1%M^Q3UGAU[)/
     103MXY#&E`JXML7V,<N::TN3[FA7BC-&$I<,%&J3(&Q4\=QD)THF2#+\?9Q0T$RA
     104MDHD+3#4]0VAQ/P+)I$6F&J&(A))BZCS=YYL&<X*TSBIY76?-\VZC2,ZY3IY9
     105MU*2!*AJ]\6G<*D70V[1664XPCG.,)^\&6NN[H[',,IV119&K#JWFQR1.^#3)
     106M6VJKN@UJ:[2@89/<ZUH\!W+GX]&PCD_1U%M.J"[$<XW<WB3Z?(#GR>J:*""0
     107MJP;RN.#C&AN)LI$9&]ATL,A&HFP4KBW.%BG.;G[/#9#SL)+MA:V)U!CC2?8J
     108M=T6K?3)WI1Q[LA52\,_<F&TV>XK!/=!FQP4OL:[8E*9R\)K-Q-A<M]+#6A%C
     109M+H-N"Z0&[43H0(J/(7',[QK#2OC6O,4%CXB1*UVH!.4C#I:[X$>K%P]PF)+0
     110M"O3THS`,?!:GA]E)3$T;T.?B4>S7G9[+]#E,/M#G.FY!G/8/T!R,=AP(&>T1
     111M&!28NT`>MEHNC8=)3$T>CAV1)UOD28H\'I,6>5(B3UKD68L\*9$G+7+FDXZO
     112M'(M*?@)X@!QC[*0\HBA^=5S*//E0YUPC9$NCN6;B<27U&I^P4H2:/3IMMUL&
     113MKP^>ELHC9$1D-5W7YWR1/&#"A\6&J.EZML#3'L[X<!!3<9Z%\RW5%IOR]*+K
     114M]2\0+3%M@,Z=V153X58#I4CF`T>2Q4CBT[0+"$$%E>2X;*'RM'9>(4OT\.9`
     115M%.8*)70V**-5B9PP:E,W7+WH-&2UJY<GS;M)\'XU+1!!89/Q>$N!#K.CG3H1
     116M@WSUBIO9W)M`G/8`3KOT;J+O%PY47!A]E-IH.6DI0KA(*F!1/-P)NH*DD!<D
     117M2&(N,\``(DMF>G*ZMDJO+D@OR-D?;-X3X7TMRHAKQ:KF=6U)#\2@0R"='F!C
     118M"-[0XA>/8=5S)+6OU=FDQ[+:(23E/TG5U\D0Q2DZP0<SA2Y[2@8V03Y:&.KG
     119MQO))5&&LM4PN:JT=$QXVF7#,?L]$'RE1.06K1IQ4T=&`QB,=2IH_X%-Z+]4F
     120M,*HN%:V)YSI55SYB*'$U[J9;D'`H@4WHO)^"S@JD:&M=M(%3?8+80/HATKO`
     121M#]M9ID4Z`0FGB0N=<-HC;AE!HU2EC>!4E=@L^M54$^Z:H@,2D<_L22L//`AG
     122M.`[2_$RA"WF0%I;(D^FHWM@/6H*(&I+35L]ZFME$\K@WN4Z::QDT).EQSAYK
     123MY\6SRXJ/1V/0UB&A,25UISJ.,:;<(R?:BF-B29QV&-"X7SBP/D]B!UMU"XEH
     124MD*@STV(:#,;E3?G(]2]%FE<1'BG=V*&M5P%MUC-<9Z<Z]:(#L9+RBDEL7ETD
     125M'GI`#UTY)KEO%'5HEIE1A.F8)P[ZUWPK1]+,%FNA!8*BE^Z>/D\&!:DIQ$XV
     126M`]XY0*E]MW\A@1:!-K&CRV)4(I.>?-:JJ$)X4K<%$6O%F>;*;0O+RZHO)\=0
     127M)&SCCC&LNG*1M#%U9P[(+?ER,HPM"K9$V3@*6U)QGNOG1PNVI0=;*RDX8A=Y
     128MH;#EG,!F"MD+),O_0(NU@1J'X_`V!:MQ_@$/P8M%]H+.[0ZS3CYWA0#>)B5L
     129M"D<<9ZFZW]5*KJI-CO18S#NA63UUUCGVV_VVJ8%$,>$CL*DAR2G)!=5\I"\W
     130M\NU3<B9%6TSN3PNSSE7M.T$KJ6?=,)"597'(I]4*WE*X><2(T]3L0N4ZJ*?1
     131MB6#;J4I7M1.UB8:FBH3UG+*?>0D&*8SOYX,[*F>G_WE&JPTK\'3&X(0$H8<(
     132M;]'Q+EG;@U0R3NB9:DB0[XPJ?2T348S(CRY<S[@Y4@G*LK7#BK228.I(T(S)
     133M/2OXQ4&G8Z9T`%4N3N@74RA%",4(XP68!M8K--=_X+W!<B]M`0Q"`$;9A@,G
     134M'8U<-N1`N%9Q0KT9@T]'MQ$1:,8C\L*J*9'4P"8Q&$77B1-+&.D8-J+!0W:(
     135MB"6*]=1"OX*W)+7DU"U:KY%-GPGO*Y;^@_V<>%^U[YOWD.)]'9>NXP2W5`[X
     136MP%R0?),/<Y^L:@D_'B`YJ9F(#-A]OB\#=E\PZ>GWZAFT[Y/3:'_6,SDYE_;7
     137M%)-37C]JMJH].7)*;+%D7WNR-],3D>.%[YT19[\0O/@CO<]CC$;V<30%X(G3
     138M845,B9\!J+TK>JQQ\N:LJW/QDI>S;G\A+;&T/AF'E^,@HYB/9&!.$-T("[3%
     139MN92YJ41\NUF-$NXI60+6C/,-*^<9-T('@6$OBTL1@A_I&)(%8[Y]V(JW:*SA
     140MH(U)B_S.*EKW8V%>G/`0I`WIM5*AX(-L`O'@_5.;VEXH384\"Z_;<.KQC;()
     141MVH/^9!NR5'B4)YYH^.,I*_*[!TR/$*\[A6[]B*#=*_<S=82^Y+5$6^A5"/VH
     142M7\Z]8UOX2TY+-(4?1=?''%"(-],8B/0=)WY,'9LK#(#8604L[F&3$!%X:$4+
     143MKJ[5\D7J;"U1Z3*:R89.J7.67";,4EQ/F.&2C;I9KB6;SDO6Z"/I+UQ^V%PW
     144MH*+=@XBF*-OE/(30O!]E:2'S8^2Z,13MNB:HDANE/83/N!=)I#UHL(P(2VRS
     145M*6V*(2N^MS-71->)["1)F#LBUS4$EP/1`-S/!KR!%"AR=4B!:U76^,:N1+:'
     146M3`Y2YEY^LO:.XIJ;-AE_-3T1+_;3P26@G86)5CM?J/.11$Z!.VMCXXI_P!7;
     147M?J;?%1FQ$8,4((-A*,%'54:$DN$!3M*!SV'4#$>:4U0Q15EBCH/Z3(GUT8$D
     148MJP9X'C%14AO+>O,F7V`JBT[.)06EE)&HIJ7LU8308U$+S`A^/0R^U,+K\VVF
     149M4'J9@7K:;4V$/17Y1YD260856N5HK#:4Y8928UK?$S)_/6&C!<FK&_>4G#7P
     150MZ7F^>-3C-`Z73=GBKG4J9@;]6;:/7=E&)MN!RC;ND>UZ(2*1)/X"\(%@?[M_
     151M`P?*M7!5C+IDR1F01(F_2.1*JQ-6;HQDZE`5%]TDVO3IP`(B8M[QLC3O_/0W
     152MRR]O?B(RP+OHF\(^TI<SQX0WQ@,9<1)_=]\:F8I.S16#L8YNQX.X)X"'&7-`
     153M>.CI]J7E099"(\2K$,;RF-,D,*3J]/(PDH0D/9E-\\X+$&<H&J@61EUN[6@Q
     154M9C;$J3\+B/;R@6YD3>(PMT"7XR19HPD$&C[0</+VD,3/=IL$#[UOL]D,2M0T
     155M<5)5B]3<JF(E(DE*M"/P(@6^F,21HL<PJ^5X,O7_2"4B87T7KP\LN4/L2QU#
     156M<IJI:&ZU2`KPP]@Z*0F1RQTZC00B-A7Y2?/M8>GMT7X['@PQ!^9D9=+4#SXA
     157MN^F:JU-)%`3*:D%667+;\\"QK9;P71C?J44*A$0T>!>Z+F*[($)Z,'.!&"GL
     158M4X=9'&$F7-UVJ!3]8FYS=:E:;`X=4'5:-SZ@##`2HOY#/GHEA]2VF.)-*G^,
     159M9CKUY;#B\N=C7)+#3I<_\R]'*9??TQ1YQ"%F0)$(KC($5RPS"G$5R8F..KC%
     160M84BZ4ZE`+VVG?Y[U!Z,6_/,9`%-:*2%W$N.S#YFNYL[X0M0J=]/R.@)W1B4D
     161MW<+GSLYK>\=];B(OXE%D54N)M^(H;N1HPB^1D=F^YSD_S8W8KJ7XB6AT=088
     162M0_!D95D%-B(W6>-IJZFJ<@D90-7F(NOZ3F_3"RYOISL%V1GJ^Q2Y[RGR=KL.
     163MBWGV/\LM(0'=)G_%W'E_]=PQ+FW,7QD69-_5_Y>%!=D;*I^LX%%U(Q:\JDIB
     164M7F6G5Y[%D6DW\LJS-S(#EE=.1DI1+[><M):23)R<+`M0$<H6]":-4_K]JQUS
     165MQC_2-,^9;5!LXP&$@CGY(H:ESE\.(B&%WV0@)C"SC`?EG+?,V+&@6$&R\$3R
     166MR=,Z1TAM'G?I")`J'YFKXG%2)N4HTM`@:D(D0]X1R+`D$/,+")F4HXB9%5H[
     167MZC1^V^A-;M()4'J$_-8EQY87T#:P-2=GB880^B$2_8!4J:L>HT663YCJJ\^R
     168M[(08@I/E1AP%0`]1\;9:!=+&)X_XLC57EMI*D&/1*VNJZ]&.^[2XOD1!JEM*
     169ML6U5'`S,1.%6&AM"V`<W+]="R8B^\#Q!87&W+,VD`[,6H%X7??)*U:VBSV1"
     170M&D<+-LJ+`)24MDBIK@TQD"$&,L1`)V/,0K,ABL]CU!KDD4M[AF@H7#VA;9[X
     171M((UL`X;0"R[46@B=NIG5:T+H;*19I;-(HFA44=EUM#H-M;/O:'5V4]"49,HJ
     172M9U8VC9V;3(#)UV5.R;ZI,$HX@;$/U4>$ZBN$*DY@KDM0W3V!*V5/X@Y.4XBY
     173MGM)1C>PK/?NLC/4QH$U61EK"8M4\R2?T]D@/:!/U^$H+;T]X4@S=N&)'Y<%B
     174M:*`R&25X>JM^,]!EFM$LXR[XS:78-ND6N:QR22X+S4GE689B67]2MF?,C9N0
     175M-C&GOS2TQ!P1SL#9JS*=Q?I8]]GSVHOU21Q`,T=1L"0V0F/B")(R+2N,*27E
     176ML_&JE!D3J8R0/',,<X_A:C15RZ%=1]/(844."[<*!<S+=6BZ".H$32-[`[*G
     177MP_M`,DC7)"/YQIIN2T);@C1!.EB]5[0CH3$D-Q4N,[2:KQ7+CK$4#*3=2%"K
     178M65O'EQ^B:TB&SW&]H"P-WQ74^&)$U"!+%8GJIYW)R*';V=5)1E)Q)1[L#YWH
     179M+I/HKAR/!@+53<Z0OKI)MMJWS)#;K:_+L1=_F?IZ3IQ$9$GNT4B4I7U35'C-
     180M[/(I8@SFSF*[,EU<CJ7'Y&7^6.%E,V.A3AECCT,:-%9P-+MBU"(^`T0<_PM'
     181MXZS,`U_ETWC`QR].YQ9(UG=G#KPXWBUXHQQXL>IBW<X4D@;'Z7-<T>)"Y]/W
     182M1"=0!&\M,S!-X^DWH"VZ9Z>)O&B@?%!`V,PV!&-F$YU9O=N--$;N`)<12.[)
     183MTA>_W+FE^BV+[^V!@PC47Y0O+[Y7<.@7ZWA*KJ@R&&L)W\.2%1AV6#(;QXLW
     184M=^)%3&/N2'@![6PA<-'#71FN5;'0C<,$`S::$T/SON7ES0S)M9G]$LS,&9U'
     185MU<%=@D8ZV2>Q/]]2>(EM+=\B/#[$6.CM'NU4_M9@$'JH[Z;*.;;%$@AZ"?!V
     186MX#V)DA+6$R4BA"<<Z8:?#-MB]@C,\E>V"(SMM4'V6,=/2\J?V$,?+AX[MUQ5
     187M>BA\%]F-2@\E&HJ=",.?A2`2\B4&.4#,YBXTA*RDXTO\'AUM):YUM&5`(0XP
     188MBP&F]F$CO,6$:?M^ZA5Z)UKYC76],V4;R1SISC2RK6^?3!OMM%3AV..%F_4_
     189MIE4]JU.6I'=Q\PU=N]06+^XMJRTI[Q2M17^#W&Y)R0!$OQ,P0\,!$9<550Z<
     190MLXOU4>I%E-+_PF#7"[9$H_E4,L+LX,5A81([>R$LI"S)!$[@3&6IO>?,I;]Z
     191M(K-5P5F9R*D[$IGSMFFY-A-7L@7]1QM9D4I+PC[>BB%C2X7)T#1#R)"&>B)0
     192MWYGBR=WLR5)+H$C$H?'(#/B)`O\Q$`:W(S_WD-]E4"Z#Q&-A6<G$]-VP7V64
     193MG@O34QGM8P#(EM5QCVSMG-[2[>K8/+V,25%9+[C1;)]>*^EBO39+CDQHYI@C
     194M3.W$G-PDMPMSC,5J*I-K4Y^WVD!7.AOH9D4T)EA@++Q8V3)G_JH<(2]6WBQ'
     195M6`W=;^4(R3C1`%33`&0:#['3^F95*&_16IL=QKYCKGH-GI?&C[63[WYB^7F6
     196MDZBBSD*.(KU\((,%NCT#&6PGFVWRPS'(P_NP,K@WA3A8K<8+2@R;5S`P&Z*0
     197M['$/1_SM0%N<ML2*2=%BQ@+M&`0.>T6TO2L9J["2J\I%-(6WQ]N(:.B**%HB
     198MJO*P/]+?MSO'"K0=9^;Z'&L]6EEN`Y6X3NI1M-K%:Q/(R,Q24^BNT2UN](AR
     199M8#V5G)A*OBB!#+0[Y9GK\L?5*DT^B/92]6F1>K0:00987N">5/D5)I%L#ON3
     200M/M7M:.[#R`;7FU&;G-?;(,8B.T3'B8U[)Q8'8H+VZIEU9A(/E(\Z8[RZ;&A!
     201M^.#2[FDJ%TP3B^W(%%E[IX?]%8':KS(N-\\C-H32]L;NDMW<^4M;^ZD>E8Q9
     202MZ,YH"'?F_:I?S_O)O!EA*AI(B[OX@7<#;0)[O>$W*FS)+SQA8G38.7M=+WH5
     203M6TTK"@X[)P?,4SC@C8,2:SO?_/)A6(7%=1`VA<%'(#?S,7-!HMDJ/_<D:@37
     204MF(M@'2VUQ5R,;T8AA[A@+MA8K&Y3\JVTK_M[QBLM%MZF9[R:N_NX),3GV6KH
     205MJF4YK=:V4.O&V'$7$IG_/=J*UP'7M)68<;G?#WU:,>.QV_4I;[3T'WX2<R?"
     206MHU7T6+&TF?<?UBBVI9"OP.S!*]$GL;^9:1]@HYUD:"Z$9TV"5>[20U#%JTT.
     207MK>U9)D<*.:D\UW16S?["4DV;>O(A^<_*-S7)VG0B_.Q+#]?4+4QW&SRQ-)%(
     208MMJPFF0J;D\/U"FGU3IHPI36EA9&?HJ2%_.R5UN4=RTQ:A+M.B_YL:E&KY4Z:
     209M(:D;M?&.]HVZT$:^R'WY`L^]Y->EKDSN;(<2V5>,A+*$W+SG8&<:KV:CL:U?
     210MP_%&4BA+T,U&H^[EJ-?A8W`4;8[,IIZ;-`+6TF^6V)?&*0O-$J39"!%0;"PG
     211MAN5]X7[Y+EO\J[7G[X%MA4X*YT7C'(-^."9BARM2+MK>SZT.0JQHT-<KPNJR
     212MJZL-D2T60-$+(.-BV>NI5FL?E+EY+$IQJ?+9[.74?>*JW?-25L35\".XP^Q9
     213MANXWO!KIU;DQ#J_V<9JOPJFY:V\=I^-[*[(G<=K\9JH*]_6-5:N4=I7;7*W4
     214M%QW<S#J,;M"MF>@\^[TX']8C,NX_H[@'3[&B=MOZ"SL%*B^R+78*D!X+9$=`
     215M5VRH:UK[`GYZG0LK/0*DMP*9RTQ64RD=KQ;&NKQ:V8J=G+E]KMQPHUT=PW&A
     216MG4#DLP>RX0[;L*ZK>SX";=E60/I^I:LT'+GJFU%[(T;DZ;Q$&IJ1)'3P;<IN
     217MP_'&&S<&J]C%)$RGV8#IU=LUAN-WV:XQN.YV#;($<6S.&<C)\_@NM'F-/:!-
     218M(-S/$J%*0QBYH!;67J=LL(I?*VGF!ET!;I>TK*XK*1`NK0#N@1D@PDA1C,Q?
     219MFMGQXDM]5H\8$5P--I3VG*\BH>2/FZ$T3AJTG@[><5L^.A_79QL':^_=-6[3
     220MX.U#_YJ[ZHF[.OAH`"##P*Y"8O?D272(B73EGHPYC^%9:^W@=9SEY_B"W29;
     221M#>FA_A5OTW%1>REQ*X=@[OB9@QIRFPYJ*D07Y#89KT?[-K4+9^9>W-;IT):W
     222MZ;#$PTA1($'/@@?>R&TZBC!OJTKY1I(N'0)?YZT7'ZZ3<Q#GZZQ=?HB&UT3!
     223M';U%GUPWC`.['OF*5]>ECY($?>G1RNM%CX^NB5@E?7%]D/3Y=7F2WQ00X66G
     224M+D=ZV:O+B5X.ZC+5X7S#S)0!QHM)7(ST8A87$[U8Q,5,+XHBW_C6@)=17&7L
     225M08`K,L$\-1W@94<?C/1!KQY,],%`'TSTP:@>S/3!1!_,]$$FG7$<N,IYZG7D
     226ME5RLXB)5F#Q%6KCRD)L%$&&%J3Q<^>3#-0/^$:5QTDXX6-)/7TF/]5`2_3M.
     227M,VEUKW0Y%5Q.`=3%V90]TD\>X^U4'N)^>2M6*J9OD(\'/_F?VO5Z?'MX_ON[
     228MC[^_^_GYT\N'SY\_O+^;?K_'>]S;PQ^?3Y?OOCS__L=OS__[]>YTVY___'#W
     229MVX=WI]M_^>WY]X^_WK^>?WMY?W__VM^?GC\"!7\)A>GUBD98H7%Z[VM&3E&(
     230MFRET6$C+!*:G5IC(E]"P9%F`P,OI?Q_A33__W/XP<__3#PX>JJL/C>^BCPSJ
     231MD=,=2R\93EB"GT_+RQ[FF<SK-LQQ:&_>'!X>9A0>GK\</OWK\.7EW:?W[SZ_
     232M/_SZ[LOS%QS\T`72/*#]E+OPFAAN$.63,70A-;VT^UP723".$8WBJ2YVX&W&
     233A0X7,RDEQO'QY^<=)""]_?KES]S_]VP__#[?P^?<8#`$`
    234234`
    235235end
  • Tst/Short/ok_s.lst

    rb169a9 r08a6e5e  
    1 ;; Test which should pass shifted exponents
    2 absfact
    31abusalem
    4 alexpoly
    5 algebralib
    6 alias
    7 allres_s
    8 arcAtPoint
    9 assprimeszerodim_s
    10 barei_s
    11 betti_s
    12 bug_1
    13 bug_10
    14 bug_11
    15 bug_12
    16 bug_13
    17 bug_14
    18 bug_15
    19 bug_16
    20 bug_17
    21 bug_18
    22 bug_19
    23 bug_20
    24 bug_21
    25 bug_22
    26 bug_23
    27 bug_24
    28 bug_25
    29 bug_26
    30 bug_27
    31 bug_28
    32 bug_29
    33 bug_3
    34 bug_30
    35 bug_31
    36 bug_32
    37 bug_33
    38 bug_34
    39 bug_35
    40 bug_36
    41 bug_37
    42 bug_38
    43 bug_40
    44 bug_41
    45 bug_42
    46 bug_43
    47 bug_44
    48 bug_46
    49 bug_47
    50 bug_48
    51 bug_49
    52 bug_5
    53 bug_50
    54 bug_51
    55 bug_52
    56 bug_526
    57 bug_53
    58 bug_54
    59 bug_55
    60 bug_6
    61 bug_7
    62 bug_8
    63 bug_9
    64 bug_ainvar
    65 bug_barei
    66 bug_barei_2
    67 bug_c_dp
    68 bug_chin
    69 bug_chinrem_mat
    70 bug_charseries
    71 bug_charseries2
    72 bug_diff
    73 bug_division
    74 bug_factorize
    75 bug_hilbstd
    76 bug_homog
    77 bug_idlen
    78 bug_interpol
    792bug_misc
    803bug_minpoly
    81 bug_mres
    82 bug_napMultT
    834bug_newstruct
    84 bug_newstruct2
    85 bug_newstruct3
    86 bug_pd
    87 bug_presolve
    88 bug_primdec
    89 bug_qring
    90 bug_qslimgb
    91 bug_qslimgb1
    92 bug_quotient
    93 bug_radcon
    94 bug_reduce
    95 bug_rp
    96 bug_ring_quot
    97 bug_sres
    98 bug_sres_betti
    99 bug_sres_cyc5
    100 bug_tr132
    101 bug_tr134
    102 bug_tr158
    103 bug_tr159
    104 bug_tr161
    105 bug_tr186
    106 bug_tr224
    107 bug_tr225
    108 bug_tr230
    1095bug_tr237
    110 bug_tr239
    1116; do not try bug_tr276 without 2.2 GB RAM free
    1127; bug_tr276
    113 bug_tr288
    114 bug_tr300
    115 bug_tr306
    116 bug_tr307
    117 bug_tr315
    118 bug_tr316
    119 bug_tr319
    120 bug_tr329
    121 bug_tr346
    122 bug_tr357
    123 bug_tr359
    124 bug_tr376
    125 bug_tr379
    126 bug_tr380
    127 bug_tr387
    128 bug_tr404
    129 bug_tr485
    130 bug_tr489
    1318bug_tr501
    132 bug_526
    133 bug_532_s
    134 bug_538_s
    1359bug_554
    136 bug_540
    137 bug_tr549
    13810bug_tr559
    13911bug_tr587
     
    14113bug_tr604
    14214bug_tr627
    143 bug_tr628
    14415bug_tr630
    14516bug_genus_etc
    146 bug_x_i_j
    147 brnoeth_s
    148 charseries
    149 charseries_p
    150 countedref_s
    151 classify_s
    152 cyc5_lp
    153 dbm_s
    154 deform_s
    155 decodegb
    156 dim-test_for_rings_over_integers
    157 div_lift_s
    158 ecyclic_5_32003_lp
    159 ecyclic_6_32003_lp
    160 ecyclic_7_32003_lp
    161 eliminate_1
    162 eliminate_3
    163 eliminate_4
    164 eliminate_5
    165 eliminate_7
    166 elimlib_s
    167 equising_s
    16817facstd
    169 factorizep_s
    170 factorizeQ_s
    171 factorizeQa_s
    17218fermat_gcd_1var
    17319fermat_gcd_2var
     
    17824fermat_gcd_mod_3var
    17925fermat_gcd_mod_4var
    180 fetch_s
    181 fglm1_s
    182 fglmquot1_s
    183 finduni_s
    184 finvar_s
    185 finvarlb
    186 fpadim_s
    187 gaussm_ex
    188 gcd0_s
    18926gcd2test
    19027gcd3primtest
     
    19330gcd5primtest
    19431gcd5test
    195 gcdp_s
    19632gcd_univar_p_s
    19733gcd_univar_p_alpha_s
    198 gerhard_1_32003_lp
    199 Gonnet-83_32003_dp_slim
    200 Gonnet-83_1_32003_dp_slim
    201 graphics
    202 groebner_s
    203 highcorner_s
    204 hilb_weights
    205 hnoether_s
    206 homolog_s
    207 hres_s
    208 imap
    209 intdet_s
    210 intersect_s
    211 invar
    212 invarlib
    213 janet
    214 jmbtest
    215 latex
    216 lift_s
    217 liftstd_s
    218 lres_s
    21934Katsura_3_32003_lp_slimgb
    22035Katsura_4_32003_lp_slimgb
    22136Katsura_5_32003_lp_slimgb
    22237Katsura_6_32003_lp_slimgb
    223 minor_s
    22438modular_s
    22539modstd_s
    226 modulo_s
    227 monodromy_s
    228 monomial_s
    229 mora_10
    230 mora_5
    231 mora_6
    232 mora_7
    233 mora_9
    234 mres_s
    235 ncfactor_example2_7FromMaster_s
    236 ncfactor_example_all_procedures_s
    23740ncfactor_facNthShift1_s
    238 ncfactor_inhomog_s
    239 ncfactor_koepf_s
    240 ncfactor_koepfShift_s
    24141ncfactor_landau_ex_s
    24242ncfactor_multipleFacsSameTopAndBottom_s
    24343ncfactor_nthweylringalt_s
    244 ncfactor_tsai_s
    245 normal
    24644parallel_s
    247 paraplan_s
    24845pAddManyVarsManyL_s
    24946pAddManyVars_s
     
    25350pMult_s
    25451polylib_s
    255 primdec2
    25652primdec3
    257 primdec_s
    258 primefactors
    259 primitiv_s
    260 qhw_s
    261 quotient_s
    262 rcyclic_13_32003_lp
    263 rcyclic_14_32003_lp
    264 rcyclic_15_32003_lp
    265 rcyclic_16_32003_lp
    266 rcyclic_17_32003_lp
    267 realclassify_s
    268 realizationMatroids
    26953reesclos
    270 rInit
    271 reduce_s
    272 res_s
    273 resjung
    27454resources_s
    275 resultantp_s
    276 ringlist-z
    277 ringmaps
    278 ringmod2m
    279 ringmodn
    280 ringsum
    281 ringutils_s
    282 ringz
    283 rInit
    284 schwarz_6_32003_lp
    285 schwarz_7_32003_lp
    286 schwarz_8_32003_lp
    287 sheafcoh_s
    288 sing_s
    289 slim_invariant_elim
    290 slimgb_s
    291 slimgb_rcyclic12_32003_dp
    292 slimgb_rcyclic13_32003_dp
    293 slimgb_rcyclic14_32003_dp
    294 slimgb_rcyclic15_32003_dp
    295 slimgb_rcyclic12_32003_lp
    296 slimgb_rcyclic13_32003_lp
    297 solve_s
    298 spcurve
    299 spectrumlib
    300 sres_s
    301 std_s
    302 string
    30355tasks_s
    304 test_c_dp
    305 triang_s
    306 tst_s
    307 waitall
    308 waitfirst
    309 zerodim_11_32003_lp_slimgb
    310 zerodim_12_32003_lp_slimgb
    311 zerodim_13_32003_lp_slimgb
    312 zerodim_14_32003_lp_slimgb
    313 zerodim_15_32003_lp_slimgb
    314 zerodim_16_32003_lp_slimgb
    315 zerodim_18_32003_lp_slimgb
    316 zerodim_1_32003_lp_slimgb
    317 zerodim_20_32003_lp_slimgb
    318 zerodim_23_32003_lp_slimgb
    319 zerodim_24_32003_lp_slimgb
    320 zerodim_26_32003_lp_slimgb
    321 zerodim_27_32003_lp_slimgb
    322 zerodim_28_32003_lp_slimgb
    323 zerodim_29_32003_lp_slimgb
    324 zerodim_2_32003_lp_slimgb
    325 zerodim_30_32003_lp_slimgb
    326 zerodim_31_32003_lp_slimgb
    327 zerodim_33_32003_lp_slimgb
    328 zerodim_3_32003_lp_slimgb
    329 zerodim_40_32003_lp_slimgb
    330 zerodim_41_32003_lp_slimgb
    331 zerodim_42_32003_lp_slimgb
    332 zerodim_43_32003_lp_slimgb
    333 zerodim_45_32003_lp_slimgb
    334 zerodim_46_32003_lp_slimgb
    335 zerodim_4_32003_lp_slimgb
    336 zerodim_51_32003_lp_slimgb
    337 zerodim_54_32003_lp_slimgb
    338 zerodim_57_32003_lp_slimgb
    339 zerodim_58_32003_lp_slimgb
    340 zerodim_59_32003_lp_slimgb
    341 zerodim_5_32003_lp_slimgb
    342 zerodim_60_32003_lp_slimgb
    343 zerodim_61_32003_lp_slimgb
    344 zerodim_62_32003_lp_slimgb
    345 zerodim_7_32003_lp_slimgb
    346 zerodim_8_32003_lp_slimgb
    347 zerodim_9_32003_lp_slimgb
    348 Zdim_s
    349 ZidealAdd_s
    350 sba_s
  • doc/C_CPP_StyleGuide.md

    rb169a9 r08a6e5e  
    2121There may be collisions with other existing and widely-used style guides, e.g. when including `std` sources. Such code _may be used as it is_, i.e., it does _not_ need to be wrapped in code which conforms to the style guide at hand.
    2222
    23 See also the [Build System description](@ref bs_page) and the [Legacy C programming style guide](@ref legacystyleguide).
     23See also the [Build System description](@ref bs_page) and the
     24[Legacy C/C++ programming style guide](@ref legacystyleguide).
    2425
    2526## Naming Conventions
     
    176177 * Difficult and more involved algorithmic parts of routines are documented directly  before or between the corresponding lines of code, even though these comments may not appear in the Doxygen-generated developer's manual.
    177178 * Even harder algorithmic parts must come with a link to related literature which clarifies the respective passages of the algorithm.
     179
     180Some doxygen-related links:
     181 * Manual <http://www.stack.nl/~dimitri/doxygen/manual/>
     182 * QRC: <http://www.digilife.be/quickreferences/QRC/Doxygen%20Quick%20Reference.pdf>, <http://www.sztaki.hu/~szcsaba/software/DoxygenQuickReference.pdf>
    178183
    179184## BNF Specification for Naming Conventions
  • doc/How-To-Contribute.md

    rb169a9 r08a6e5e  
    2020 * the Singular test suite passes without failure. [Instructions on running the test suite](Running-test) is available on this wiki.
    2121
    22 A mirror of the repository is available at <git://www.singular.uni-kl.de/Singular.git>, with a web interface
     22@note Almost everything GitHub-related can be done from command-line with the
     23following tool <http://hub.github.com>.
     24
     25@note A mirror of the repository is available at <git://www.singular.uni-kl.de/Singular.git>, with a web interface
    2326at <http://www.singular.uni-kl.de/git>
    2427
  • dox/Doxyfile.in

    rb169a9 r08a6e5e  
    3939# control system is used.
    4040
    41 PROJECT_NUMBER         = " [$(git_version)] "
     41PROJECT_NUMBER         =$(git_version)
    4242
    4343# Using the PROJECT_BRIEF tag one can provide an optional one line description
     
    824824# exclude all test directories for example use the pattern */test/*
    825825
    826 EXCLUDE_PATTERNS       = */test.cc
     826EXCLUDE_PATTERNS       = \
     827*/test.cc \
     828*[Cc]onfig.h \
    827829
    828830# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
     
    20482050SEMIC_PRINT \
    20492051SI_COUNTEDREF_AUTOLOAD \
    2050 SINGULAR
    2051 
     2052SINGULAR \
     2053SINGULAR_4_1
    20522054
    20532055
  • dox/Makefile.am

    rb169a9 r08a6e5e  
    2323if HAVE_DOXYGEN
    2424
    25 doxyfile.stamp:
     25## doxyfile.stamp:
     26html:
    2627        $(MAKE) doxyrun abs_top_srcdir="$(abs_top_srcdir)" abs_top_builddir="$(abs_top_builddir)" \
    2728        DOXYGEN_CONFIG="$(abs_srcdir)/Doxyfile.in" DOXYGEN="$(DOXYGEN)"
    28         echo Timestamp > doxyfile.stamp
     29##      echo Timestamp > doxyfile.stamp
    2930
    30 CLEANFILES = doxyfile.stamp
     31## CLEANFILES = doxyfile.stamp
    3132
    3233# all-local: doxyfile.stamp
    3334
    34 html: doxyfile.stamp
     35## html: doxyfile.stamp
    3536
    3637clean-local:
  • dox/footer.html

    rb169a9 r08a6e5e  
    55  <ul>
    66    $navpath
    7     <li class="footer">$generatedby<a href="http://www.doxygen.org/index.html">doxygen</a> $doxygenversion for Singular <!--BEGIN PROJECT_NUMBER-->$projectnumber<!--END PROJECT_NUMBER--></li>
     7    <li class="footer">$generatedby<a
     8href="http://www.doxygen.org/index.html">doxygen $doxygenversion</a> for <a href="https://github.com/Singular/Sources/commit/$projectnumber">Singular <!--BEGIN PROJECT_NUMBER-->$projectnumber<!--END PROJECT_NUMBER--></a></li>
    89  </ul>
    910</div>
     
    1112<!--BEGIN !GENERATE_TREEVIEW-->
    1213<hr class="footer"/><address class="footer"><small>
    13 $generatedby &#160;<a
    14 href="http://www.doxygen.org/index.html">doxygen</a> $doxygenversion for Singular <!--BEGIN PROJECT_NUMBER-->$projectnumber<!--END PROJECT_NUMBER-->
     14$generatedby &#160;
     15<a href="http://www.doxygen.org/index.html">doxygen $doxygenversion</a> for <a href="https://github.com/Singular/Sources/commit/$projectnumber">Singular <!--BEGIN PROJECT_NUMBER-->$projectnumber<!--END PROJECT_NUMBER--></a>
    1516</small></address>
    1617<!--END !GENERATE_TREEVIEW-->
  • doxy

    rb169a9 r08a6e5e  
    6363INPUTTXT=`echo "$INPUT" | sed -e 's@[ :]@_@g' -e 's@[\\\/]@__@g'`
    6464
    65 OUTPUT=`mktemp -d -q "./DOXY.$INPUTTXT.XXXXXX"`
    66 if [ $? -ne 0 ]; then
    67     echo "$0: Can't create temp dir name, exiting..."
    68     exit 1
     65OUTPUT="./DOXY.$INPUTTXT"
     66# `mktemp -d -q "./DOXY.$INPUTTXT.XXX"`
     67#if [ $? -ne 0 ]; then
     68#    echo "$0: Can't create temp dir name, exiting..."
     69#    exit 1
     70#fi
     71
     72if [ -d "$OUTPUT" ]; then
     73    echo "Directory '$OUTPUT' exists! Deleting..."
     74    rm -Rf "$OUTPUT/*"
     75else
     76    mkdir -p "$OUTPUT/"
    6977fi
    7078
  • kernel/GBEngine/GBEngine.dox

    rb169a9 r08a6e5e  
    11/*! \page kernel_GBEngine_page GB-based and related algorithms
    22
    3  This sub-package of kernel (\ref kernel_page) contains
    4  Groebner and Standard basis as well as syzygy and resolution algorithms.
     3 \brief This sub-package of \ref kernel_page contains Groebner and Standard basis as well as syzygy and resolution algorithms.
    54
    6  Main internal structure: kStruct? LObject, TObject?
     5 Main header(s) in `/kernel/GBEngine/`:
     6 - \ref kernel/GBEngine/F4.h
     7 - \ref kernel/GBEngine/f5c.h
     8 - \ref kernel/GBEngine/f5data.h
     9 - \ref kernel/GBEngine/f5gb.h
     10 - \ref kernel/GBEngine/f5lists.h
     11 - \ref kernel/GBEngine/janet.h
     12 - \ref kernel/GBEngine/kInline.h
     13 - \ref kernel/GBEngine/khstd.h
     14 - \ref kernel/GBEngine/kstd1.h
     15 - \ref kernel/GBEngine/kstdfac.h
     16 - \ref kernel/GBEngine/kutil.h
     17 - \ref kernel/GBEngine/nc.h
     18 - \ref kernel/GBEngine/ratgring.h
     19 - \ref kernel/GBEngine/ringgb.h
     20 - \ref kernel/GBEngine/shiftgb.h
     21 - \ref kernel/GBEngine/stairc.h
     22 - \ref kernel/GBEngine/syz.h
     23 - \ref kernel/GBEngine/tgb.h
     24 - \ref kernel/GBEngine/tgb_internal.h
     25 - \ref kernel/GBEngine/tgbgauss.h
     26 - \ref kernel/GBEngine/units.h
     27
     28
     29 Some importat data structures and classes:
     30 - \ref skStrategy
     31 - \ref sLObject
     32 - \ref sTObject
    733 
    8  TODO: list those algorithms... and corresponding interpreter functions...?
     34*/
    935
    10 */
     36// TODO: list those algorithms... and corresponding interpreter functions...?
  • kernel/combinatorics/combinatorics.dox

    rb169a9 r08a6e5e  
    11/*! \page kernel_combinatorics_page Combinatorical algorithms
    22
    3  This sub-package of kernel (\ref kernel_page) contains
    4  combinatorical algorithms.
     3 \brief This sub-package of \ref kernel_page contains some combinatorical algorithms.
    54
    6  TODO: list those algorithms... and corresponding interpreter functions...?
     5 Main header in `/kernel/combinatorics/`:
     6 - \ref kernel/combinatorics/hutil.h
    77 
    88*/
    99
     10// TODO: list those algorithms... and corresponding interpreter functions...?
  • kernel/fglm/fglm.dox

    rb169a9 r08a6e5e  
    11/*! \page kernel_fglm_page FGLM algorithms
    22
    3  This sub-package of kernel (\ref kernel_page) contains
    4  FGLM algorithms.
     3 \brief This sub-package of \ref kernel_page contains some FGLM algorithms.
    54
    6  TODO: list those algorithms... and corresponding interpreter functions...?
    7  
     5 Main header(s) in `/kernel/fglm/`:
     6 - \ref kernel/fglm/fglm.h
     7 - \ref kernel/fglm/fglmgauss.h
     8 - \ref kernel/fglm/fglmvec.h
    89*/
    910
     11//  TODO: list those algorithms... and corresponding interpreter functions...?
     12 
  • kernel/groebner_walk/groebner_walk.dox

    rb169a9 r08a6e5e  
    11/*! \page kernel_groebner_walk_page Groebner-Walk algorithms
    22
    3  This sub-package of kernel (\ref kernel_page) contains
    4  Groebner Walk algorithms.
     3 \brief This sub-package of \ref kernel_page contains Groebner Walk algorithms.
    54
    6  TODO: list those algorithms... and corresponding interpreter functions...?
     5 Main header(s) in `/kernel/groebner_walk/`:
     6 - \ref kernel/groebner_walk/walkMain.h
     7 - \ref kernel/groebner_walk/walkProc.h
     8 - \ref kernel/groebner_walk/walkSupport.h
    79 
    810*/
     11//  TODO: list those algorithms... and corresponding interpreter functions...?
  • kernel/kernel.dox

    rb169a9 r08a6e5e  
    11/*!
     2 \page kernel_page Several involved mathematical algorithms (kernel)
     3 
     4 \brief Some core mathematical algorithms
    25
    3  \page kernel_page More involved mathematical algorithms (kernel)
    4 
    5  Algorithms using \ref libpolys_page and other mathematical features for Singular.
     6 These algorithms rely on \ref libpolys_page.
    67 
    7  The files in kernel/ directory are combined into a internal library
     8 The files in `/kernel/` directory are combined into a internal library
    89 kernelCommon, which contains the functions (e.g. \ref rChangeCurrRing in \ref kernel/polys.h)
    910 and data members (e.g. \ref currRing in \ref kernel/polys.h)
     
    1920 - \subpage kernel_linear_algebra_page
    2021 - \subpage kernel_oswrapper_page
     22 
     23 
     24 Main header(s) of kernelCommon:
     25 - \ref kernel/digitech.h
     26 - \ref kernel/fast_mult.h
     27 - \ref kernel/ideals.h
     28 - \ref kernel/mod2.h
     29 - \ref kernel/polys.h
     30 - \ref kernel/preimage.h
     31 - \ref kernel/structs.h
    2132 
    2233 Basic Singular mathematical algorithms are described in
  • kernel/maps/maps.dox

    rb169a9 r08a6e5e  
    11/*! \page kernel_maps_page Fast polynomial maps
    22
    3  This sub-package of kernel (\ref kernel_page) contains
    4  implementation of fast maps (see \ref macoeff_s, \ref mapoly_s, \ref maideal_s)
     3 \brief This sub-package of \ref kernel_page contains implementation of fast polynomial maps
     4 
     5 Main data structures:
     6 - \ref macoeff_s
     7 - \ref mapoly_s
     8 - \ref maideal_s
    59
    6  NOTE: seems quite obsolete: check!
     10 Main header(s) in `/kernel/maps/`:
     11 - \ref kernel/maps/fast_maps.h
    712
    813*/
     14//  NOTE: seems quite obsolete... TODO: check!
    915
  • kernel/numeric/numeric.dox

    rb169a9 r08a6e5e  
    1 /*! \page kernel_numeric_page Numerical algorithms for Singular
     1/*! \page kernel_numeric_page Numerical algorithms
    22
    3  This sub-package of kernel (\ref kernel_page) contains
    4  numerical algorithms.
     3 \brief This sub-package of \ref kernel_page contains some numerical algorithms
     4 
     5 Main header(s) in `/kernel/numeric/`:
     6 - \ref kernel/numeric/mpr_base.h
     7 - \ref kernel/numeric/mpr_inout.h
     8 - \ref kernel/numeric/mpr_numeric.h
     9*/
    510
    6  TODO: list those algorithms... and corresponding interpreter functions...?
    7  
    8 */
     11// TODO: list those algorithms... and corresponding interpreter functions...?
  • kernel/oswrapper/oswrapper.dox

    rb169a9 r08a6e5e  
    11/*! \page kernel_oswrapper_page Wrappers over host OS functions
    22
    3  This sub-package of kernel (\ref kernel_page) contains
    4  wrappers over host OS functions.
     3 \brief This sub-package of \ref kernel_page contains  wrappers over host OS functions.
    54
    6  TODO: list those functions... and corresponding interpreter functions...?
    7  
     5 Main header(s) in `/kernel/oswrapper/`:
     6 - \ref kernel/oswrapper/feread.h
     7 - \ref kernel/oswrapper/rlimit.h
     8 - \ref kernel/oswrapper/timer.h
    89*/
    910
     11// TODO: list those functions... and corresponding interpreter functions...?
     12 
  • kernel/polys.cc

    rb169a9 r08a6e5e  
    88#include "polys.h"
    99
     10/// Widely used global variable which specifies the current polynomial ring for Singular interpreter and legacy implementatins.
     11/// @Note: one should avoid using it in newer designs, for example due to possible problems in parallelization with threads.
    1012ring  currRing = NULL;
    1113
  • kernel/polys.h

    rb169a9 r08a6e5e  
    1 /*! \file kernel/polys.h KernelCommon: compatiblity layer for all operations with polys
    2  
     1/*! \file kernel/polys.h Compatiblity layer for legacy polynomial operations (over @ref currRing)
     2 
     3 Macro defines for legacy polynomial operations used in @ref kernel_page and @ref singular_page. 
     4 They take no ring argument since they work with @ref currRing by default.
     5 Notice that they have different prefix: `p` instead of `p_`.
     6
     7 See also related global ring variable and the correct ring changeing routine:
     8 - \ref currRing
     9 - \ref rChangeCurrRing
    310*/
    411
     
    2128 ***************************************************************/
    2229
    23 // deletes old coeff before setting the new one
     30/// deletes old coeff before setting the new one
    2431#define pSetCoeff(p,n)      p_SetCoeff(p,n,currRing)
    2532
    26 // Order
     33/// Order
    2734#define pGetOrder(p)        p_GetOrder(p, currRing)
    2835
    29 // Component
     36/// Component
    3037#define pGetComp(p)         __p_GetComp(p, currRing)
    3138#define pSetComp(p,v)       p_SetComp(p,v, currRing)
    3239
    33 // Exponent
     40/// Exponent
    3441#define pGetExp(p,i)        p_GetExp(p, i, currRing)
    3542#define pSetExp(p,i,v)      p_SetExp(p, i, v, currRing)
     
    4956 *
    5057 ***************************************************************/
    51 // allocates the space for a new monomial -- no initialization !!!
     58/// allocates the space for a new monomial -- no initialization !!!
    5259#define pNew()          p_New(currRing)
    53 // allocates a new monomial and initializes everything to 0
     60/// allocates a new monomial and initializes everything to 0
    5461#define pInit()         p_Init(currRing)
    55 // like pInit, except that expvector is initialized to that of p,
    56 // p must be != NULL
     62/// like pInit, except that expvector is initialized to that of p,
     63/// p must be != NULL
    5764#define pLmInit(p)  p_LmInit(p, currRing)
    58 // returns newly allocated copy of Lm(p), coef is copied, next=NULL,
    59 // p might be NULL
     65/// returns newly allocated copy of Lm(p), coef is copied, next=NULL,
     66/// p might be NULL
    6067#define pHead(p)        p_Head(p, currRing)
    61 // frees the space of the monomial m, assumes m != NULL
    62 // coef is not freed, m is not advanced
     68/// frees the space of the monomial m, assumes m != NULL
     69/// coef is not freed, m is not advanced
    6370static inline void pLmFree(poly p)    {p_LmFree(p, currRing);}
    64 // like pLmFree, but advances p
     71/// like pLmFree, but advances p
    6572static inline void pLmFree(poly *p)   {p_LmFree(p, currRing);}
    66 // assumes p != NULL, deletes p, returns pNext(p)
     73/// assumes p != NULL, deletes p, returns pNext(p)
    6774#define pLmFreeAndNext(p) p_LmFreeAndNext(p, currRing)
    68 // assume p != NULL, deletes Lm(p)->coef and Lm(p)
     75/// assume p != NULL, deletes Lm(p)->coef and Lm(p)
    6976#define pLmDelete(p)    p_LmDelete(p, currRing)
    70 // like pLmDelete, returns pNext(p)
     77/// like pLmDelete, returns pNext(p)
    7178#define pLmDeleteAndNext(p) p_LmDeleteAndNext(p, currRing)
    7279
     
    8491#define pExpVectorDiff(pr, p1, p2)    p_ExpVectorDiff(pr, p1, p2, currRing)
    8592
    86 // Gets a copy of (resp. set) the exponent vector, where e is assumed
    87 // to point to (r->N +1)*sizeof(long) memory. Exponents are
    88 // filled in as follows: comp, e_1, .., e_n
     93/// Gets a copy of (resp. set) the exponent vector, where e is assumed
     94/// to point to (r->N +1)*sizeof(long) memory. Exponents are
     95/// filled in as follows: comp, e_1, .., e_n
    8996#define pGetExpV(p, e)      p_GetExpV(p, e, currRing)
    9097#define pSetExpV(p, e)      p_SetExpV(p, e, currRing)
     
    95102 *
    96103 ***************************************************************/
    97 // returns 0|1|-1 if p=q|p>q|p<q w.r.t monomial ordering
     104/// returns 0|1|-1 if p=q|p>q|p<q w.r.t monomial ordering
    98105#define pLmCmp(p,q)         p_LmCmp(p,q,currRing)
    99 // executes axtionE|actionG|actionS if p=q|p>q|p<q w.r.t monomial ordering
    100 // action should be a "goto ..."
     106/// executes axtionE|actionG|actionS if p=q|p>q|p<q w.r.t monomial ordering
     107/// action should be a "goto ..."
    101108#define pLmCmpAction(p,q, actionE, actionG, actionS)  \
    102109  _p_LmCmpAction(p,q,currRing, actionE, actionG,actionS)
     
    104111#define pLmEqual(p1, p2)     p_ExpVectorEqual(p1, p2, currRing)
    105112
    106 // pCmp: args may be NULL
    107 // returns: (p2==NULL ? 1 : (p1 == NULL ? -1 : p_LmCmp(p1, p2)))
     113/// pCmp: args may be NULL
     114/// returns: (p2==NULL ? 1 : (p1 == NULL ? -1 : p_LmCmp(p1, p2)))
    108115#define pCmp(p1, p2)    p_Cmp(p1, p2, currRing)
    109116
     
    115122 *
    116123 ***************************************************************/
    117 // returns TRUE, if leading monom of a divides leading monom of b
    118 // i.e., if there exists a expvector c > 0, s.t. b = a + c;
     124/// returns TRUE, if leading monom of a divides leading monom of b
     125/// i.e., if there exists a expvector c > 0, s.t. b = a + c;
    119126#define pDivisibleBy(a, b)  p_DivisibleBy(a,b,currRing)
    120 // like pDivisibleBy, except that it is assumed that a!=NULL, b!=NULL
     127/// like pDivisibleBy, except that it is assumed that a!=NULL, b!=NULL
    121128#define pLmDivisibleBy(a,b)  p_LmDivisibleBy(a,b,currRing)
    122 // like pLmDivisibleBy, does not check components
     129/// like pLmDivisibleBy, does not check components
    123130#define pLmDivisibleByNoComp(a, b) p_LmDivisibleByNoComp(a,b,currRing)
    124 // Divisibility tests based on Short Exponent vectors
    125 // sev_a     == pGetShortExpVector(a)
    126 // not_sev_b == ~ pGetShortExpVector(b)
     131/// Divisibility tests based on Short Exponent vectors
     132/// sev_a     == pGetShortExpVector(a)
     133/// not_sev_b == ~ pGetShortExpVector(b)
    127134#define pLmShortDivisibleBy(a, sev_a, b, not_sev_b) \
    128135  p_LmShortDivisibleBy(a, sev_a, b, not_sev_b, currRing)
    129136#define pLmRingShortDivisibleBy(a, sev_a, b, not_sev_b) \
    130137  p_LmRingShortDivisibleBy(a, sev_a, b, not_sev_b, currRing)
    131 // returns the "Short Exponent Vector" -- used to speed up divisibility
    132 // tests (see polys-impl.cc )
     138/// returns the "Short Exponent Vector" -- used to speed up divisibility
     139/// tests (see polys-impl.cc )
    133140#define pGetShortExpVector(a)   p_GetShortExpVector(a, currRing)
     141
    134142#ifdef HAVE_RINGS
    135 /* divisibility check over ground ring (which may contain zero divisors);
    136   TRUE iff LT(f) divides LT(g), i.e., LT(f)*c*m = LT(g), for some
    137   coefficient c and some monomial m;
    138   does not take components into account */
     143/// divisibility check over ground ring (which may contain zero divisors);
     144/// TRUE iff LT(f) divides LT(g), i.e., LT(f)*c*m = LT(g), for some
     145/// coefficient c and some monomial m;
     146/// does not take components into account */
    139147#define  pDivisibleByRingCase(f,g) p_DivisibleByRingCase(f,g,currRing)
    140148#endif
     
    145153 *
    146154 ***************************************************************/
    147 // return a copy of the poly
     155/// return a copy of the poly
    148156#define pCopy(p) p_Copy(p, currRing)
    149157#define pDelete(p_ptr)  p_Delete(p_ptr, currRing)
     
    177185 *
    178186 *************************************************************************/
    179 // sorts p, assumes all monomials in p are different
     187/// sorts p, assumes all monomials in p are different
    180188#define pSortMerger(p)          p_SortMerge(p, currRing)
    181189#define pSort(p)                p_SortMerge(p, currRing)
    182190
    183 // sorts p, p may have equal monomials
     191/// sorts p, p may have equal monomials
    184192#define pSortAdd(p)             p_SortAdd(p, currRing)
    185193
    186194
    187 // Assume: If considerd only as poly in any component of p
    188 // (say, monomials of other components of p are set to 0),
    189 // then p is already sorted correctly
     195/// Assume: If considerd only as poly in any component of p
     196/// (say, monomials of other components of p are set to 0),
     197/// then p is already sorted correctly
    190198#define pSortCompCorrect(p) pSort(p)
    191199
     
    195203 *
    196204 ***************************************************************/
    197 // return true if all p is eihter NULL, or if all exponents
    198 // of p are 0 and Comp of p is zero
     205/// return true if all p is eihter NULL, or if all exponents
     206/// of p are 0 and Comp of p is zero
    199207#define   pIsConstantComp(p)        p_IsConstantComp(p, currRing)
    200 // like above, except that Comp might be != 0
     208/// like above, except that Comp might be != 0
    201209#define   pIsConstant(p)            p_IsConstant(p,currRing)
    202 // return true if the Lm is a constant <>0
     210/// return true if the Lm is a constant <>0
    203211#define   pIsUnit(p)            p_IsUnit(p,currRing)
    204 // like above, except that p must be != NULL
     212/// like above, except that p must be != NULL
    205213#define   pLmIsConstantComp(p)      p_LmIsConstantComp(p, currRing)
    206214#define   pLmIsConstant(p)          p_LmIsConstant(p,currRing)
    207215
    208 // return TRUE if all monomials of p are constant
     216/// return TRUE if all monomials of p are constant
    209217#define   pIsConstantPoly(p)        p_IsConstantPoly(p, currRing)
    210218
     
    232240/*-----------the ordering of monomials:-------------*/
    233241#define pSetm(p)    p_Setm(p, currRing)
    234 // TODO:
     242/// TODO:
    235243#define pSetmComp(p)   p_Setm(p, currRing)
    236244
     
    252260#define pmInit(a,b) p_mInit(a,b,currRing)
    253261
    254 // ----------------- define to enable new p_procs -----*/
     262/* ----------------- define to enable new p_procs -----*/
    255263
    256264#define pDivide(a,b) p_Divide(a,b,currRing)
     
    282290
    283291
    284 // homogenizes p by multiplying certain powers of the varnum-th variable
     292/// homogenizes p by multiplying certain powers of the varnum-th variable
    285293#define  pHomogen(p,varnum) p_Homogen(p,varnum,currRing)
    286294
     
    297305#define   pTakeOutComp1(p,k)    p_TakeOutComp1(p,k,currRing)
    298306
    299 // Splits *p into two polys: *q which consists of all monoms with
    300 // component == comp and *p of all other monoms *lq == pLength(*q)
    301 // On return all components pf *q == 0
     307/// Splits *p into two polys: *q which consists of all monoms with
     308/// component == comp and *p of all other monoms *lq == pLength(*q)
     309/// On return all components pf *q == 0
    302310inline void pTakeOutComp(poly *p, long comp, poly *q, int *lq, const ring R = currRing)
    303311{
     
    306314
    307315
    308 // This is something weird -- Don't use it, unless you know what you are doing
     316/// This is something weird -- Don't use it, unless you know what you are doing
    309317inline poly      pTakeOutComp(poly * p, int k, const ring R = currRing)
    310318{
     
    366374
    367375
    368 // returns the length of a polynomial (numbers of monomials)
    369 // respect syzComp
     376/// returns the length of a polynomial (numbers of monomials)
     377/// respect syzComp
    370378static inline poly pLast(poly a, int &length) { return p_Last (a, length, currRing); }
    371379static inline poly pLast(poly a) { int l; return pLast(a, l); }
  • kernel/spectrum/spectrum.dox

    rb169a9 r08a6e5e  
    11/*! \page kernel_spectrum_page Spectrum-related algorithms
    22
    3  This sub-package of kernel (\ref kernel_page) contains
    4  Spectrum-related algorithms.
     3 \brief This sub-package of \ref kernel_page contains Spectrum-related (?) algorithms.
    54
    6  TODO: list those algorithms... and corresponding interpreter functions...?
    7  
     5 Main header(s) in `/kernel/spectrum/`:
     6 - \ref kernel/spectrum/GMPrat.h
     7 - \ref kernel/spectrum/kmatrix.h
     8 - \ref kernel/spectrum/multicnt.h
     9 - \ref kernel/spectrum/npolygon.h
     10 - \ref kernel/spectrum/semic.h
     11 - \ref kernel/spectrum/spectrum.h
     12 - \ref kernel/spectrum/splist.h
    813*/
    914
     15//  TODO: list those algorithms... and corresponding interpreter functions...?
     16 
  • libpolys/coeffs/bigintmat.h

    rb169a9 r08a6e5e  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /*
    5 * ABSTRACT: class bigintmat: matrices of number
    6 *
    7 * Matrices are stored as 1-dim c-arrays but interpreted 2-dim as matrices.
    8 * Both modes of addressing are supported, note however, that the 1-dim
    9 * adressing starts at 0, the 2-dim at 1.
    10 *
    11 * Matrices are meant to represent column modules, thus the default
    12 * operations are always by column.
    13 *
    14 * While basic operations are supported over any ring (coeff), some more
    15 * advanced ones require more special rings: eg. echelon forms, solving
    16 * of linear equations is only effective over principal ideal or even
    17 * Euclidean rings.
    18 *
    19 * Be careful with the get/set/view/rawset functions to understand which
    20 * arguments are copied/ deleted or only assigned.
    21 */
    22 
    234#ifndef BIGINTMAT_H
    245#define BIGINTMAT_H
     
    2910#include <coeffs/rmodulon.h>
    3011
    31 /// matrix of numbers
    32 /// NOTE: no reference counting!!!
     12/**
     13 * @class bigintmat bigintmat.h <coeffs/bigintmat.h>
     14 *
     15 * Matrices of numbers
     16 *
     17 * Matrices are stored as 1-dim c-arrays but interpreted 2-dim as matrices.
     18 * Both modes of addressing are supported, note however, that the 1-dim
     19 * adressing starts at 0, the 2-dim at 1.
     20 *
     21 * Matrices are meant to represent column modules, thus the default
     22 * operations are always by column.
     23 *
     24 * While basic operations are supported over any ring (coeff), some more
     25 * advanced ones require more special rings: eg. echelon forms, solving
     26 * of linear equations is only effective over principal ideal or even
     27 * Euclidean rings.
     28 *
     29 * Be careful with the get/set/view/rawset functions to understand which
     30 * arguments are copied/ deleted or only assigned.
     31 *
     32 * @Note: no reference counting here!
     33 */
    3334class bigintmat
    3435{
     
    208209    char * String();
    209210    ///IO: writes the matrix into the current internal string buffer which
    210     /// must be started/ allocated before (e.g. @StringSetS)
     211    /// must be started/ allocated before (e.g. @ref StringSetS)
    211212    void Write();
    212213    ///IO: simply prints the matrix to the current output (screen?)
    213214    void Print();
    214 /***
    215  * Returns a string as it would have been printed in the interpreter.
    216  * Used e.g. in print functions of various blackbox types.
    217  **/
     215
     216   /**
     217    * Returns a string as it would have been printed in the interpreter.
     218    * Used e.g. in print functions of various blackbox types.
     219    */
    218220    char * StringAsPrinted();
    219221    void pprint(int maxwid);
     
    225227    // !WICHTIG: Überall, wo eine number ÃŒbergeben wird, und damit gearbeitet wird, die coeffs mitÃŒbergeben und erst
    226228    // ÃŒberprÃŒfen, ob diese mit basecoeffs ÃŒbereinstimmen. Falls nein: Breche ab!
     229   
    227230    /// swap columns i and j
    228231    void swap(int i, int j);
     
    243246    void getColRange(int j, int no, bigintmat *a);
    244247
    245     void getrow(int i, bigintmat *a); // Schreibt i-te Zeile in Vektor (Matrix) a
    246     void setcol(int j, bigintmat *m); // Setzt j-te Spalte gleich ÃŒbergebenem Vektor (Matrix) m
    247     void setrow(int i, bigintmat *m); // Setzt i-te Zeile gleich ÃŒbergebenem Vektor (Matrix) m
     248    void getrow(int i, bigintmat *a); ///< Schreibt i-te Zeile in Vektor (Matrix) a
     249    void setcol(int j, bigintmat *m); ///< Setzt j-te Spalte gleich ÃŒbergebenem Vektor (Matrix) m
     250    void setrow(int i, bigintmat *m); ///< Setzt i-te Zeile gleich ÃŒbergebenem Vektor (Matrix) m
    248251
    249252    ///horizontally join the matrices, m <- m|a
     
    253256    void extendCols (int i);
    254257
    255     bool add(bigintmat *b); // Addiert zur Matrix die Matrix b dazu. Return false => an error occured
    256     bool sub(bigintmat *b); // Subtrahiert ...
    257     bool skalmult(number b, coeffs c); // Multipliziert zur Matrix den Skalar b hinzu
    258     bool addcol(int i, int j, number a, coeffs c); // addiert a-faches der j-ten Spalte zur i-ten dazu
    259     bool addrow(int i, int j, number a, coeffs c); // ... Zeile ...
    260     void colskalmult(int i, number a, coeffs c); // Multipliziert zur i-ten Spalte den Skalar a hinzu
    261     void rowskalmult(int i, number a, coeffs c); // ... Zeile ...
    262     void coltransform(int i, int j, number a, number b, number c, number d); //  transforms cols (i,j) using the 2x2 matrix ((a,b)(c,d)) (hopefully)
    263     void concatrow(bigintmat *a, bigintmat *b); // FÃŒgt zwei Matrixen untereinander/nebeneinander in gegebene Matrix ein, bzw spaltet gegebenen Matrix auf
     258    bool add(bigintmat *b); ///< Addiert zur Matrix die Matrix b dazu. Return false => an error occured
     259    bool sub(bigintmat *b); ///< Subtrahiert ...
     260    bool skalmult(number b, coeffs c); ///< Multipliziert zur Matrix den Skalar b hinzu
     261    bool addcol(int i, int j, number a, coeffs c); ///< addiert a-faches der j-ten Spalte zur i-ten dazu
     262    bool addrow(int i, int j, number a, coeffs c); ///< ... Zeile ...
     263    void colskalmult(int i, number a, coeffs c); ///< Multipliziert zur i-ten Spalte den Skalar a hinzu
     264    void rowskalmult(int i, number a, coeffs c); ///< ... Zeile ...
     265    void coltransform(int i, int j, number a, number b, number c, number d); ///<  transforms cols (i,j) using the 2x2 matrix ((a,b)(c,d)) (hopefully)
     266    void concatrow(bigintmat *a, bigintmat *b); ///< FÃŒgt zwei Matrixen untereinander/nebeneinander in gegebene Matrix ein, bzw spaltet gegebenen Matrix auf
    264267    void concatcol(bigintmat *a, bigintmat *b);
    265     void splitrow(bigintmat *a, bigintmat *b); // Speichert in Matrix a den oberen, in b den unteren Teil der Matrix, vorausgesetzt die Dimensionen stimmen ÃŒberein
    266     void splitcol(bigintmat *a, bigintmat *b); // ... linken ... rechten ...
    267     void splitcol(bigintmat *a, int i); // Speichert die ersten i Spalten als Teilmatrix in a
    268     void splitrow(bigintmat *a, int i); // ... Zeilen ...
    269     bool copy(bigintmat *b); // Kopiert EintrÀge von b auf Bigintmat
     268    void splitrow(bigintmat *a, bigintmat *b); ///< Speichert in Matrix a den oberen, in b den unteren Teil der Matrix, vorausgesetzt die Dimensionen stimmen ÃŒberein
     269    void splitcol(bigintmat *a, bigintmat *b); ///< ... linken ... rechten ...
     270    void splitcol(bigintmat *a, int i); ///< Speichert die ersten i Spalten als Teilmatrix in a
     271    void splitrow(bigintmat *a, int i); ///< ... Zeilen ...
     272    bool copy(bigintmat *b); ///< Kopiert EintrÀge von b auf Bigintmat
    270273    void copySubmatInto(bigintmat *, int sr, int sc, int nr, int nc, int tr, int tc);
    271     void one(); // Macht Matrix (Falls quadratisch) zu Einheitsmatrix
    272     int isOne(); // is matrix is identity
    273     void zero(); // Setzt alle EintrÀge auf 0
     274    void one(); ///< Macht Matrix (Falls quadratisch) zu Einheitsmatrix
     275    int isOne(); ///< is matrix is identity
     276    void zero(); ///< Setzt alle EintrÀge auf 0
    274277    int isZero();
    275278    int colIsZero(int i);
    276     bigintmat *elim(int i, int j); // Liefert Streichungsmatrix (i-te Zeile und j-te Spalte gestrichen) zurÃŒck
    277     number pseudoinv(bigintmat *a); // Speichert in Matrix a die Pseudoinverse, liefert den Nenner zurÃŒck
    278     number trace(); // the trace ....
    279     number det(); // det (via LaPlace in general, hnf for euc. rings)
    280     number hnfdet(); // det via HNF
     279    bigintmat *elim(int i, int j); ///< Liefert Streichungsmatrix (i-te Zeile und j-te Spalte gestrichen) zurÃŒck
     280    number pseudoinv(bigintmat *a); ///< Speichert in Matrix a die Pseudoinverse, liefert den Nenner zurÃŒck
     281    number trace(); ///< the trace ....
     282    number det(); ///< det (via LaPlace in general, hnf for euc. rings)
     283    number hnfdet(); ///< det via HNF
    281284    /// Primzahlen als long long int, mÃŒssen noch in number umgewandelt werden?
    282     void hnf(); // transforms INPLACE to HNF
    283     void howell(); //dito, but Howell form (only different for zero-divsors)
     285    void hnf(); ///< transforms INPLACE to HNF
     286    void howell(); ///<dito, but Howell form (only different for zero-divsors)
    284287    void swapMatrix(bigintmat * a);
    285     bigintmat * modhnf(number p, coeffs c); // computes HNF(this | p*I)
     288    bigintmat * modhnf(number p, coeffs c); ///< computes HNF(this | p*I)
    286289    bigintmat * modgauss(number p, coeffs c);
    287     void skaldiv(number b); // Macht Ganzzahldivision aller MatrixeintrÀge mit b
    288     void colskaldiv(int j, number b); // Macht Ganzzahldivision aller j-ten SpalteneintrÀge mit b
    289     void mod(number p, coeffs c); // Reduziert komplette Matrix modulo p
    290     bigintmat* inpmod(number p, coeffs c); // Liefert Kopie der Matrix zurÃŒck, allerdings im Ring Z modulo p
    291     number content(); //the content, the gcd of all entries. Only makes sense for Euclidean rings (or possibly constructive PIR)
    292     void simplifyContentDen(number *den); // ensures that Gcd(den, content)=1
    293     // enden hier wieder
     290    void skaldiv(number b); ///< Macht Ganzzahldivision aller MatrixeintrÀge mit b
     291    void colskaldiv(int j, number b); ///< Macht Ganzzahldivision aller j-ten SpalteneintrÀge mit b
     292    void mod(number p, coeffs c); ///< Reduziert komplette Matrix modulo p
     293    bigintmat* inpmod(number p, coeffs c); ///< Liefert Kopie der Matrix zurÃŒck, allerdings im Ring Z modulo p
     294    number content(); ///<the content, the gcd of all entries. Only makes sense for Euclidean rings (or possibly constructive PIR)
     295    void simplifyContentDen(number *den); ///< ensures that Gcd(den, content)=1
     296    ///< enden hier wieder
    294297};
    295298
     
    298301
    299302/// Matrix-Add/-Sub/-Mult so oder mit operator+/-/* ?
    300 /// NOTE: NULL as a result means an error (non-compatible matrices?)
     303/// @Note: NULL as a result means an error (non-compatible matrices?)
    301304bigintmat * bimAdd(bigintmat * a, bigintmat * b);
    302305bigintmat * bimAdd(bigintmat * a, int b);
     
    315318
    316319// Wieder von Kira, Jan, Marco
    317 bigintmat * bimChangeCoeff(bigintmat *a, coeffs cnew); // Liefert Kopier von Matrix a zurÃŒck, mit coeffs cnew statt den ursprÃŒnglichen
    318 void bimMult(bigintmat *a, bigintmat *b, bigintmat *c); // Multipliziert Matrix a und b und speichert Ergebnis in c
     320bigintmat * bimChangeCoeff(bigintmat *a, coeffs cnew); ///< Liefert Kopier von Matrix a zurÃŒck, mit coeffs cnew statt den ursprÃŒnglichen
     321void bimMult(bigintmat *a, bigintmat *b, bigintmat *c); ///< Multipliziert Matrix a und b und speichert Ergebnis in c
    319322
    320323///solve Ax=b*d. x needs to be pre-allocated to the same number of columns as b.
     
    334337void diagonalForm(bigintmat *a, bigintmat **b, bigintmat **c);
    335338
    336 #endif // #ifndef BIGINTMAT_H
     339#endif /* #ifndef BIGINTMAT_H */
  • libpolys/coeffs/coeffs.h

    rb169a9 r08a6e5e  
    1 /*!
    2  \file coeffs/coeffs.h Coeff. Rings and Fields (interface)
     1/*! \file coeffs/coeffs.h Coefficient rings, fields and other domains suitable for Singular polynomials
     2   
     3  The main interface for Singular coefficients: \ref coeffs is the main handler for Singular numbers
    34*/
    45/****************************************
     
    5758typedef struct ip_sring const *   const_ring;
    5859
     60/// @class coeffs coeffs.h coeffs/coeffs.h
     61///
     62/// The main handler for Singular numbers which are suitable for Singular polynomials.
     63///
     64/// With it one may implement a ring, a field, a domain etc.
     65///
    5966struct n_Procs_s;
    6067typedef struct  n_Procs_s  *coeffs;
  • libpolys/libpolys.dox

    rb169a9 r08a6e5e  
    11/*!
    2 
    3  \page libpolys_page Basic Data Structures for Singular (libpolys)
     2 \page libpolys_page Basic Data Structures
     3 
     4 \brief Basic Data Structures for Singular
     5 
    46
    57 This is a (mostly) separate package containing the definition and implementaion for
  • main.dox

    rb169a9 r08a6e5e  
    11/*!
    2 \page main_page Introductory developers manual
     2\page main_page Introduction to Singular kernel development
    33
    4 The Singular kernel development introduction contains:
     4\brief Introductory pages for new kernel development
    55
    66- \subpage build_sources_page "Building Singular from Sources",
    77- \subpage development_model_page "New git-supported Development Model",
    88- \subpage howto_contribute_page "HowTo CONTRIBUTE to Singular development",
    9 - \subpage styleguide "Newer C/C++ programming style guide",
    10 - \subpage legacystyleguide "Legacy C programming style guide",
    11 - \subpage bs_page "the build system",
    12 - \subpage changes_in_sw_page "significant SW changes",
    13 - somewhat outdated Singular kernel documentation: <ftp://www.mathematik.uni-kl.de/pub/Math/Singular/doc/singular-anatomy.tgz>,
    14 - a short description of the Singular restructurization: <http://www.singular.uni-kl.de/gap-meeting-2012/SW.Aug.12.motsak.2.pdf> and
    15 - the current internal structure and dependencies can be seen at \subpage deps_page.
     9- \subpage styleguide "C/C++ programming style guide",
     10- \subpage bs_page "Singular build system",
     11- \subpage changes_in_sw_page "Significant changes in Singular 4",
     12- Somewhat outdated Singular kernel documentation: <br/>
     13  <ftp://www.mathematik.uni-kl.de/pub/Math/Singular/doc/singular-anatomy.tgz>,
     14- Short description of the Singular restructurization: <br/>
     15  <http://www.singular.uni-kl.de/gap-meeting-2012/SW.Aug.12.motsak.2.pdf> and
     16- Current internal structure and dependencies can be seen at \subpage deps_page.
    1617  Top-level packages are:
    1718  - \subpage omalloc_page "Singular Memory Manager",
     
    2223  - \subpage singular_page "Singular Interpreter and related".
    2324
    24 Note that Singlar may rely on some third-party \subpage external_packages_page "Packages".
     25\Note Singlar relies on some third-party \subpage external_packages_page "Packages".
     26
     27\Note In case of any uncovered topics or unanswered questions please report
     28them to us.
    2529*/
    2630
    2731/*!
    2832\page deps_page Dependencies between Singular packages
     33
     34\brief Current Singular packages and sub-packages with expected dependencies between them
    2935
    3036- \ref omalloc_page
     
    5662
    5763/*!
    58 \page bs_page Singular Build System (autotools)
     64\page bs_page Singular Build System
    5965
    60 We use autotools. Here is a good autotools (mythbuster) manual: https://www.flameeyes.eu/autotools-mythbuster/
    61 Singular consists of several packages (that is, libraries with own
    62 configure scripts):
     66\brief Short introduction to the Singular build system
     67
     68We use autotools.
     69Here is a good autotools (mythbuster) manual:
     70<https://www.flameeyes.eu/autotools-mythbuster/>
     71Singular consists of several packages,
     72which are (mostly standalone) libraries with their own configuration scripts:
    6373
    6474- \ref omalloc_page
     
    6878- \ref singular_page
    6979
    70 Moreover some of these (top-level) libraries combine smaller ones into
    71 itself.
     80Moreover some of the top-level libraries combine smaller ones into
     81itself:
    7282- \ref libpolys_page
    7383  - \ref libpolys_misc_page
     
    104114in case of a build system chenges.
    105115
    106 See also \ref styleguide and \ref legacystyleguide .
     116See also \ref styleguide.
    107117*/
    108118
     
    127137\ref singular_page
    128138*/
     139
    129140/*!
    130141\dir ./factory
     
    138149 
    139150/*!
    140 \page copying_page COPYING
    141 This is the Singular copying agreement
     151\page copying_page Singular copying agreement
     152
     153\brief COPYING
    142154
    143155\verbinclude COPYING
Note: See TracChangeset for help on using the changeset viewer.