Changeset a138f8d in git


Ignore:
Timestamp:
Aug 9, 2004, 4:44:31 PM (19 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
Children:
44f44d4d66938c7ce97122658bd25e0434ecd70a
Parents:
1b11d1e2918321346483d859f0c183f4403551b6
Message:
*hannes: experimental:rOpp


git-svn-id: file:///usr/local/Singular/svn/trunk@7341 2c84dea3-7e68-4137-9b89-c4e89433aadc
Location:
kernel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • kernel/ring.cc

    r1b11d1e ra138f8d  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: ring.cc,v 1.12 2004-07-29 09:42:03 Singular Exp $ */
     4/* $Id: ring.cc,v 1.13 2004-08-09 14:44:31 Singular Exp $ */
    55
    66/*
     
    34593459}
    34603460
     3461#include <ctype.h>
     3462
     3463ring rOpp(ring src)
     3464{
     3465  ring r=rCopy(src);
     3466  // change vars v1..vN -> vN..v1
     3467  int i;
     3468  int i2=(rVar(r)-1)/2;
     3469  for(int i=i2; i>=0; i--)
     3470  {
     3471    // exchange names
     3472    char *p;
     3473    int t;
     3474    p=r->names[rVar(r)-i];
     3475    r->names[rVar(r)-i]=r->names[i];
     3476    r->names[i]=p;
     3477    // exchange VarOffset
     3478    t=r->VarOffset[i];
     3479    r->VarOffset[i]=r->VarOffset[rVar(r)-i];
     3480    r->VarOffset[rVar(r)-i]=t;
     3481  }
     3482  // change names:
     3483  for (i=rVar(r)-1; i>=0; i--)
     3484  {
     3485    char *p=r->names[i];
     3486    if(isupper(*p)) *p=tolower(*p);
     3487    else            *p=toupper(*p);
     3488  }
     3489  // change ordering: listing
     3490  // change ordering: compare
     3491  for(i=0; r->typ[i].ord_typ!=ro_none; i++)
     3492  {
     3493    int t,tt;
     3494    switch(r->typ[i].ord_typ)
     3495    {
     3496      case ro_dp:
     3497      //
     3498        t=r->typ[i].data.dp.start;
     3499        r->typ[i].data.dp.start=rVar(r)+1-r->typ[i].data.dp.end;
     3500        r->typ[i].data.dp.end=rVar(r)+1-t;
     3501        break;
     3502      case ro_wp:
     3503      case ro_wp_neg:
     3504      {
     3505        t=r->typ[i].data.wp.start;
     3506        r->typ[i].data.wp.start=rVar(r)+1-r->typ[i].data.wp.end;
     3507        r->typ[i].data.wp.end=rVar(r)+1-t;
     3508        // invert r->typ[i].data.wp.weights
     3509        i2=(r->typ[i].data.wp.end+1-r->typ[i].data.wp.start)/2;
     3510        int *w=r->typ[i].data.wp.weights;
     3511        for(int j=0; j<=i2; j++)
     3512        {
     3513          t=w[j];
     3514          w[j]=w[r->typ[i].data.wp.end-r->typ[i].data.wp.start-j];
     3515          w[r->typ[i].data.wp.end-r->typ[i].data.wp.start-j]=t;
     3516        }
     3517        break;
     3518      }         
     3519      //case ro_wp64:
     3520      case ro_syzcomp:
     3521      case ro_syz:
     3522         WerrorS("not implemented in rOpp");
     3523         // should not happen
     3524         break;
     3525
     3526      case ro_cp:
     3527        t=r->typ[i].data.cp.start;
     3528        r->typ[i].data.cp.start=rVar(r)+1-r->typ[i].data.cp.end;
     3529        r->typ[i].data.cp.end=rVar(r)+1-t;
     3530        break;
     3531      case ro_none:
     3532      default:
     3533       WerrorS("unknown typ in rOpp");
     3534       break;
     3535    }
     3536  }
     3537  // avoid printing changed stuff:
     3538  r->order[0]=0;
     3539  return r;
     3540}
  • kernel/ring.h

    r1b11d1e ra138f8d  
    77* ABSTRACT - the interpreter related ring operations
    88*/
    9 /* $Id: ring.h,v 1.3 2004-04-28 16:38:04 Singular Exp $ */
     9/* $Id: ring.h,v 1.4 2004-08-09 14:44:30 Singular Exp $ */
    1010
    1111/* includes */
     
    2828void   rKill(ring r);
    2929ring   rCopy(ring r);
     30ring   rOpp(ring r);
    3031
    3132
Note: See TracChangeset for help on using the changeset viewer.