Changeset 39a208 in git


Ignore:
Timestamp:
May 6, 2005, 4:12:35 PM (19 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
e6fb5315eb32da00236163ce10f9bdafaaa0bd47
Parents:
b07a6d9646920374a6d44fdc59880be8c437d21b
Message:
*hannes: fixed currRing changes in rSum


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

Legend:

Unmodified
Added
Removed
  • kernel/ring.cc

    rb07a6d9 r39a208  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: ring.cc,v 1.37 2005-05-04 15:25:45 Singular Exp $ */
     4/* $Id: ring.cc,v 1.38 2005-05-06 14:12:35 Singular Exp $ */
    55
    66/*
     
    343343      for (i = 1; i<r->N; i++)
    344344      {
    345         for (j = i+1; j<=r->N; j++)
    346         {
    347           nl = nIsOne(p_GetCoeff(MATELEM(r->nc->C,i,j),r));
    348           if ( (MATELEM(r->nc->D,i,j)!=NULL) || (!nl) )
    349           {
    350             Print("\n//    %s%s=",r->names[j-1],r->names[i-1]);
    351             pl = MATELEM(r->nc->MT[UPMATELEM(i,j,r->N)],1,1);
    352             pWrite0(pl);
    353           }
    354         }
     345        for (j = i+1; j<=r->N; j++)
     346        {
     347          nl = nIsOne(p_GetCoeff(MATELEM(r->nc->C,i,j),r));
     348          if ( (MATELEM(r->nc->D,i,j)!=NULL) || (!nl) )
     349          {
     350            Print("\n//    %s%s=",r->names[j-1],r->names[i-1]);
     351            pl = MATELEM(r->nc->MT[UPMATELEM(i,j,r->N)],1,1);
     352            pWrite0(pl);
     353          }
     354        }
    355355      }
    356356    }
     
    11061106#ifdef HAVE_PLURAL
    11071107  ring old_ring = currRing;
    1108   rChangeCurrRing(sum);
    11091108  BOOLEAN R1_is_nc = rIsPluralRing(r1);
    11101109  BOOLEAN R2_is_nc = rIsPluralRing(r2);
     
    11321131    if (sum->nc->type == nc_undef) /* not yet done */
    11331132    {
    1134       switch (t1) 
     1133      switch (t1)
    11351134      {
    11361135        case nc_comm:
    1137           sum->nc->type = t2;
     1136          sum->nc->type = t2;
    11381137          break;
    11391138        case nc_lie:
    1140           switch(t2)
    1141           {
    1142             case nc_skew:
    1143               sum->nc->type = nc_general;  break;
    1144             case nc_comm:
    1145               sum->nc->type = nc_lie;  break;
    1146             default:
    1147               /*sum->nc->type = nc_undef;*/  break;
    1148           }
    1149           break;
     1139          switch(t2)
     1140          {
     1141            case nc_skew:
     1142              sum->nc->type = nc_general;  break;
     1143            case nc_comm:
     1144              sum->nc->type = nc_lie;  break;
     1145            default:
     1146              /*sum->nc->type = nc_undef;*/  break;
     1147          }
     1148          break;
    11501149        case nc_skew:
    1151           switch(t2)
    1152           {
    1153             case nc_lie:
    1154               sum->nc->type = nc_lie;  break;
    1155             case nc_comm:
    1156               sum->nc->type = nc_skew;  break;
    1157             default:
    1158               /*sum->nc->type = nc_undef;*/  break;
    1159           }
     1150          switch(t2)
     1151          {
     1152            case nc_lie:
     1153              sum->nc->type = nc_lie;  break;
     1154            case nc_comm:
     1155              sum->nc->type = nc_skew;  break;
     1156            default:
     1157              /*sum->nc->type = nc_undef;*/  break;
     1158          }
    11601159        default:
    11611160          /*sum->nc->type = nc_undef;*/
     
    11911190      for (j= i+1; j<= rVar(R1) + rVar(R2); j++)
    11921191      {
    1193         MATELEM(C,i,j) = pOne();
     1192        MATELEM(C,i,j) = pOne();
    11941193      }
    11951194    }
     
    11991198      {
    12001199
    1201         MATELEM(C,i,j) = pPermPoly(MATELEM(C1,i,j),perm1,R1,nMap1,par_perm1,rPar(R1));
    1202         if (MATELEM(D1,i,j) != NULL)
    1203         {
    1204           MATELEM(D,i,j) = pPermPoly(MATELEM(D1,i,j),perm1,R1,nMap1,par_perm1,rPar(R1));
    1205         }
     1200        MATELEM(C,i,j) = pPermPoly(MATELEM(C1,i,j),perm1,R1,nMap1,par_perm1,rPar(R1));
     1201        if (MATELEM(D1,i,j) != NULL)
     1202        {
     1203          MATELEM(D,i,j) = pPermPoly(MATELEM(D1,i,j),perm1,R1,nMap1,par_perm1,rPar(R1));
     1204        }
    12061205      }
    12071206    }
     
    12111210      {
    12121211        MATELEM(C,rVar(R1)+i,rVar(R1)+j) = pPermPoly(MATELEM(C2,i,j),perm2,R2,nMap2,par_perm2,rPar(R2));
    1213         if (MATELEM(D2,i,j) != NULL)
    1214         {
    1215           MATELEM(D,rVar(R1)+i,rVar(R1)+j) = pPermPoly(MATELEM(D2,i,j),perm2,R2,nMap2,par_perm2,rPar(R2));
    1216         }
     1212              if (MATELEM(D2,i,j) != NULL)
     1213        {
     1214          MATELEM(D,rVar(R1)+i,rVar(R1)+j) = pPermPoly(MATELEM(D2,i,j),perm2,R2,nMap2,par_perm2,rPar(R2));
     1215        }
    12171216      }
    12181217    }
     
    12321231    if (par_perm1!=NULL) omFree((ADDRESS)par_perm1);
    12331232    if (par_perm2!=NULL) omFree((ADDRESS)par_perm2);
    1234     if ( old_ring != NULL)
    1235       rChangeCurrRing(old_ring);
     1233    rChangeCurrRing(old_ring);
    12361234  }
    12371235#endif
     1236  ideal Q=NULL;
     1237  ideal Q1=NULL, Q2=NULL;
    12381238  ring old_ring2 = currRing;
    1239   rChangeCurrRing(sum);
    1240   ideal Q=NULL;
    1241   ideal Q1, Q2;
    12421239  if (r1->qideal!=NULL)
    12431240  {
     1241    rChangeCurrRing(sum);
    12441242//     if (r2->qideal!=NULL)
    12451243//     {
    1246 //       WerrorS("todo: qring+qring"); 
     1244//       WerrorS("todo: qring+qring");
    12471245//       return -1;
    12481246//     }
     
    12541252    if (rPar(r1)!=0) par_perm1=(int *)omAlloc0((rPar(r1)+1)*sizeof(int));
    12551253    maFindPerm(r1->names,  rVar(r1),  r1->parameter,  rPar(r1),
    1256                sum->names, rVar(sum), sum->parameter, rPar(sum),
    1257                perm1, par_perm1, sum->ch);
     1254               sum->names, rVar(sum), sum->parameter, rPar(sum),
     1255               perm1, par_perm1, sum->ch);
    12581256    nMapFunc nMap1 = nSetMap(r1);
    12591257    Q1 = idInit(IDELEMS(r1->qideal),1);
     
    12621260    omFree((ADDRESS)perm1);
    12631261  }
    1264   else
    1265   {
    1266     Q1 = NULL;
    1267   }
    12681262
    12691263  if (r2->qideal!=NULL)
    12701264  {
     1265    if (currRing!=sum)
     1266      rChangeCurrRing(sum);
    12711267    int *perm2 = (int *)omAlloc0((rVar(r2)+1)*sizeof(int));
    12721268    int *par_perm2 = NULL;
    12731269    if (rPar(r2)!=0) par_perm2=(int *)omAlloc0((rPar(r2)+1)*sizeof(int));
    12741270    maFindPerm(r2->names,  rVar(r2),  r2->parameter,  rPar(r2),
    1275                sum->names, rVar(sum), sum->parameter, rPar(sum),
    1276                perm2, par_perm2, sum->ch);
     1271               sum->names, rVar(sum), sum->parameter, rPar(sum),
     1272               perm2, par_perm2, sum->ch);
    12771273    nMapFunc nMap2 = nSetMap(r2);
    12781274    Q2 = idInit(IDELEMS(r2->qideal),1);
     
    12811277    omFree((ADDRESS)perm2);
    12821278  }
    1283   else
    1284   {
    1285     Q2 = NULL;
    1286   }
    12871279  if ( (Q1!=NULL) || ( Q2!=NULL))
     1280  {
    12881281    Q = idSimpleAdd(Q1,Q2);
    1289   sum->qideal = Q;
    1290   if ( old_ring2 != NULL)
    12911282    rChangeCurrRing(old_ring2);
     1283  }
     1284  sum->qideal = Q;
    12921285  return 1;
    12931286}
     1287
    12941288/*2
    12951289 * create a copy of the ring r, which must be equivalent to currRing
     
    36683662  {
    36693663    int t=w[j];
    3670     w[j]=w[l-j]; 
    3671     w[l-j]=t; 
     3664    w[j]=w[l-j];
     3665    w[l-j]=t;
    36723666  }
    36733667}
     
    37243718//    {
    37253719//      case ro_dp:
    3726 //      // 
     3720//      //
    37273721//        t=r->typ[i].data.dp.start;
    37283722//        r->typ[i].data.dp.start=rOppVar(r,r->typ[i].data.dp.end);
     
    37813775        break;
    37823776      case ringorder_dp: /* dp -> a(1..1),ls */
    3783       { 
     3777      {
    37843778        l=rRealloc1(r,src,l,j);
    37853779        r->order[j]=ringorder_a;
     
    37953789        j++;
    37963790        break;
    3797       } 
     3791      }
    37983792      case ringorder_Dp: /* Dp -> a(1..1),rp */
    3799       { 
     3793      {
    38003794        l=rRealloc1(r,src,l,j);
    38013795        r->order[j]=ringorder_a;
     
    38113805        j++;
    38123806        break;
    3813       } 
     3807      }
    38143808      case ringorder_wp: /* wp -> a(...),ls */
    3815       { 
     3809      {
    38163810        l=rRealloc1(r,src,l,j);
    38173811        r->order[j]=ringorder_a;
     
    38263820        j++;
    38273821        break;
    3828       } 
     3822      }
    38293823      case ringorder_Wp: /* Wp -> a(...),rp */
    3830       { 
     3824      {
    38313825        l=rRealloc1(r,src,l,j);
    38323826        r->order[j]=ringorder_a;
     
    38413835        j++;
    38423836        break;
    3843       } 
     3837      }
    38443838      case ringorder_M: /* M -> M */
    3845       { 
     3839      {
    38463840        r->order[j]=ringorder_M;
    38473841        r->block0[j]=rOppVar(r, src->block1[i]);
     
    38573851      }
    38583852      case ringorder_a: /*  a(...),ls -> wp/dp */
    3859       { 
     3853      {
    38603854        r->block0[j]=rOppVar(r, src->block1[i]);
    38613855        r->block1[j]=rOppVar(r, src->block0[i]);
     
    38893883        break;
    38903884    }
    3891   } 
     3885  }
    38923886  rComplete(r);
    38933887#ifdef RDEBUG
     
    40053999      if (MATELEM(D0,i,j) != NULL)
    40064000      {
    4007         p = prCopyR(MATELEM(D0,i,j), src->nc->basering, dest);
    4008         MATELEM(D,i,j) = nc_p_CopyPut(p, dest);
    4009         p_Delete(&p, dest);
    4010         p = NULL;
     4001        p = prCopyR(MATELEM(D0,i,j), src->nc->basering, dest);
     4002        MATELEM(D,i,j) = nc_p_CopyPut(p, dest);
     4003        p_Delete(&p, dest);
     4004        p = NULL;
    40114005      }
    40124006    }
     
    40404034      {
    40414035        r->order[i]=ringorder_a64;
    4042         int *w=r->wvhdl[i];
    4043         int64 *w64=(int64 *)omAlloc((r->block1[i]-r->block0[i]+1)*sizeof(int64));
    4044         for(j=r->block1[i]-r->block0[i];j>=0;j--)
    4045                 w64[j]=(int64)w[j];
    4046         r->wvhdl[i]=(int*)w64;
    4047         omFreeSize(w,(r->block1[i]-r->block0[i]+1)*sizeof(int));
     4036        int *w=r->wvhdl[i];
     4037        int64 *w64=(int64 *)omAlloc((r->block1[i]-r->block0[i]+1)*sizeof(int64));
     4038        for(j=r->block1[i]-r->block0[i];j>=0;j--)
     4039                w64[j]=(int64)w[j];
     4040        r->wvhdl[i]=(int*)w64;
     4041        omFreeSize(w,(r->block1[i]-r->block0[i]+1)*sizeof(int));
    40484042      }
    40494043      i++;
Note: See TracChangeset for help on using the changeset viewer.