Changeset db28cee in git


Ignore:
Timestamp:
Dec 21, 1999, 12:44:03 PM (24 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
Children:
e4e42c02810a4796543855ac213cb8eaeab6b28f
Parents:
de4b5341ff19bcfd397ab4b1384ff66419cda3f0
Message:
*hannes: div/mod for int


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

Legend:

Unmodified
Added
Removed
  • Singular/grammar.y

    rde4b53 rdb28cee  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: grammar.y,v 1.76 1999-12-06 16:06:44 obachman Exp $ */
     4/* $Id: grammar.y,v 1.77 1999-12-21 11:44:01 Singular Exp $ */
    55/*
    66* ABSTRACT: SINGULAR shell grammatik
     
    139139%token GE
    140140%token LE
    141 %token INTDIV
    142141%token MINUSMINUS
    143142%token NOT
     
    300299%left '<' '>' GE LE
    301300%left '+' '-'
    302 %left '*' '/' '%' INTDIV
     301%left '*' '/' '%'
    303302%left UMINUS NOT
    304303%left  '^'
     
    751750        | expr '/' expr
    752751          {
    753             if(iiExprArith2(&$$,&$1,'/',&$3)) YYERROR;
    754           }
    755         | expr INTDIV expr
    756           {
    757             if(iiExprArith2(&$$,&$1,INTDIV,&$3)) YYERROR;
     752            if(iiExprArith2(&$$,&$1,$<i>2,&$3)) YYERROR;
    758753          }
    759754        | expr '^' expr
     
    763758        | expr '%' expr
    764759          {
    765             if(iiExprArith2(&$$,&$1,'%',&$3)) YYERROR;
     760            if(iiExprArith2(&$$,&$1,$<i>2,&$3)) YYERROR;
    766761          }
    767762        | expr '>' expr
  • Singular/iparith.cc

    rde4b53 rdb28cee  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: iparith.cc,v 1.196 1999-12-20 16:38:22 krueger Exp $ */
     4/* $Id: iparith.cc,v 1.197 1999-12-21 11:44:02 Singular Exp $ */
    55
    66/*
     
    148148  { "diff",        0, DIFF_CMD ,          CMD_2},
    149149  { "dim",         0, DIM_CMD ,           CMD_1},
    150   { "div",         0, INTDIV ,            INTDIV},
     150  { "div",         0, INTDIV_CMD ,        '/'},
    151151#ifdef DRING
    152152  { "dring",       0, DRING_CMD ,         DRING_CMD},
     
    222222  { "minor",       0, MINOR_CMD ,         CMD_23},
    223223  { "minres",      0, MINRES_CMD ,        CMD_1},
    224   { "mod",         0, '%',                '%'},
     224  { "mod",         0, INTMOD_CMD ,        '%'},
    225225  { "module",      0, MODUL_CMD ,         MODUL_CMD},
    226226  { "modulo",      0, MODULO_CMD ,        CMD_2},
     
    365365    case '*': (*aa) *= bb; break;
    366366    case '/':
    367     case INTDIV: (*aa) /= bb; break;
    368     case '%': (*aa) %= bb; break;
     367    case INTDIV_CMD: (*aa) /= bb; break;
     368    case '%':
     369    case INTMOD_CMD: (*aa) %= bb; break;
    369370  }
    370371  res->data=(char *)aa;
     
    10031004  return FALSE;
    10041005}
    1005 static BOOLEAN jjDIV_I(leftv res, leftv u, leftv v)
     1006static BOOLEAN jjDIVMOD_I(leftv res, leftv u, leftv v)
    10061007{
    10071008  int a= (int) u->Data();
     
    10151016  int c=a%bb;
    10161017  if(c<0) c+=bb;
    1017   //res->data = (char *)((a-c) / b);
    1018   res->data = (char *)(a / b);
     1018  int r=0;
     1019  switch (iiOp)
     1020  {
     1021    case INTMOD_CMD:
     1022        r=c;            break;
     1023    case '%':
     1024        r= (a % b);     break;
     1025    case INTDIV_CMD:
     1026        r=((a-c) /b);   break;
     1027    case '/':
     1028        r= (a / b);     break;
     1029  }
     1030  res->data=(void *)r;
    10191031  return FALSE;
    10201032}
     
    10541066    res->data = (char *)pDivideM((poly)u->CopyD(POLY_CMD),pHead(q));
    10551067  }
    1056   return FALSE;
    1057 }
    1058 static BOOLEAN jjMOD_I(leftv res, leftv u, leftv v)
    1059 {
    1060   int a=(int)u->Data();
    1061   int b=ABS((int)v->Data());
    1062   if (errorreported) return TRUE;
    1063   if (b==0)
    1064   {
    1065     WerrorS("div. by 0");
    1066     return TRUE;
    1067   }
    1068   int c=a%b;
    1069   if(c<0) c+=b;
    1070   res->data = (char *)c;
    10711068  return FALSE;
    10721069}
     
    20982095,{jjDIV_P,     '/',            POLY_CMD,       POLY_CMD,   POLY_CMD PROFILER}
    20992096,{jjDIV_P,     '/',            VECTOR_CMD,     VECTOR_CMD, POLY_CMD PROFILER}
    2100 ,{jjDIV_I,     '/',            INT_CMD,        INT_CMD,    INT_CMD PROFILER}
     2097,{jjDIVMOD_I,  '/',            INT_CMD,        INT_CMD,    INT_CMD PROFILER}
    21012098,{jjOP_IV_I,   '/',            INTVEC_CMD,     INTVEC_CMD, INT_CMD PROFILER}
    21022099,{jjOP_IV_I,   '/',            INTMAT_CMD,     INTMAT_CMD, INT_CMD PROFILER}
    2103 ,{jjDIV_I,     INTDIV,         INT_CMD,        INT_CMD,    INT_CMD PROFILER}
    2104 ,{jjOP_IV_I,   INTDIV,         INTVEC_CMD,     INTVEC_CMD, INT_CMD PROFILER}
    2105 ,{jjOP_IV_I,   INTDIV,         INTMAT_CMD,     INTMAT_CMD, INT_CMD PROFILER}
    2106 ,{jjMOD_I,     '%',            INT_CMD,        INT_CMD,    INT_CMD PROFILER}
     2100,{jjDIVMOD_I,  INTDIV_CMD,     INT_CMD,        INT_CMD,    INT_CMD PROFILER}
     2101,{jjOP_IV_I,   INTDIV_CMD,     INTVEC_CMD,     INTVEC_CMD, INT_CMD PROFILER}
     2102,{jjOP_IV_I,   INTDIV_CMD,     INTMAT_CMD,     INTMAT_CMD, INT_CMD PROFILER}
     2103,{jjDIVMOD_I,  '%',            INT_CMD,        INT_CMD,    INT_CMD PROFILER}
    21072104,{jjOP_IV_I,   '%',            INTVEC_CMD,     INTVEC_CMD, INT_CMD PROFILER}
    21082105,{jjOP_IV_I,   '%',            INTMAT_CMD,     INTMAT_CMD, INT_CMD PROFILER}
     2106,{jjDIVMOD_I,  INTMOD_CMD,     INT_CMD,        INT_CMD,    INT_CMD PROFILER}
     2107,{jjOP_IV_I,   INTMOD_CMD,     INTVEC_CMD,     INTVEC_CMD, INT_CMD PROFILER}
     2108,{jjOP_IV_I,   INTMOD_CMD,     INTMAT_CMD,     INTMAT_CMD, INT_CMD PROFILER}
    21092109,{jjPOWER_I,   '^',            INT_CMD,        INT_CMD,    INT_CMD PROFILER}
    21102110,{jjPOWER_N,   '^',            NUMBER_CMD,     NUMBER_CMD, INT_CMD PROFILER}
  • Singular/tok.h

    rde4b53 rdb28cee  
    77* ABSTRACT: tokens, types for interpreter; general macros
    88*/
    9 /* $Id: tok.h,v 1.34 1999-12-02 23:03:52 wenk Exp $ */
     9/* $Id: tok.h,v 1.35 1999-12-21 11:44:01 Singular Exp $ */
    1010
    1111#ifndef MYYSTYPE
     
    7575  INSERT_CMD,
    7676  INT_CMD,
     77  INTDIV_CMD,
     78  INTMOD_CMD,
    7779  INTVEC_CMD,
    7880  IS_RINGVAR,
Note: See TracChangeset for help on using the changeset viewer.