Changeset e7f87f in git


Ignore:
Timestamp:
Jan 31, 2019, 5:09:18 PM (4 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
Children:
64dfab7cf1b26074304621f8a4c209d347712ac7
Parents:
d59bc4cf80963a61978ac9d26d399d9a7bcbffd2
Message:
add: ssi for NC-rings
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/links/ssiLink.cc

    rd59bc4 re7f87f  
    4949#include <netinet/in.h> /* for htons etc.*/
    5050
    51 #define SSI_VERSION 12
     51#define SSI_VERSION 13
    5252// 5->6: changed newstruct representation
    5353// 6->7: attributes
     
    5757// 10->11: extended ring descr. for named coeffs (not in used until 4.1)
    5858// 11->12: add rank to ideal/module, add smatrix
     59// 12->13: NC rings
    5960
    6061VAR link_list ssiToBeClosed=NULL;
     
    233234  {
    234235    fputs("0 0 0 0 "/*,r->ch,r->N, blocks, q-ideal*/,d->f_write);
     236  }
     237  if (rIsLPRing(r)) // cannot be combined with 23 2
     238  {
     239    fprintf(d->f_write,"23 1 %d %d ",SI_LOG2(r->bitmask),r->isLPring);
     240  }
     241  else
     242  {
     243    unsigned long bm=0;
     244    int b=0;
     245    bm=rGetExpSize(bm,b,r->N);
     246    if (r->bitmask!=bm)
     247    {
     248      fprintf(d->f_write,"23 0 %d ",SI_LOG2(r->bitmask));
     249    }
     250    if (rIsPluralRing(r))
     251    {
     252      fputs("23 2 ",d->f_write);
     253      void ssiWriteIdeal(const ssiInfo *d, int typ,const ideal I);
     254      ssiWriteIdeal(d,MATRIX_CMD,(ideal)r->GetNC()->C);
     255      ssiWriteIdeal(d,MATRIX_CMD,(ideal)r->GetNC()->D);
     256    }
    235257  }
    236258}
     
    779801  }
    780802  res->flag=fl;
     803}
     804void ssiReadRingProperties(si_link l)
     805{
     806  ssiInfo *d=(ssiInfo*)l->data;
     807  int what=s_readint(d->f_read);
     808  switch(what)
     809  {
     810    case 0: // bitmask
     811    {
     812      int lb=s_readint(d->f_read);
     813      unsigned long bm=~0L;
     814      bm=bm<<lb;
     815      bm=~bm;
     816      rUnComplete(d->r);
     817      d->r->bitmask=bm;
     818      rComplete(d->r);
     819      break;
     820    }
     821    case 1: // LPRing
     822    {
     823      int lb=s_readint(d->f_read);
     824      int isLPring=s_readint(d->f_read);
     825      unsigned long bm=~0L;
     826      bm=bm<<lb;
     827      bm=~bm;
     828      rUnComplete(d->r);
     829      d->r->bitmask=bm;
     830      d->r->isLPring=isLPring;
     831      rComplete(d->r);
     832      break;
     833    }
     834    case 2: // Plural rings
     835    {
     836      matrix C=ssiReadMatrix(d);
     837      matrix D=ssiReadMatrix(d);
     838      nc_CallPlural(C,D,NULL,NULL,d->r,true,true,false,d->r,false);
     839      break;
     840    }
     841  }
    781842}
    782843//**************************************************************************/
     
    13601421    case 21: ssiReadAttrib(res,l);
    13611422             break;
     1423    case 23: ssiReadRingProperties(l);
     1424             return ssiRead1(l);
     1425             break;
    13621426    // ------------
    13631427    case 98: // version
     
    15201584                        else if(tt==MATRIX_CMD) fputs("8 ",d->f_write);
    15211585                        else if(tt==SMATRIX_CMD) fputs("22 ",d->f_write);
    1522                         else
     1586                        else /* tt==MODUL_CMD*/
    15231587                        {
    15241588                          ideal M=(ideal)dd;
     
    21682232// 21 attrib <bit-attrib> <len> <a-name1> <val1>... <data>
    21692233// 22 smatrix
     2234// 23 0 <log(bitmask)> ring properties: max.exp.
     2235// 23 1 <log(bitmask)> <r->IsLPRing> ring properties:LPRing
     2236// 23 2 <matrix C> <matrix D> ring properties: PLuralRing
    21702237//
    21712238// 98: verify version: <ssi-version> <MAX_TOK> <OPT1> <OPT2>
Note: See TracChangeset for help on using the changeset viewer.