Changeset e95eaa7 in git for Singular/polys-impl.cc


Ignore:
Timestamp:
Mar 21, 2000, 5:21:43 PM (24 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', '38dfc5131670d387a89455159ed1e071997eec94')
Children:
0146cecb1a3707a7b3ebc3149e2710be6a42f53d
Parents:
f6460fc7a087a223a21ebcc2dbe20ecd54a3a0cc
Message:
*hannes: debug for shifted exp.


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

Legend:

Unmodified
Added
Removed
  • Singular/polys-impl.cc

    rf6460f re95eaa7  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: polys-impl.cc,v 1.35 2000-02-07 17:21:48 Singular Exp $ */
     4/* $Id: polys-impl.cc,v 1.36 2000-03-21 16:21:41 Singular Exp $ */
    55
    66/***************************************************************
     
    3030#include "polys-impl.h"
    3131
     32#ifdef HAVE_SHIFTED_EXPONENTS
     33#ifdef PDEBUG
     34int pDBsyzComp=0;
     35#endif
     36#endif
     37
    3238/***************************************************************
    3339 *
     
    745751{
    746752  int i;
    747  
     753
    748754  for (i = 1; i<=pVariables; i++)
    749755  {
     
    763769  ring old_ring = NULL;
    764770  BOOLEAN res;
    765  
     771
    766772  if (r != currRing)
    767773  {
     
    919925  return TRUE;
    920926}
     927
     928#ifdef HAVE_SHIFTED_EXPONENTS
     929int rComp_a(poly p1, poly p2, int i, int rr)
     930{
     931  int j;
     932  int o1=0;
     933  int o2=0;
     934  for(j=currRing->block0[i];j<=currRing->block1[i];j++)
     935  {
     936    o1+=pGetExp(p1,j)*currRing->wvhdl[i][j-currRing->block0[i]];
     937    o2+=pGetExp(p2,j)*currRing->wvhdl[i][j-currRing->block0[i]];
     938  }
     939  if (o1>o2)
     940  {
     941    assume(rr==1);
     942    return 1;
     943  }
     944  if (o1<o2)
     945  {
     946    assume(rr==-1);
     947    return -1;
     948  }
     949  return 0;
     950}
     951int rComp_deg(poly p1, poly p2, int i, int rr)
     952{
     953  int j;
     954  int o1=0;
     955  int o2=0;
     956  for(j=currRing->block0[i];j<=currRing->block1[i];j++)
     957  {
     958    o1+=pGetExp(p1,j);
     959    o2+=pGetExp(p2,j);
     960  }
     961  if (o1>o2)
     962  {
     963    assume(rr==1);
     964    return 1;
     965  }
     966  if (o1<o2)
     967  {
     968    assume(rr==-1);
     969    return -1;
     970  }
     971  return 0;
     972}
     973int rComp_lex(poly p1, poly p2, int i, int rr)
     974{
     975  int j;
     976  for(j=currRing->block0[i];j<=currRing->block1[i];j++)
     977  {
     978    if (pGetExp(p1,j) > pGetExp(p2,j))
     979    {
     980      assume(rr==1);
     981      return 1;
     982    }
     983    else if (pGetExp(p1,j) < pGetExp(p2,j))
     984    {
     985      assume(rr==-1);
     986      return -1;
     987    }
     988  }
     989  return 0;
     990}
     991int rComp_revlex(poly p1, poly p2, int i, int rr)
     992{
     993  int j;
     994  int e1,e2;
     995  for(j=currRing->block1[i];j>=currRing->block0[i];j--)
     996  {
     997    e1=pGetExp(p1,j);
     998    e2=pGetExp(p2,j);
     999    if (e1 < e2)
     1000    {
     1001      assume(rr== 1);
     1002      return  1;
     1003    }
     1004    else if (e1 > e2)
     1005    {
     1006      assume(rr== -1);
     1007      return -1;
     1008    }
     1009  }
     1010  return 0;
     1011}
     1012int rComp0(poly p1, poly p2)
     1013{
     1014  int rr,r;
     1015  _prMonCmp(p1, p2, currRing, {rr=0;goto next_after_comp;}, {rr=1;goto next_after_comp;}, {rr=-1;goto next_after_comp;});
     1016  next_after_comp:
     1017  int n=rBlocks(currRing)-1;
     1018  int i,j;
     1019  for(i=0;i<n;i++)
     1020  {
     1021    switch (currRing->order[i])
     1022    {
     1023      case ringorder_a:
     1024        r=rComp_a(p1,p2,i,rr);
     1025        if (r!=0) return r;
     1026        break;
     1027
     1028      case ringorder_c:
     1029        if (pGetComp(p1) < pGetComp(p2))
     1030        {
     1031          assume(rr==1);
     1032          return 1;
     1033        }
     1034        if (pGetComp(p1) > pGetComp(p2))
     1035        {
     1036          assume(rr==-1);
     1037          return -1;
     1038        }
     1039        break;
     1040
     1041      case ringorder_C:
     1042        if (pGetComp(p1) > pGetComp(p2))
     1043        {
     1044          assume(rr==1);
     1045          return 1;
     1046        }
     1047        if (pGetComp(p1) < pGetComp(p2))
     1048        {
     1049          assume(rr==-1);
     1050          return -1;
     1051        }
     1052        break;
     1053
     1054      case ringorder_M:
     1055        {
     1056          assume(0); // not yet implemented
     1057          break;
     1058        }
     1059
     1060      case ringorder_lp:
     1061        r=rComp_lex(p1,p2,i,rr);
     1062        if (r!=0) return r;
     1063        break;
     1064
     1065      case ringorder_ls:
     1066        r=rComp_lex(p1,p2,i,-rr);
     1067        if (r!=0) return -r;
     1068        break;
     1069
     1070      case ringorder_dp:
     1071        r=rComp_deg(p1,p2,i,rr);
     1072        if (r!=0)  return r;
     1073        r=rComp_revlex(p1,p2,i,rr);
     1074        if (r!=0) return r;
     1075        break;
     1076
     1077      case ringorder_Dp:
     1078        r=rComp_deg(p1,p2,i,rr);
     1079        if (r!=0) return r;
     1080        r=rComp_lex(p1,p2,i,rr);
     1081        if (r!=0) return r;
     1082        break;
     1083
     1084      case ringorder_ds:
     1085        r=rComp_deg(p1,p2,i,-rr);
     1086        if (r!=0) return -r;
     1087        r=rComp_revlex(p1,p2,i,rr);
     1088        if (r!=0) return r;
     1089        break;
     1090
     1091      case ringorder_Ds:
     1092        r=rComp_deg(p1,p2,i,-rr);
     1093        if (r!=0) return -r;
     1094        r=rComp_lex(p1,p2,i,rr);
     1095        if (r!=0) return r;
     1096        break;
     1097
     1098      case ringorder_wp:
     1099        r=rComp_a(p1,p2,i,rr);
     1100        if (r!=0) return r;
     1101        r=rComp_revlex(p1,p2,i,rr);
     1102        if (r!=0) return r;
     1103        break;
     1104
     1105      case ringorder_Wp:
     1106        r=rComp_a(p1,p2,i,rr);
     1107        if (r!=0) return r;
     1108        r=rComp_lex(p1,p2,i,rr);
     1109        if (r!=0) return r;
     1110        break;
     1111
     1112      case ringorder_ws:
     1113        r=rComp_a(p1,p2,i,-rr);
     1114        if (r!=0) return -r;
     1115        r=rComp_revlex(p1,p2,i,rr);
     1116        if (r!=0) return r;
     1117        break;
     1118
     1119      case ringorder_Ws:
     1120        r=rComp_a(p1,p2,i,-rr);
     1121        if (r!=0) return -r;
     1122        r=rComp_lex(p1,p2,i,rr);
     1123        if (r!=0) return r;
     1124        break;
     1125
     1126      case ringorder_S:
     1127        assume(0);
     1128        break;
     1129
     1130      case ringorder_s:
     1131        /*  ro_syz */
     1132        if ((pGetComp(p1) > pDBsyzComp) && (pGetComp(p2) > pDBsyzComp)) break;
     1133        if ((pGetComp(p1) <= pDBsyzComp) && (pGetComp(p2) <= pDBsyzComp)) break;
     1134        if (pGetComp(p1) <= pDBsyzComp) return 1;
     1135        /* if (pGetComp(p2) <= pDBsyzComp) */ return -1;
     1136        break;
     1137
     1138      case ringorder_unspec:
     1139      case ringorder_no:
     1140      default:
     1141          Print("undef. ringorder used\n");
     1142          break;
     1143    }
     1144  }
     1145  return rr;
     1146}
     1147#endif
    9211148#endif // PDEBUG
    9221149
Note: See TracChangeset for help on using the changeset viewer.