Changeset b849856 in git


Ignore:
Timestamp:
Dec 18, 2018, 4:17:32 PM (5 years ago)
Author:
Karim Abou Zeid <karim23697@…>
Branches:
(u'spielwiese', 'd1b01e9d51ade4b46b745d3bada5c5f3696be3a8')
Children:
921f32e8096a04479ffe856dbc19d6e5553acbf6
Parents:
c7231560b85e2e1683beb9629db0560ee8ca425518a3dfc149d105d7058f8c06ea4ad50eb59f0c94
Message:
Merge branch 'spielwiese' into christmas-release
Files:
2 added
8 deleted
100 edited
1 moved

Legend:

Unmodified
Added
Removed
  • Makefile.am

    rc723156 rb849856  
    11ACLOCAL_AMFLAGS = -I m4
    22
    3 if ENABLE_OMALLOC
    4   USE_OMALLOC = omalloc
    5 else
    6   USE_OMALLOC = xalloc
    7 endif
    8 
    9 SUBDIRS = resources $(USE_OMALLOC) factory \
     3SUBDIRS = resources omalloc factory \
    104libpolys gfanlib IntegerProgramming \
    115kernel Singular \
  • Singular/LIB/fpadim.lib

    r18a3df rb849856  
    132132"PURPOSE: Checks, if all the Assumptions are holding
    133133"
    134 {if (attrib(basering,"isLetterplaceRing")==0) {ERROR("Basering is not a Letterplace ring!");}
    135   if (d > attrib(basering,"uptodeg")) {ERROR("Specified degree bound exceeds ring parameter!");}
     134{if (!isFreeAlgebra(basering)) {ERROR("Basering is not a Letterplace ring!");}
     135  if (d > lpDegBound(basering)) {ERROR("Specified degree bound exceeds ring parameter!");}
    136136  int i;
    137137  for (i = 1; i <= size(L); i++)
    138   {if (entryViolation(L[i], attrib(basering,"isLetterplaceRing")))
     138  {if (entryViolation(L[i], lpBlockSize(basering)))
    139139    {ERROR("Not allowed monomial/intvec found!");}
    140140  }
     
    907907  // construct the Graph of normal words [Studzinski page 78]
    908908  // construct set of vertices
    909   int v = attrib(basering,"isLetterplaceRing"); int d = attrib(basering,"uptodeg");
     909  int v = lpBlockSize(basering); int d = lpDegBound(basering);
    910910  ideal V; poly p,q,w;
    911911  ideal LG = lead(G);
     
    16911691EXAMPLE: example lpDHilbert; shows examples
    16921692"
    1693 {int degbound = attrib(basering,"uptodeg");int n = attrib(basering, "isLetterplaceRing");
     1693{int degbound = lpDegBound(basering);int n = lpBlockSize(basering);
    16941694  if (size(#) > 0){if (typeof(#[1])=="int"){if (#[1] >= 0){degbound = #[1];}}}
    16951695  if (size(#) > 1){if (typeof(#[1])=="int"){if (#[2] > 0){n = #[2];}}}
     
    17331733EXAMPLE: example lpDHilbertSickle; shows examples
    17341734"
    1735 {int degbound = attrib(basering,"uptodeg");int n = attrib(basering, "isLetterplaceRing");
     1735{int degbound = lpDegBound(basering);int n = lpBlockSize(basering);
    17361736  if (size(#) > 0){if (typeof(#[1])=="int"){if (#[1] >= 0){degbound = #[1];}}}
    17371737  if (size(#) > 1){if (typeof(#[1])=="int"){if (#[2] > 0){n = #[2];}}}
     
    17781778SEE ALSO: ncHilb_lib
    17791779"
    1780 {int degbound = attrib(basering,"uptodeg");int n = attrib(basering, "isLetterplaceRing");
     1780{int degbound = lpDegBound(basering);int n = lpBlockSize(basering);
    17811781  if (size(#) > 0){if (typeof(#[1])=="int"){if (#[1] >= 0){degbound = #[1];}}}
    17821782  if (size(#) > 1){if (typeof(#[1])=="int"){if (#[2] > 0){n = #[2];}}}
     
    18091809EXAMPLE: example lpKDimCheck; shows examples
    18101810"
    1811 {int n = attrib(basering,"isLetterplaceRing");
     1811{int n = lpBlockSize(basering);
    18121812  list L;
    18131813  ideal R;
     
    18441844EXAMPLE: example lpKDim; shows examples
    18451845"
    1846 {int degbound = attrib(basering, "uptodeg");int n = attrib(basering, "isLetterplaceRing");
     1846{int degbound = lpDegBound(basering);int n = lpBlockSize(basering);
    18471847  if (size(#) > 0){if (typeof(#[1])=="int"){if (#[1] >= 0){degbound = #[1];}}}
    18481848  if (size(#) > 1){if (typeof(#[1])=="int"){if (#[2] > 0){n = #[2];}}}
     
    19481948EXAMPLE: example lpSickle; shows examples
    19491949"
    1950 {int degbound = attrib(basering,"uptodeg"); int n = attrib(basering, "isLetterplaceRing");
     1950{int degbound = lpDegBound(basering); int n = lpBlockSize(basering);
    19511951  if (size(#) > 0){if (typeof(#[1])=="int"){if (#[1] >= 0){degbound = #[1];}}}
    19521952  if (size(#) > 1){if (typeof(#[1])=="int"){if (#[2] > 0){n = #[2];}}}
     
    19881988EXAMPLE: example lpSickleDim; shows examples
    19891989"
    1990 {int degbound = attrib(basering,"uptodeg");int n = attrib(basering, "isLetterplaceRing");
     1990{int degbound = lpDegBound(basering);int n = lpBlockSize(basering);
    19911991  if (size(#) > 0){if (typeof(#[1])=="int"){if (#[1] >= 0){degbound = #[1];}}}
    19921992  if (size(#) > 1){if (typeof(#[1])=="int"){if (#[2] > 0){n = #[2];}}}
     
    20282028EXAMPLE: example lpSickleHil; shows examples
    20292029"
    2030 {int degbound = attrib(basering,"uptodeg");int n = attrib(basering, "isLetterplaceRing");
     2030{int degbound = lpDegBound(basering);int n = lpBlockSize(basering);
    20312031  if (size(#) > 0){if (typeof(#[1])=="int"){if (#[1] >= 0){degbound = #[1];}}}
    20322032  if (size(#) > 1){if (typeof(#[1])=="int"){if (#[2] > 0){n = #[2];}}}
     
    20752075"
    20762076{int m,d,h,degbound;
    2077   m = 1; d = 0; h = 0; degbound = attrib(basering,"uptodeg");
     2077  m = 1; d = 0; h = 0; degbound = lpDegBound(basering);
    20782078  if (size(#) > 0) {if (typeof(#[1])=="int"){if (#[1] < 1) {m = 0;}}}
    20792079  if (size(#) > 1) {if (typeof(#[1])=="int"){if (#[2] > 0) {d = 1;}}}
     
    20822082  if (m == 1)
    20832083  {if (d == 0)
    2084     {if (h == 0) {return(lpSickle(G,degbound,attrib(basering,"isLetterplaceRing")));}
    2085       else        {return(lpSickleHil(G,degbound,attrib(basering,"isLetterplaceRing")));}
     2084    {if (h == 0) {return(lpSickle(G,degbound,lpBlockSize(basering)));}
     2085      else        {return(lpSickleHil(G,degbound,lpBlockSize(basering)));}
    20862086    }
    20872087    else
    2088     {if (h == 0) {return(lpSickleDim(G,degbound,attrib(basering,"isLetterplaceRing")));}
    2089       else {return(lpDHilbertSickle(G,degbound,attrib(basering,"isLetterplaceRing")));}
     2088    {if (h == 0) {return(lpSickleDim(G,degbound,lpBlockSize(basering)));}
     2089      else {return(lpDHilbertSickle(G,degbound,lpBlockSize(basering)));}
    20902090    }
    20912091  }
     
    20932093  {if (d == 0)
    20942094    {if (h == 0) {ERROR("You request to do nothing, so relax and do so");}
    2095       else        {return(lpHilbert(G,degbound,attrib(basering,"isLetterplaceRing")));}
     2095      else        {return(lpHilbert(G,degbound,lpBlockSize(basering)));}
    20962096    }
    20972097    else
    2098     {if (h == 0) {return(lpKDim(G,degbound,attrib(basering,"isLetterplaceRing")));}
    2099       else {return(lpDHilbert(G,degbound,attrib(basering,"isLetterplaceRing")));}
     2098    {if (h == 0) {return(lpKDim(G,degbound,lpBlockSize(basering)));}
     2099      else {return(lpDHilbert(G,degbound,lpBlockSize(basering)));}
    21002100    }
    21012101  }
  • Singular/LIB/fpaprops.lib

    r18a3df rb849856  
    9191  // if longest word has length 1 we handle it as a special case
    9292  if (l == 1) {
    93     int n = attrib(basering, "isLetterplaceRing"); // variable count
     93    int n = lpBlockSize(basering); // variable count
    9494    int k = size(G);
    9595    if (k == n) { // only the field left
     
    746746    ERROR("Ufnarovskij graph not implemented for l = 1");
    747747  }
    748   int lV = attrib(basering, "isLetterplaceRing");
     748  int lV = lpBlockSize(basering);
    749749  // TODO: what if l <= 0?
    750750  dbprint("computing standard words");
     
    836836    return (words); // no standard words
    837837  }
    838   int lV = attrib(basering, "isLetterplaceRing"); // variable count
     838  int lV = lpBlockSize(basering); // variable count
    839839  list prevWords = ivStandardWords(G, length - 1);
    840840  list words;
     
    907907  // if longest word has length 1, or G is the zero ideal, we handle it as a special case
    908908  if (l == 1 || size(G) == 0) {
    909     int n = attrib(basering, "isLetterplaceRing"); // variable count
     909    int n = lpBlockSize(basering); // variable count
    910910    int k = size(G);
    911911    if (k == n) { // V = {1} no edges
     
    10011001  // delete variables in LM(G1) from the ring
    10021002  def save = basering;
    1003   ring R = basering;
     1003  def R = basering;
    10041004  if (size(G1) > 0) {
    10051005    while (size(G1) > 0) {
    1006       if (attrib(R, "isLetterplaceRing") > 1) {
    1007         ring R = lpDelVar(lp2iv(G1[1])[1]);
     1006      if (lpBlockSize(R) > 1) {
     1007        def @R = R - string(G1[1]);
     1008        R = @R;
     1009        kill @R;
     1010        setring R;
     1011        /* ring R = lpDelVar(lp2iv(G1[1])[1]); // TODO replace with proper method */
    10081012        ideal G1 = imap(save,G1);
    10091013        G1 = simplify(G1, 2); // remove zero generators
     
    10671071static proc imHasLoops(intmat A) {
    10681072  int n = ncols(A);
    1069   for (int i = 1; i < n; i++) {
     1073  for (int i = 1; i <= n; i++) {
    10701074    if (A[i,i] == 1) {
    10711075      return (1);
     
    10781082{
    10791083  list LG = lpId2ivLi(lead(G));
    1080   int n = attrib(basering, "isLetterplaceRing");
    1081   int degbound = attrib(basering, "uptodeg");
     1084  int n = lpBlockSize(basering);
     1085  int degbound = lpDegBound(basering);
    10821086
    10831087  list V;
     
    13761380}
    13771381
    1378 // TODO: use original ring attrib to create a new letterplace ring
    1379 // removes a variable from a letterplace ring (a bit of a hack)
    1380 static proc lpDelVar(int index) {
    1381   int lV = attrib(basering, "isLetterplaceRing"); // number of variables in the main block
    1382   int d = attrib(basering, "uptodeg"); // degree bround
    1383   list LR = ringlist(basering);
    1384 
    1385   if (!(index >= 1 && index <= lV)) { return (basering); } // invalid index
    1386 
    1387   // remove frome the variable list
    1388   for (int i = (d-1)*lV + index; i >= 1; i = i - lV) {
    1389     LR[2] = delete(LR[2], i);
    1390   } kill i;
    1391 
    1392   // remove from a ordering
    1393   intvec aiv = LR[3][1][2];
    1394   aiv = aiv[1..(d*lV-d)];
    1395   LR[3][1][2] = aiv;
    1396 
    1397   // remove block orderings
    1398   int del = (lV - index);
    1399   int cnt = -1;
    1400   for (int i = size(LR[3]); i >= 2; i--) {
    1401     if (LR[3][i][2] != 0) {
    1402       for (int j = size(LR[3][i][2]); j >= 1; j--) {
    1403         cnt++; // next 1
    1404         if (cnt%lV == del) {
    1405           // delete
    1406           if (size(LR[3][i][2]) > 1) { // if we have more than one element left, delete one
    1407             LR[3][i][2] = delete(LR[3][i][2],j);
    1408           } else { // otherwise delete the whole block
    1409             LR[3] = delete(LR[3], i);
    1410             break;
    1411           }
    1412         }
    1413       } kill j;
    1414     }
    1415   } kill i;
    1416 
    1417   def R = setLetterplaceAttributes(ring(LR),d,lV-1);
    1418   return (R);
    1419 }
    1420 example
    1421 {
    1422   "EXAMPLE:"; echo = 2;
    1423   ring r = 0,(x,y,z),dp;
    1424   def A = makeLetterplaceRing(3);
    1425   setring A; A;
    1426   def R = lpDelVar(2); setring R; R;
    1427 }
     1382// no longer working with new interface and new orderings
     1383/* // TODO: use original ring attrib to create a new letterplace ring */
     1384/* // removes a variable from a letterplace ring (a bit of a hack) */
     1385/* static proc lpDelVar(int index) { */
     1386/*   int lV = lpBlockSize(basering); // number of variables in the main block */
     1387/*   int d = lpDegBound(basering); // degree bround */
     1388/*   list LR = ringlist(basering); */
     1389
     1390/*   if (!(index >= 1 && index <= lV)) { return (basering); } // invalid index */
     1391
     1392/*   // remove frome the variable list */
     1393/*   for (int i = (d-1)*lV + index; i >= 1; i = i - lV) { */
     1394/*     LR[2] = delete(LR[2], i); */
     1395/*   } kill i; */
     1396
     1397/*   // remove from a ordering */
     1398/*   intvec aiv = LR[3][1][2]; */
     1399/*   aiv = aiv[1..(d*lV-d)]; */
     1400/*   LR[3][1][2] = aiv; */
     1401
     1402/*   // remove block orderings */
     1403/*   int del = (lV - index); */
     1404/*   int cnt = -1; */
     1405/*   for (int i = size(LR[3]); i >= 2; i--) { */
     1406/*     if (LR[3][i][2] != 0) { */
     1407/*       for (int j = size(LR[3][i][2]); j >= 1; j--) { */
     1408/*         cnt++; // next 1 */
     1409/*         if (cnt%lV == del) { */
     1410/*           // delete */
     1411/*           if (size(LR[3][i][2]) > 1) { // if we have more than one element left, delete one */
     1412/*             LR[3][i][2] = delete(LR[3][i][2],j); */
     1413/*           } else { // otherwise delete the whole block */
     1414/*             LR[3] = delete(LR[3], i); */
     1415/*             break; */
     1416/*           } */
     1417/*         } */
     1418/*       } kill j; */
     1419/*     } */
     1420/*   } kill i; */
     1421
     1422/*   def R = setLetterplaceAttributes(ring(LR),d,lV-1); */
     1423/*   return (R); */
     1424/* } */
     1425/* example */
     1426/* { */
     1427/*   "EXAMPLE:"; echo = 2; */
     1428/*   ring r = 0,(x,y,z),dp; */
     1429/*   def A = makeLetterplaceRing(3); */
     1430/*   setring A; A; */
     1431/*   def R = lpDelVar(2); setring R; R; */
     1432/* } */
  • Singular/LIB/freegb.lib

    rc723156 rb849856  
    55LIBRARY: freegb.lib   Two-sided Groebner bases in free algebras and tools via Letterplace approach
    66AUTHORS: Viktor Levandovskyy,   viktor.levandovskyy at math.rwth-aachen.de
    7          Grischa Studzinski,    grischa.studzinski at math.rwth-aachen.de
    8          Karim Abou Zeid,       karim.abou.zeid at rwth-aachen.de
     7@*       Karim Abou Zeid,       karim.abou.zeid at rwth-aachen.de
     8@*       Grischa Studzinski,    grischa.studzinski at math.rwth-aachen.de
    99
    1010OVERVIEW: For the theory, see chapter 'Letterplace' in the Singular Manual.
     11
    1112This library provides access to kernel functions and also contains legacy code (partially as
    1213 static procedures) for compatibility reasons.
     
    2223
    2324PROCEDURES:
    24 freeAlgebra(r, d);               creates a ring with d blocks of shifted original variables
     25freeAlgebra(r, d);               creates a Letterplace ring out of given data
    2526isFreeAlgebra(r);                check whether r is a letterplace ring (free algebra)
    2627lpDegBound(R);                   returns the degree bound of a letterplace ring
    2728lpBlockSize(R);                  returns the size of the letterplace blocks
    2829
    29 letplaceGBasis(I);               two-sided Groebner basis of a letterplace ideal I
     30letplaceGBasis(I);               (deprecated, use twostd) two-sided Groebner basis of a letterplace ideal I
    3031
    3132lpDivision(f,I);                 two-sided division with remainder
     
    3637isVar(p);                        check whether p is a power of a single variable
    3738
    38 lpLmDivides(ideal I, poly p)     tests if there is a polynomial q in I with LM(q)|LM(p)
    39 lpVarAt(poly p, int pos)         returns the variable (as a poly) at position pos of the poly p
    40 
    41 makeLetterplaceRing(d);          (deprecated) creates a ring with d blocks of shifted original variables
    42 setLetterplaceAttributes(R,d,b); (for testing) supplies ring R with the letterplace structure
     39lpLmDivides(ideal I, poly p);    tests whether there exists q in I, such that LM(q)|LM(p)
     40lpVarAt(poly p, int pos);        returns the variable (as a poly) at position pos of the poly p
     41
     42makeLetterplaceRing(d);          (deprecated, use freeAlgebra) creates a Letterplace ring out of given data
     43setLetterplaceAttributes(R,d,b); (for testing purposes) supplies ring R with the letterplace structure
    4344
    4445SEE ALSO: fpadim_lib, fpaprops_lib, fpalgebras_lib, LETTERPLACE
  • Singular/LIB/ncHilb.lib

    r18a3df rb849856  
    6969EXAMPLE: example fpahilb; shows an example "
    7070{
    71     if (attrib(basering, "isLetterplaceRing")==0)
     71    if (!isFreeAlgebra(basering))
    7272    {
    7373      ERROR("Basering should be Letterplace ring");
     
    7575    def save = basering;
    7676    int sz=size(#);
    77     int lV=attrib(save,"isLetterplaceRing"); // nvars(orig comm ring)
     77    int lV=lpBlockSize(save); // nvars(orig comm ring)
    7878    int ig=0;
    7979    int mgrad=0;
     
    137137    }
    138138    // new: truncation should be < than degbound/2
    139     int degbnd = attrib(save,"uptodeg");
     139    int degbnd = lpDegBound(save);
    140140    if (tdeg == 0)
    141141    {
     
    403403EXAMPLE: example rcolon; shows an example"
    404404{
    405     int lV =  attrib(R,"isLetterplaceRing"); //nvars(save);
     405    int lV =  lpBlockSize(R); //nvars(save);
    406406    if (lV == 0)
    407407    {
     
    419419        }
    420420    }
    421     int degbnd = attrib(R,"uptodeg");
     421    int degbnd = lpDegBound(R);
    422422    if ( 2*maxdegI != degbnd)
    423423    {
  • Singular/attrib.h

    rc723156 rb849856  
    88*/
    99#include "kernel/structs.h"
     10#include "omalloc/omalloc.h"
    1011#ifdef HAVE_OMALLOC
    11 #include "omalloc/omalloc.h"
    1212#include "omalloc/omallocClass.h"
    13 #else
    14 #include "xalloc/omalloc.h"
    1513#endif
    1614
  • Singular/countedref.h

    rc723156 rb849856  
    2121#define SINGULAR_COUNTEDREF_H_
    2222
    23 #ifdef HAVE_OMALLOC
    2423#include "omalloc/omalloc.h"
    25 #else
    26 #include "xalloc/omalloc.h"
    27 #endif
    28 
    2924#include "kernel/structs.h"
    3025#include "Singular/subexpr.h"
  • Singular/dyn_modules/bigintm/bigintm.cc

    rc723156 rb849856  
    11#include "kernel/mod2.h"
    22
    3 #ifdef HAVE_OMALLOC
    43#include "omalloc/omalloc.h"
    5 #else
    6 #include "xalloc/omalloc.h"
    7 #endif
    8 
    94#include "coeffs/coeffs.h"
    10 
    115#include "Singular/ipid.h"
    126#include "Singular/subexpr.h"
  • Singular/dyn_modules/pyobject/pyobject.cc

    rc723156 rb849856  
    1616#ifdef HAVE_PYTHON
    1717
    18 #ifdef HAVE_OMALLOC
    1918#include "omalloc/omalloc.h"
    20 #else
    21 #include "xalloc/omalloc.h"
    22 #endif
    23 
    2419#include "misc/intvec.h"
    2520
  • Singular/dyn_modules/python/python_module.cc

    rc723156 rb849856  
    1717#include "Singular/locals.h"
    1818
    19 #ifdef HAVE_OMALLOC
    2019#include "omalloc/omalloc.h"
    21 #else
    22 #include "xalloc/omalloc.h"
    23 #endif
    24 
    2520
    2621#include <stdio.h>
  • Singular/emacs.cc

    rc723156 rb849856  
    1010
    1111#include "kernel/mod2.h"
    12 
    13 #ifdef HAVE_OMALLOC
    1412#include "omalloc/omalloc.h"
    15 #else
    16 #include "xalloc/omalloc.h"
    17 #endif
    18 
    1913#include "resources/feResource.h"
    2014#include "Singular/feOpt.h"
  • Singular/extra.cc

    r18a3df rb849856  
    12431243    else
    12441244  #endif
     1245 /*==================== freeAlgebra for freeGB  ==================*/
     1246  #ifdef HAVE_SHIFTBBA
     1247    if (strcmp(sys_cmd, "freeAlgebra") == 0)
     1248    {
     1249      // copied from freegb.cc
     1250      const short t[]={2,RING_CMD,INT_CMD};
     1251      if (iiCheckTypes(h,t,1))
     1252      {
     1253        ring r=(ring)h->Data();
     1254        int d=(int)((long)h->next->Data());
     1255        if (d<2)
     1256        {
     1257          WerrorS("degree must be >=2");
     1258          return TRUE;
     1259        }
     1260        int i=0;
     1261        while(r->order[i]!=0)
     1262        {
     1263          if ((r->order[i]==ringorder_c) ||(r->order[i]==ringorder_C)) i++;
     1264          else if ((r->block0[i]==1)&&(r->block1[i]==r->N)) i++;
     1265          else
     1266          {
     1267            WerrorS("only for rings with a global ordering of one block");
     1268            return TRUE;
     1269          }
     1270        }
     1271        if ((r->order[i]!=0)
     1272            || (rHasLocalOrMixedOrdering(r)))
     1273        {
     1274          //WerrorS("only for rings with a global ordering of one block");
     1275          Werror("only for rings with a global ordering of one block,i=%d, o=%d",i,r->order[i]);
     1276          return TRUE;
     1277        }
     1278        ring R=freeAlgebra(r,d);
     1279        res->rtyp=RING_CMD;
     1280        res->data=R;
     1281        return R==NULL;
     1282      }
     1283      else return TRUE;
     1284    }
     1285    else
     1286  #endif
    12451287  /*==================== pcv ==================================*/
    12461288  #ifdef HAVE_PCV
  • Singular/feOpt.cc

    rc723156 rb849856  
    136136#if !defined(ESINGULAR) && !defined(TSINGULAR)
    137137
    138 #ifdef HAVE_OMALLOC
    139138#include "omalloc/omalloc.h"
    140 #else
    141 #include "xalloc/omalloc.h"
    142 #endif
    143 
    144139#include "resources/feResource.h"
    145140#include "kernel/oswrapper/feread.h"
  • Singular/febase.cc

    rc723156 rb849856  
    1010#ifndef STANDALONE_PARSER
    1111
    12 #ifdef HAVE_OMALLOC
    1312#include "omalloc/omalloc.h"
    14 #else
    15 #include "xalloc/omalloc.h"
    16 #endif
    17 
    1813#include "reporter/reporter.h"
    1914#include "misc/options.h"
  • Singular/fehelp.cc

    rc723156 rb849856  
    77
    88#include "kernel/mod2.h"
    9 
    10 #ifdef HAVE_OMALLOC
    119#include "omalloc/omalloc.h"
    12 #else
    13 #include "xalloc/omalloc.h"
    14 #endif
    15 
    1610#include "misc/mylimits.h"
    17 
    1811#include "resources/feResource.h"
    1912#include "reporter/reporter.h"
    20 
    2113#include "resources/omFindExec.h"
    22 
    2314#include "reporter/si_signals.h"
    2415
  • Singular/fevoices.cc

    rc723156 rb849856  
    99/* I need myfread in standalone_parser */
    1010#ifndef STANDALONE_PARSER
    11 
    12 #ifdef HAVE_OMALLOC
    1311#include "omalloc/omalloc.h"
    14 #else
    15 #include "xalloc/omalloc.h"
    16 #endif
    17 
    1812#include "misc/options.h"
    1913#include "reporter/reporter.h"
  • Singular/grammar.cc

    rc723156 rb849856  
    8181
    8282#include "misc/mylimits.h"
    83 #ifdef HAVE_OMALLOC
    8483#include "omalloc/omalloc.h"
    85 #else
    86 #include "xalloc/omalloc.h"
    87 #endif
    8884#include "Singular/tok.h"
    8985#include "misc/options.h"
  • Singular/grammar.y

    rc723156 rb849856  
    1717
    1818#include "misc/mylimits.h"
    19 #ifdef HAVE_OMALLOC
    2019#include "omalloc/omalloc.h"
    21 #else
    22 #include "xalloc/omalloc.h"
    23 #endif
    2420#include "Singular/tok.h"
    2521#include "misc/options.h"
  • Singular/iparith.cc

    rc723156 rb849856  
    51025102static BOOLEAN jjTWOSTD(leftv res, leftv a)
    51035103{
    5104   if (rIsPluralRing(currRing))  res->data=(ideal)twostd((ideal)a->Data());
    5105   else  res->data=(ideal)a->CopyD();
     5104  ideal result;
     5105  if (rIsPluralRing(currRing))
     5106    result=(ideal)twostd((ideal)a->Data());
     5107  else /*commutative or shiftalgebra*/
     5108  {
     5109    result=kStd(v_id,currRing->qideal,hom,&w);
     5110    idSkipZeroes(result);
     5111  }
     5112  res->data = (char *)result;
    51065113  setFlag(res,FLAG_STD);
    51075114  setFlag(res,FLAG_TWOSTD);
  • Singular/libparse.cc

    rc723156 rb849856  
    10701070  #include "Singular/tok.h"
    10711071  #include "misc/options.h"
    1072   #ifdef HAVE_OMALLOC
    10731072  #include "omalloc/omalloc.h"
    1074   #else
    1075   #include "xalloc/omalloc.h"
    1076   #endif
    10771073#endif
    10781074#include "Singular/libparse.h"
  • Singular/libparse.ll

    rc723156 rb849856  
    2121  #include "Singular/tok.h"
    2222  #include "misc/options.h"
    23   #ifdef HAVE_OMALLOC
    2423  #include "omalloc/omalloc.h"
    25   #else
    26   #include "xalloc/omalloc.h"
    27   #endif
    2824#endif
    2925#include "Singular/libparse.h"
  • Singular/libsingular.h

    rc723156 rb849856  
    99#include "kernel/oswrapper/feread.h"
    1010#include "polys/monomials/ring.h"
    11 #ifdef HAVE_OMALLOC
    1211#include "omalloc/omalloc.h"
    13 #else
    14 #include "xalloc/omalloc.h"
    15 #endif
    1612#include "polys/clapsing.h"
    1713#include "polys/monomials/maps.h"
  • Singular/links/silink.h

    rc723156 rb849856  
    99
    1010#include "singularconfig.h"
     11#include "omalloc/omalloc.h"
    1112#include "kernel/structs.h"
    1213
     
    9798}
    9899
    99 #ifdef HAVE_OMALLOC
    100 #include "omalloc/omalloc.h"
    101 #else
    102 #include "xalloc/omalloc.h"
    103 #endif
    104100
    105101static inline char* slString(si_link l)
  • Singular/lists.h

    rc723156 rb849856  
    77* ABSTRACT: handling of the list type
    88*/
    9 #ifdef HAVE_OMALLOC
    109#include "omalloc/omalloc.h"
    11 #else
    12 #include "xalloc/omalloc.h"
    13 #endif
    1410
    1511#include "kernel/structs.h"
  • Singular/misc_ip.cc

    rc723156 rb849856  
    1616#include "kernel/mod2.h"
    1717#include "misc/sirandom.h"
    18 
    19 #ifdef HAVE_OMALLOC
    2018#include "omalloc/omalloc.h"
    21 #else
    22 #include "xalloc/omalloc.h"
    23 #endif
    24 
    2519#include "misc/mylimits.h"
    26 
    2720#include "reporter/si_signals.h"
    28 
    2921#include "factory/factory.h"
    30 
    3122#include "coeffs/si_gmp.h"
    3223#include "coeffs/coeffs.h"
     
    3728#include "coeffs/flintcf_Zn.h"
    3829#include "coeffs/rmodulon.h"
    39 
    4030#include "polys/ext_fields/algext.h"
    4131#include "polys/ext_fields/transext.h"
  • Singular/mmstd.c

    rc723156 rb849856  
    1111
    1212#include "kernel/mod2.h"
    13 
    14 #ifdef HAVE_OMALLOC
    1513#include "omalloc/omalloc.h"
    16 #else
    17 #include "xalloc/omalloc.h"
    18 #endif
    1914
    2015/* we provide these functions, so that the settings of OM_CHECK
  • Singular/number2.h

    rc723156 rb849856  
    33
    44#include "kernel/mod2.h"
    5 
    6 #ifdef HAVE_OMALLOC
    75#include "omalloc/omalloc.h"
    8 #else
    9 #include "xalloc/omalloc.h"
    10 #endif
    11 
    126#include "coeffs/coeffs.h"
    137#include "kernel/structs.h"
  • Singular/scanner.cc

    rc723156 rb849856  
    568568
    569569#include "kernel/mod2.h"
    570 #ifdef HAVE_OMALLOC
    571570#include "omalloc/omalloc.h"
    572 #else
    573 #include "xalloc/omalloc.h"
    574 #endif
    575571#include "Singular/tok.h"
    576572#include "Singular/stype.h"
  • Singular/scanner.ll

    rc723156 rb849856  
    99
    1010#include "kernel/mod2.h"
    11 #ifdef HAVE_OMALLOC
    1211#include "omalloc/omalloc.h"
    13 #else
    14 #include "xalloc/omalloc.h"
    15 #endif
    1612#include "Singular/tok.h"
    1713#include "Singular/stype.h"
  • Singular/sdb.cc

    rc723156 rb849856  
    77
    88#include "kernel/mod2.h"
    9 #ifdef HAVE_OMALLOC
    109#include "omalloc/omalloc.h"
    11 #else
    12 #include "xalloc/omalloc.h"
    13 #endif
    1410#include "misc/options.h"
    1511#include "reporter/si_signals.h"
    16 
    1712#include "Singular/tok.h"
    1813#include "Singular/ipshell.h"
  • Singular/subexpr.cc

    rc723156 rb849856  
    77
    88#include "kernel/mod2.h"
    9 
    10 #ifdef HAVE_OMALLOC
    119#include "omalloc/omalloc.h"
    12 #else
    13 #include "xalloc/omalloc.h"
    14 #endif
    15 
    1610#include "misc/intvec.h"
    1711#include "misc/options.h"
    18 
    1912#include "coeffs/numbers.h"
    2013#include "coeffs/bigintmat.h"
    21 
    2214#include "coeffs/ffields.h" // nfShowMipo // minpoly printing...
    23 
    2415#include "polys/monomials/maps.h"
    2516#include "polys/matpol.h"
     
    3324#include "kernel/GBEngine/syz.h"
    3425#include "kernel/oswrapper/timer.h"
    35 
    3626#include "Singular/tok.h"
    3727#include "Singular/ipid.h"
  • Singular/svd/libs/amp.h

    rc723156 rb849856  
    11#ifndef _AMP_R_H
    22#define _AMP_R_H
    3 
    4 #ifdef HAVE_OMALLOC
    5 #include "omalloc/omalloc.h"
    6 #else
    7 #include "xalloc/omalloc.h"
    8 #endif
    93
    104#include <gmp.h>
  • Singular/svd_si.h

    rc723156 rb849856  
    10151015/* stuff included from libs/amp.h */
    10161016
    1017 #ifdef HAVE_OMALLOC
    10181017#include "omalloc/omalloc.h"
    1019 #else
    1020 #include "xalloc/omalloc.h"
    1021 #endif
    10221018
    10231019#include <gmp.h>
  • Singular/table.h

    rc723156 rb849856  
    279279,{D(jjENVELOPE),   ENVELOPE_CMD,    RING_CMD,       RING_CMD      , ALLOW_PLURAL |NO_RING}
    280280,{D(jjOPPOSITE),   OPPOSITE_CMD,    RING_CMD,       RING_CMD      , ALLOW_PLURAL |NO_RING}
    281 ,{D(jjTWOSTD),     TWOSTD_CMD,      IDEAL_CMD,      IDEAL_CMD     , ALLOW_PLURAL |NO_RING}
     281,{D(jjTWOSTD),     TWOSTD_CMD,      IDEAL_CMD,      IDEAL_CMD     , ALLOW_NC |NO_RING}
    282282#endif
    283283//,{  jjWRONG ,      TRACE_CMD,       0,              INTVEC_CMD    , ALLOW_NC |ALLOW_RING}
  • Singular/test.cc

    rc723156 rb849856  
    11#include "kernel/mod2.h"
    22
    3 #ifdef HAVE_OMALLOC
    43#include "omalloc/omalloc.h"
    5 #else
    6 #include "xalloc/omalloc.h"
    7 #endif
    84
    95#include "factory/factory.h" // :(
    10 
    116
    127#include "misc/intvec.h"
  • Singular/tesths.cc

    rc723156 rb849856  
    88
    99
    10 
    11 
    1210#include "kernel/mod2.h"
    13 
    14 #ifdef HAVE_OMALLOC
    1511#include "omalloc/omalloc.h"
    16 #else
    17 #include "xalloc/omalloc.h"
    18 #endif
    19 
    2012#include "misc/options.h"
    21 
    2213#include "factory/factory.h"
    23 
    2414#include "kernel/oswrapper/feread.h"
    2515#include "Singular/fevoices.h"
  • Singular/walk.cc

    rc723156 rb849856  
    3737#include "Singular/cntrlc.h"
    3838#include "misc/options.h"
    39 #ifdef HAVE_OMALLOC
    4039#include "omalloc/omalloc.h"
    41 #else
    42 #include "xalloc/omalloc.h"
    43 #endif
    4440#include "Singular/ipshell.h"
    4541#include "Singular/ipconv.h"
  • Singular/walk_ip.cc

    rc723156 rb849856  
    1111#include "Singular/ipid.h"
    1212#include "misc/intvec.h"
    13 #ifdef HAVE_OMALLOC
    1413#include "omalloc/omalloc.h"
    15 #else
    16 #include "xalloc/omalloc.h"
    17 #endif
    1814#include "kernel/polys.h"
    1915#include "kernel/ideals.h"
  • Tst/Manual/Example_of_use_of_@sc{Letterplace}.res.gz.uu

    r18a3df rb849856  
    11begin 644 Example_of_use_of_@sc{Letterplace}.res.gz
    2 M'XL("%;?V5L"`T5X86UP;&5?;V9?=7-E7V]F7T!S8WM,971T97)P;&%C97TN
    3 M<F5S`&U2RVZ#,!"\\Q6KJ`<(Y$'>%<*JHO9`%/5`<JNBB,1.A$H`@:,:JOY[
    4 M%_-P#CE@[\[,SBR2=_MW[Q,`;`);;PT]GO-A%)YZ#F!U#..0ZX:C53<0`A\B
    5 MN*41.R:7XSV7UUM^_MTRSEF61L&9_0UC]C/,><"U7>,\:9PO&6/74VW>D5,"
    6 M61A?(0,7QI8NK,(J#8NF2C$C$,8<*+@S!T8CH.R*1G!*[C'M1'."^`5\=+D%
    7 MW^QA(1_==6HHOP6!G'$9ZBMTB2F4!1%X:"'Z!9A0]$L+2X%E!0P0$/(LU-B*
    8 M0)+R,(GUC-'=VG`>VGT01@^YKVW"!A-R3G5/D?:8P,;1-E_VP<4L$Z.QF52-
    9 M&!3R*P8U.#VXV,@6@4I94Y*<U:0P%2G,EIQ79-G,EIV@FY>B12NJYY2H\9&B
    10 G91U3MEL\=5JUHF:;)T[MW^/;JQY;]6KNN6X;SHOV#^"H^[67`@``
     2M'XL("'$H$5P"`T5X86UP;&5?;V9?=7-E7V]F7T!S8WM,971T97)P;&%C97TN
     3M<F5S`&U2RXZ"0!"\\Q4=LP<0?.![0YALC'O`F#VHMXTQ**.9+`*!,3NPV7^W
     4M9WAY\,!,=U5U59/,;K_RO@#`)K#QEM#A&>^'[-1Q`*LCBQC7#4>3-Q`"G\*_
     5M)2$]QI?C/5/71W;^VU#.:9J$_IG^]R/ZV\^XS[5=Y3RJG"\II==3:=Z08P(I
     6MBZZ0@@M#2Q=6;A6&M4I:Q80`BS@$X$X<&`P@H%<T@E-\CX)&-"6(7V"++C?_
     7MASXMM$5W/3!:OQF!C'(5NFW1.:8$U`_!0PO1S<&$O%M86`HL)=!#0*@S;\<6
     8M!.*$LSC24QKLEH;SU.Y]%C[EOM<):TS(>*![+6D/":P=;?UM'US,,C$:FY%L
     9M1"]77]XKP?'!Q4:U"$AE22ER4I+";$EAUN14DD4U6S2"9EZ)9K6HG&M%E8\2
     10GS<N8HM[BI=.B%E7;O'"J_Q[?GGQL\M7<,]TVG#?M`6PS(8B7`@``
    1111`
    1212end
  • Tst/Manual/Example_of_use_of_@sc{Letterplace}.stat

    r18a3df rb849856  
    1 1 >> tst_memory_0 :: 1541005142:4113, 64 bit:4.1.1:x86_64-Darwin:161-029.eduroam.rwth-aachen.de:724464
    2 1 >> tst_memory_1 :: 1541005142:4113, 64 bit:4.1.1:x86_64-Darwin:161-029.eduroam.rwth-aachen.de:2097168
    3 1 >> tst_memory_2 :: 1541005142:4113, 64 bit:4.1.1:x86_64-Darwin:161-029.eduroam.rwth-aachen.de:2121872
    4 1 >> tst_timer_1 :: 1541005142:4113, 64 bit:4.1.1:x86_64-Darwin:161-029.eduroam.rwth-aachen.de:69
     11 >> tst_memory_0 :: 1544628337:4113, 64 bit:4.1.1:x86_64-Linux:megrez:312368
     21 >> tst_memory_1 :: 1544628337:4113, 64 bit:4.1.1:x86_64-Linux:megrez:2215936
     31 >> tst_memory_2 :: 1544628337:4113, 64 bit:4.1.1:x86_64-Linux:megrez:2215936
     41 >> tst_timer_1 :: 1544628337:4113, 64 bit:4.1.1:x86_64-Linux:megrez:8
  • Tst/Manual/Example_of_use_of_@sc{Letterplace}.tst

    r18a3df rb849856  
    11LIB "tst.lib"; tst_init();
    22LIB "freegb.lib";
    3 ring r = 0,(x,y,z),dp;
     3ring r = 0,(x,y,z),Dp;
    44int d =4; // degree bound
    55def R = makeLetterplaceRing(d);
  • Tst/Manual/letterplace_reduce.res.gz.uu

    r18a3df rb849856  
    11begin 644 letterplace_reduce.res.gz
    2 M'XL("(I=]%L"`VQE='1E<G!L86-E7W)E9'5C92YR97,`=5)+CX(P$+[S*R9F
    3 M#U"K@NXS9'O8[`5C]J![-RBC(<MBA9J%_OH=*@AH3`\ST_D>,TU7WY_!%P!X
    4 M`A;!!PQ4KL9)O!GX0-DZ3F-E.[Y511`"$E0*,YF$6UQG&)VV.$[Q;YRK4%FK
    5 M6FEJE`:[#'&_.6M=>C,!69SN(8-W<+E=\))KAT>R13P*B'`'2P+\AC^X:`V7
    6 M1+0]U_$A1V54EBWM24`<89A`0,22%:R$$6A6,LV!"E:8DC)N@J:2>JRHNG1@
    7 M2"4=BIJN-<6*I5N#Y\9@3@:YBNS`:9LO`N0A*4$VYJ11UA:Z5NVIO=:$(Q',
    8 M/%6[F:D/?:,G,R]M2R;YG-:?3"`]I!JS@V5X9W:3C6YO6E0=A]?UE4ZOOM$<
    9 M]=2[V&9HS^T.37OU-FB6,!NX%XYWX1S9\0YFVL'(.YA9%T/>\JX:_;7JDU>_
    10 0]Y3;GN,_6/_CGQMQ#P,`````
     2M'XL("(LH$5P"`VQE='1E<G!L86-E7W)E9'5C92YR97,`=5)+CX(P$+[S*R9F
     3M#U"KPKK/D.UAXP5C]J![-RBC(<MBA9J%_OH=*@AH3`\ST_D>,TU7W[/@"P`\
     4M`8O@$P8J5^,DW@Q\H&P=I[&R'=^J(@@!"2J%F4S"+:XSC$Y;'*?X-\Y5J*Q5
     5MK?1HE`:[#'&_.6M=>E,!69SN(8,/<+E=\))KA\]DBW@2$.$.E@3X#7]PT1HN
     6MB6A[KN-#CLJH+%O:LX`XPC"!@(@E*U@)(]"L9)H#%:PP)67<!$TE]5A1=>G`
     7MD$HZ%#5=:XH52[<&+XW!G`QR%=F!TS9?!<A#4H)LS$FCK"UTK=I3>ZL)1R*8
     8M>:IV,U,?^DY/9E[:EDSR.:T_F4!Z2#5F!\OPSNPF&]W>M*@Z#J_K*YU>?:,Y
     9MZJEWL<W0GML=FO;J;=`L839P+QSOPCFRXQW,8P<C[V"F70QYR[MJ]->J3U[]
     101WE-N>X[_8/T#<'*Z+`\#````
    1111`
    1212end
  • Tst/Manual/letterplace_reduce.stat

    r18a3df rb849856  
    1 1 >> tst_memory_0 :: 1542741386:4113, 64 bit:4.1.1:x86_64-Darwin:Karims-MacBook-Pro.local:20012280
    2 1 >> tst_memory_1 :: 1542741386:4113, 64 bit:4.1.1:x86_64-Darwin:Karims-MacBook-Pro.local:23068672
    3 1 >> tst_memory_2 :: 1542741386:4113, 64 bit:4.1.1:x86_64-Darwin:Karims-MacBook-Pro.local:23094976
    4 1 >> tst_timer_1 :: 1542741386:4113, 64 bit:4.1.1:x86_64-Darwin:Karims-MacBook-Pro.local:610
     11 >> tst_memory_0 :: 1544628363:4113, 64 bit:4.1.1:x86_64-Linux:megrez:30936576
     21 >> tst_memory_1 :: 1544628363:4113, 64 bit:4.1.1:x86_64-Linux:megrez:33767424
     31 >> tst_memory_2 :: 1544628363:4113, 64 bit:4.1.1:x86_64-Linux:megrez:33828864
     41 >> tst_timer_1 :: 1544628363:4113, 64 bit:4.1.1:x86_64-Linux:megrez:19
  • Tst/Manual/letterplace_reduce.tst

    r18a3df rb849856  
    11LIB "tst.lib"; tst_init();
    22LIB"freegb.lib";
    3 ring r = 0,(x,y,z),dp;
     3ring r = 0,(x,y,z),Dp;
    44def R = makeLetterplaceRing(10); setring R;
    55ideal I = y*x*y - z*y*z, x*y*x - z*x*y, z*x*z - y*z*x, x*x*x + y*y*y + z*z*z + x*y*z;
  • Tst/Manual/letterplace_std.res.gz.uu

    r18a3df rb849856  
    11begin 644 letterplace_std.res.gz
    2 M'XL("*;?V5L"`VQE='1E<G!L86-E7W-T9"YR97,`39++;H,P%$3W?,55U`4X
    3 M@#"$/(3PHNH&%'619%>AB!0G0J4T`D<U_?I>&Q)GP<-S9\X`9G]XR]X!@#+8
    4 M9J\P$[WPF_HT2P#OCG5;"]M)+'4%QJ#A0O#NVI2?_-B+RF_YK]^+4EC["1-.
    5 MF'/'^>4TDA[#B$%7MQ?H((7`M:4[N'^.:U=7FSHNGD/',>8%@[H54/$+HHZG
    6 MGUM;82PVAICA\`P[5+_++[XUC[;#$CM^8BT9]%SH[IU15]A0\;*!#!&>)(.W
    7 M(@,9YA&11+J``I$>'F0PF?4]DV,&OX"=/=5L&.2)E7_0(M4,PT0Q+-(P5##4
    8 M(J*Q7DC5DLBY-FE;-&95]=T^O]L\8ULHVCJ(1@$)=!,%TU@;XB)%:9Q+Q5C%
    9 CU)B7],FZ+-+AL9S>A09,_P!J<V\][D_R8OT#2W36,BL"````
     2M'XL("!(J$5P"`VQE='1E<G!L86-E7W-T9"YR97,`39%!;X(P%,?O?(H7LP-4
     3M,!1$-(0>%B\8LX/NMA"#HQHRQ@S4K.S3[[6`]=#0_M_O_1Y-C^_;[`T`*(-]
     4M]@HST8E%79UG">#N5#65L)W$4E]@#&HN!&]O=?')3YTH%PW_772B$-9QU`2C
     5MYM)R?CT/ID<Q9-!6S15:2,%W;>GV[I_C;F^&6#*H&@$EOV+_Z?QS;TID(P-$
     6M#(L7.&#Z77SQO?F?`YKMR#'HBD''A1YX,&F,$TI>U)"API.D]V+2DWX>$DFD
     7M"Q@0Z>$BO>E93ST[[,%KV]G3F`V#76+M/FB>:H=Q8ACD:1`H&68AT5HOH.I(
     8MY%Q#&@N'7C5ZPN<3YAELJ6QK/QP"--!-Z(]E#41YBM%0E\H11]3`*_J$KO*T
     9:?QS'NU"?Z5=7+WKO;.HD+]8_KM^\/"`"````
    1010`
    1111end
  • Tst/Manual/letterplace_std.stat

    r18a3df rb849856  
    1 1 >> tst_memory_0 :: 1541005222:4113, 64 bit:4.1.1:x86_64-Darwin:161-029.eduroam.rwth-aachen.de:741640
    2 1 >> tst_memory_1 :: 1541005222:4113, 64 bit:4.1.1:x86_64-Darwin:161-029.eduroam.rwth-aachen.de:2097168
    3 1 >> tst_memory_2 :: 1541005222:4113, 64 bit:4.1.1:x86_64-Darwin:161-029.eduroam.rwth-aachen.de:2121872
    4 1 >> tst_timer_1 :: 1541005222:4113, 64 bit:4.1.1:x86_64-Darwin:161-029.eduroam.rwth-aachen.de:71
     11 >> tst_memory_0 :: 1544628754:4113, 64 bit:4.1.1:x86_64-Linux:megrez:331512
     21 >> tst_memory_1 :: 1544628754:4113, 64 bit:4.1.1:x86_64-Linux:megrez:2215936
     31 >> tst_memory_2 :: 1544628754:4113, 64 bit:4.1.1:x86_64-Linux:megrez:2215936
     41 >> tst_timer_1 :: 1544628754:4113, 64 bit:4.1.1:x86_64-Linux:megrez:7
  • Tst/Manual/letterplace_std.tst

    r18a3df rb849856  
    11LIB "tst.lib"; tst_init();
    22LIB "freegb.lib";
    3 ring r = 0,(x,y,z),(dp(1),dp(2));
     3ring r = 0,(x,y,z),Dp;
    44int degree_bound = 5;
    55def R = makeLetterplaceRing(5);
  • Tst/Manual/lpMonomialBasis.res.gz.uu

    r18a3df rb849856  
    11begin 644 lpMonomialBasis.res.gz
    2 M'XL(")E5]%L"`VQP36]N;VUI86Q"87-I<RYR97,`G9-?:X,P%,7?_127L8=8
    3 M;#%J_R'-0QF,2K>'MF]EE&RF(\RJ:,;TVR\FVKC:I[WHS3TWYW<2R/[PM'D%
    4 M`$Q@NUG#@RC%).'O#R'(ZL13+I`=6LT?"($D?\G2[,)ILJ8E+R<I^YF4@@IK
    5 MW]IXK<TYIS&_:*>KZ!,H>/H)!:S`=5#EU+83YT8/",3L##LI7^@7VS(A6)$G
    6 M](/MY#8TMT,HF5`6.[-K2H#'C"80R7W5J!Y5,`;Y'=5F9D8@RP7/4E2P>+^6
    7 M1F9YH#RQS>B<**.$"45^5@=%46]B(2="*SKBMY7"C15,-CS=4$O=;&HI^)UP
    8 M(RDQ,.)`E@,==3FX?>0YV%%'1ZXM\YUTHDH6,DFM"DV61=!TZLX-N_?<W($;
    9 MUEZM4^NC$=,.,>L0\[\(/$3X,G#42]K+VJ755]9QE*\FJ7+6WM65UN-Y]WBN
    10 MX?WG+*?CP@1=FJ#8-4DQ-E&Q9[)BWX3%P6U:^1::!]8\GN\283M\M'X!]54A
    11 %VXL#````
     2M'XL("+,H$5P"`VQP36]N;VUI86Q"87-I<RYR97,`G9-?;X(P%,7?^10W9@_%
     3MH*&(_T+L@S%9)&X/ZIM93#?JT@R!0)?!MU]IP3+Q:2]P>\_M^9TVZ>&XV;X"
     4M`":PVZYA(`HQCOG[(`!9G7G"!;(#J_X#(1!G+VF27CF-U[3@Q3AA/^-"4&$=
     5M&ANOL;ED-.)7[703)P1RGGQ"#BMP'50ZE>UL,J/[!")V@;V4K_2+[9@0+,]B
     6M^L'V<AN:VP$43"B+O=DU)<`C1F,(Y;YR6`U+&('\#BLS,R.09H*G"<I9=%A+
     7M([,\4A[;9G1.E%',A"(_JX.BL#.QD!.!%9[PVTKA1@HF&YYNJ*5NUK44)JUP
     8M)RG1-V)/E@,M==F[?>0YV%%'1ZXM\YUUHE(6,DFE"DV6A5]WJM8-NX_<W)X;
     9MUEZ-4^.C$=,6,6L1\[\(W$=,9."PD[23M4VKKZSE*%]-4N6LN:L;K</S'O%<
     10MP_O/6<ZGA0FZ-$&Q:Y)B;*)BSV3%$Q,6^_=IY5NH'UC]>+X+A.W@R?H%=J9X
     11%38L#````
    1212`
    1313end
  • Tst/Manual/lpMonomialBasis.stat

    r18a3df rb849856  
    1 1 >> tst_memory_0 :: 1542739353:4113, 64 bit:4.1.1:x86_64-Darwin:Karims-MacBook-Pro.local:720208
    2 1 >> tst_memory_1 :: 1542739353:4113, 64 bit:4.1.1:x86_64-Darwin:Karims-MacBook-Pro.local:2097168
    3 1 >> tst_memory_2 :: 1542739353:4113, 64 bit:4.1.1:x86_64-Darwin:Karims-MacBook-Pro.local:2121872
    4 1 >> tst_timer_1 :: 1542739353:4113, 64 bit:4.1.1:x86_64-Darwin:Karims-MacBook-Pro.local:90
     11 >> tst_memory_0 :: 1544628403:4113, 64 bit:4.1.1:x86_64-Linux:megrez:318584
     21 >> tst_memory_1 :: 1544628403:4113, 64 bit:4.1.1:x86_64-Linux:megrez:2215936
     31 >> tst_memory_2 :: 1544628403:4113, 64 bit:4.1.1:x86_64-Linux:megrez:2215936
     41 >> tst_timer_1 :: 1544628403:4113, 64 bit:4.1.1:x86_64-Linux:megrez:5
  • Tst/Manual/lpMonomialBasis.tst

    r18a3df rb849856  
    11LIB "tst.lib"; tst_init();
    22LIB "fpadim.lib";
    3 ring r = 0,(x,y),dp;
     3ring r = 0,(x,y),Dp;
    44def R = makeLetterplaceRing(7); setring R;
    55ideal J = x*y*x - y*x*y;
  • Tst/Manual/makeLetterplaceRing.res.gz.uu

    r18a3df rb849856  
    1 begin 640 makeLetterplaceRing.res.gz
    2 M'XL(")^SP%L"`VUA:V5,971T97)P;&%C95)I;F<N<F5S`*U4VVK"0!!]SU<,
    3 MTH<$@II$;9O0@*DO@A1:2U]++A.[F!N[FU;]^LX:FXA8A-:%;(;)F3.7D]WE
    4 MZVS^!`"6#XMY`#TI9#]C4<\#LMY9P:1N>)IZ@^]#'JYQ@5(BK[(PQA=6K/H%
    5 M?O6%#*6V/%#9!ZJ4(ZZBAJW]Z/C`*0HX/,#0U#?FUMP9IIY4NF68M-N&T8%'
    6 M/B28PI2P9S(3MH..?1`H]]13#^C1!@.(2TQ3%C,LI'#A^5GYBCJ/D$.9PF?(
    7 M!;@P4=[#BK(R7JMID+_D">[Y9M41HELN%&&.0ID;V,*NV<^0V<=DCPJ0=8TT
    8 MT]`;K&`[!,=HFYKX$$IJ*M*G9H^)D_Y[U+[38F^/L74ERP05`H#RD4E:0%36
    9 M1:+9;<C=<4CVIM"G`V)AE%&/K`#Y@20"&?M2M9;DOAL\]_9R!;_)95I-!EF2
    10 M,GD5<G1_:*QA1Q-0T<$5]<LNZW=)M>0BQ7GIG?_7,;I&'>.__H(6W0OJ(E`'
    11 0O!9T1KT;[1NUSY!H,P0`````
     1begin 644 makeLetterplaceRing.res.gz
     2M'XL(")XK$5P"`VUA:V5,971T97)P;&%C95)I;F<N<F5S`*U4:TO#,!3]WE]Q
     3M$#^T4*;MYFO%PNH0!!'F_"[M>EO#NK8DF8_]>F_:V:I,!FJ@3;@Y.?=Q;C)_
     4MF-[<`?!"W-Y$.-!*#PJ1'`3@U:,HA;:=P#(SPA"K>$FWI#7)NH@7="_*?%#2
     5MRT#I6%OS+96_I<HD49ZT;-WF,(3D4Y"XQ+%KO[IO[L9QIW6/&(5(*<.$`3O<
     6MV;[30T]"*-(-WR0`?];1$18599E8""JU&F,V,[9RO4I(HLKP'$N%,4Z-=3N2
     7MHEHL30G87LF4&KYI_0G1CS'*>$7*+%_QADW[WT'F?R:[,H"B3Z0M@=UBE=@0
     8MADZ7U&D(H:ZY=I,BIT3&]H0S]KKMLQ!%/:4\JM9E:O8`)D\IYQ-(C-'R._"Y
     9M`4?&S9R]-.COU1!Q4G!"HH1^(JXX+YJXK&''<O&AF?]%-#NM;<]QP9/O]*IX
     10MQ[TJT@\:,:.?Q'2]-B1=L6ZK.I8T[GB\GB?B+*-_5+?8K^X^3=.]%+L;8_CW
     11@.$;_$<?);QO4X_MMW@9SY]>*.R`XM-X!A7"/B$8$````
    1212`
    1313end
  • Tst/Manual/makeLetterplaceRing.stat

    r18a3df rb849856  
    1 1 >> tst_memory_0 :: 1525958650:4112, 64 bit:4.1.1:x86_64-Linux:nepomuck:295192
    2 1 >> tst_memory_1 :: 1525958650:4112, 64 bit:4.1.1:x86_64-Linux:nepomuck:2215936
    3 1 >> tst_memory_2 :: 1525958650:4112, 64 bit:4.1.1:x86_64-Linux:nepomuck:2215936
    4 1 >> tst_timer_1 :: 1525958650:4112, 64 bit:4.1.1:x86_64-Linux:nepomuck:5
     11 >> tst_memory_0 :: 1544629151:4113, 64 bit:4.1.1:x86_64-Linux:megrez:300232
     21 >> tst_memory_1 :: 1544629151:4113, 64 bit:4.1.1:x86_64-Linux:megrez:2215936
     31 >> tst_memory_2 :: 1544629151:4113, 64 bit:4.1.1:x86_64-Linux:megrez:2215936
     41 >> tst_timer_1 :: 1544629151:4113, 64 bit:4.1.1:x86_64-Linux:megrez:7
  • Tst/Manual/makeLetterplaceRing.tst

    r18a3df rb849856  
    11LIB "tst.lib"; tst_init();
    22LIB "freegb.lib";
    3 ring r = 0,(x,y,z),(dp(1),dp(2));
     3ring r = 0,(x,y,z),Dp;
    44def A = makeLetterplaceRing(2);
    55setring A;  A;
    6 attrib(A,"isLetterplaceRing");
    7 attrib(A,"uptodeg");  // degree bound
    8 attrib(A,"lV"); // number of variables in the main block
    9 setring r; def B = makeLetterplaceRing(2,1); // to compare:
     6isFreeAlgebra(A);
     7lpDegBound(A);  // degree bound
     8lpBlockSize(A); // number of variables in the main block
     9ring r2 = 0,(x,y,z),(dp(1), dp(2));
     10setring r2; def B = makeLetterplaceRing(2,1); // to compare:
    1011setring B;  B;
    1112tst_status(1);$
  • Tst/Manual/serreRelations.res.gz.uu

    r18a3df rb849856  
    1 begin 640 serreRelations.res.gz
    2 M'XL(".U<NUL"`W-E<G)E4F5L871I;VYS+G)E<P!54MUKPC`0?^]?<<@>VO5#
    3 MDZAS%`MN@U&0/=2]B9.X)A)6:TDCV_[[79NN50C<Y??5ZY'-^TOZ!@`D@77Z
    4 M!"-3FZA0AU$,V.U5J8SKQ4Y3(4F@%EJ+3!3<J'-91Z7XCFK#C;/I4FB7(K40
    5 MQX,-ZDF6@"K-B1M8;=D.#RQ[;AH!#2`D`4R"'IQ%+=(0;$#G$6HL$<-X#*\?
    6 M9$_AF6O#2\!TK7YZ[4,"6I5'T+!$DRM)(&D@F1?DU3#7HIT++I4YY^*(RMG`
    7 M/2:0"PD9HB?^)=;"&*&K@G^*#'/=SN/U!C)IEF3:CV8#BMM5N>`%I!ATNT1W
    8 M%1`OMH0Z5862OVX:$)_ZBZM87&P:.^F6[):2W$N*)Z1M;6Z^['I44*M@H606
    9 M8!8@G<6ZB=]Y&\44%7AC_0FG;1TP?_[?TAO%@/E7=D0P=693&[(;E;6C6@/M
    10 8?PV?1?/4FG=TJ5W<Q9WS!_\$9/B5`@``
     1begin 644 serreRelations.res.gz
     2M'XL("-`H$5P"`W-E<G)E4F5L871I;VYS+G)E<P!54E]KPC`0?^^G.,8>ZII6
     3MDZAS%`MNPBC('NK>Q$F<B8356MK(MF^_2].U"H&[_/[U>F3]ODS?`(`FL$J?
     4MX<[4)LKU_BX&[':ZT,8?Q)ZMD"10RZJ2F<R%T>>BC@KY'=5&&&_=IK`V1552
     5M'O<NJ"-Y`KHP)V%@L>%;/##ON'$$C$!("8Q(!TZB!K$$[]%IA!I'Q#`<PNL'
     6MW3%X$941!6!ZI7\Z[6,"E2Z.4,$<3;ZB1#&B^(`LRWZN63,77$IS/L@C*B<]
     7M]Y3`02K($#V)+[F2QLBJS,6GS##7;SV#SD!'=DFF^6C6H[A=?9`BAQ2#;I?H
     8M+P@=Q([0IS+7ZM=/"0U8,+N*Q<6FL9=NZ':NZ(-B>$+65'L+5-NC@CD%#Q5W
     9M`'<`;2W.38/6:Q5C5."-=R<<-[7'@NE_RVX4/19<V1'!U(E+M60[*F]&=0;6
     108_1H^"_O4[#NZU#[NXM[[`Q7*N7*5`@``
    1111`
    1212end
  • Tst/Manual/serreRelations.stat

    r18a3df rb849856  
    1 1 >> tst_memory_0 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:308352
    2 1 >> tst_memory_1 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:669628
    3 1 >> tst_memory_2 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:752644
    4 1 >> tst_timer_1 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:15
     11 >> tst_memory_0 :: 1544628432:4113, 64 bit:4.1.1:x86_64-Linux:megrez:299832
     21 >> tst_memory_1 :: 1544628432:4113, 64 bit:4.1.1:x86_64-Linux:megrez:2215936
     31 >> tst_memory_2 :: 1544628432:4113, 64 bit:4.1.1:x86_64-Linux:megrez:2215936
     41 >> tst_timer_1 :: 1544628432:4113, 64 bit:4.1.1:x86_64-Linux:megrez:5
  • Tst/Manual/serreRelations.tst

    r18a3df rb849856  
    55-1, 2, -3,
    660, -1, 2; // G^1_2 Cartan matrix
    7 ring r = 0,(f1,f2,f3),dp;
     7ring r = 0,(f1,f2,f3),Dp;
    88int uptodeg = 5;
    99def R = makeLetterplaceRing(uptodeg);
  • Tst/Manual/setLetterplaceAttributes.tst

    r18a3df rb849856  
    33ring r = 0,(x(1),y(1),x(2),y(2),x(3),y(3),x(4),y(4)),dp;
    44def R = setLetterplaceAttributes(r, 4, 2); setring R;
    5 attrib(R,"isLetterplaceRing");
     5isFreeAlgebra(R);
     6lpDegBound(R);
     7lpBlockSize(R);
    68lieBracket(x(1),y(1),2);
    79tst_status(1);$
  • configure.ac

    rc723156 rb849856  
    216216AC_CONFIG_SUBDIRS([resources])
    217217AC_CONFIG_SUBDIRS([omalloc])
    218 AC_CONFIG_SUBDIRS([xalloc])
    219218
    220219if test "x$ENABLE_FACTORY" = xyes; then
  • doc/NEWS.texi

    rc723156 rb849856  
    4040Changes in the kernel/build system:
    4141@itemize
     42@item integrated xalloc into omalloc: (@code{./configure --disable-omalloc})
    4243@item improved heuristic for @code{det} (@nref{det})
    4344@item improved reading of long polynomials
  • kernel/GBEngine/kInline.h

    rc723156 rb849856  
    1818 */
    1919
    20 #ifdef HAVE_OMALLOC
    2120#include "omalloc/omalloc.h"
    22 #else
    23 #include "xalloc/omalloc.h"
    24 #endif
    25 
    2621#include "misc/options.h"
    27 
    2822#include "polys/monomials/p_polys.h"
    2923#include "polys/kbuckets.h"
  • kernel/GBEngine/kspoly.cc

    r18a3df rb849856  
    140140#ifdef HAVE_SHIFTBBA
    141141  poly lmRight;
    142   if (tailRing->isLPring) {
     142  if (tailRing->isLPring)
     143  {
     144    assume(PR->shift == 0);
     145    assume(PW->shift == si_max(p_mFirstVblock(PW->p, tailRing) - 1, 0));
    143146    k_SplitFrame(lm, lmRight, PW->shift + 1, tailRing);
    144147  }
     
    271274  if (tailRing->isLPring)
    272275  {
     276    assume(PR->shift == 0);
     277    assume(PW->shift == si_max(p_mFirstVblock(PW->p, tailRing) - 1, 0));
    273278    k_SplitFrame(lm, lmRight, PW->shift + 1, tailRing);
    274279  }
     
    623628#ifdef HAVE_SHIFTBBA
    624629  poly lmRight;
    625   if (tailRing->isLPring) {
     630  if (tailRing->isLPring)
     631  {
     632    assume(PR->shift == 0);
     633    assume(PW->shift == si_max(p_mFirstVblock(PW->p, tailRing) - 1, 0));
    626634    k_SplitFrame(lm, lmRight, PW->shift + 1, tailRing);
    627635  }
     
    834842#ifdef HAVE_SHIFTBBA
    835843  poly lmRight;
    836   if (tailRing->isLPring) {
     844  if (tailRing->isLPring)
     845  {
     846    assume(PR->shift == 0);
     847    assume(PW->shift == si_max(p_mFirstVblock(PW->p, tailRing) - 1, 0));
    837848    k_SplitFrame(lm, lmRight, PW->shift + 1, tailRing);
    838849  }
     
    10781089#ifdef HAVE_SHIFTBBA
    10791090  poly lmRight;
    1080   if (tailRing->isLPring) {
     1091  if (tailRing->isLPring)
     1092  {
     1093    assume(PR->shift == 0);
     1094    assume(PW->shift == si_max(p_mFirstVblock(PW->p, tailRing) - 1, 0));
    10811095    k_SplitFrame(lm, lmRight, PW->shift + 1, tailRing);
    10821096  }
     
    11921206  if (tailRing->isLPring)
    11931207  {
    1194     // note: because of the crits, p2 is never shifted
     1208    assume(si_max(p_mFirstVblock(p2, tailRing) - 1, 0) == 0);
     1209    // note: because of how the pairs are created, p2 should never be shifted
    11951210    int split = p_mFirstVblock(p1, tailRing);
    11961211    k_SplitFrame(m1, m12, split, tailRing);
     
    12691284  if (tailRing->isLPring)
    12701285  {
     1286    // just to be sure, check that the shift is correct
     1287    assume(Pair->shift == 0);
     1288    assume(si_max(p_mFirstVblock(Pair->p, tailRing) - 1, 0) == Pair->shift); // == 0
     1289
    12711290    p_LmDelete(m12, tailRing);
    12721291    p_LmDelete(m22, tailRing);
  • kernel/GBEngine/kstd1.cc

    r18a3df rb849856  
    25682568#ifdef HAVE_SHIFTBBA
    25692569ideal kStdShift(ideal F, ideal Q, tHomog h,intvec ** w, intvec *hilb,int syzComp,
    2570                 int newIdeal, intvec *vw)
     2570                int newIdeal, intvec *vw, BOOLEAN rightGB)
    25712571{
    25722572  ideal r;
     
    25752575  kStrategy strat=new skStrategy;
    25762576  intvec* temp_w=NULL;
     2577
     2578  strat->rightGB = rightGB;
    25772579
    25782580  if(!TEST_OPT_RETURN_SB)
  • kernel/GBEngine/kstd1.h

    r18a3df rb849856  
    3939          int syzComp=0,int newIdeal=0, intvec *vw=NULL, s_poly_proc_t sp=NULL);
    4040
    41 ideal kStdShift(ideal F, ideal Q, tHomog h,intvec ** w, intvec *hilb,int syzComp,
    42                 int newIdeal, intvec *vw);
     41ideal kStdShift(ideal F, ideal Q, tHomog h,intvec ** mw, intvec *hilb=NULL,
     42    int syzComp=0, int newIdeal=0, intvec *vw=NULL, BOOLEAN rightGB=FALSE);
    4343
    4444/* the following global data are defined in kutil.cc */
  • kernel/GBEngine/kstd2.cc

    r18a3df rb849856  
    41784178  initBbaShift(strat); /* DONE */
    41794179  /*set enterS, spSpolyShort, reduce, red, initEcart, initEcartPair*/
    4180   /*Shdl=*/initBuchMoraShift(F, Q,strat); /* updateS with no toT, i.e. no init for T */
    4181   updateSShift(strat); /* initializes T */
     4180  /*Shdl=*/initBuchMora(F, Q,strat);
    41824181  if (strat->minim>0) strat->M=idInit(IDELEMS(F),F->rank);
    41834182  reduc = olddeg = 0;
     
    43524351        // posInS only depends on the leading term
    43534352        strat->enterS(strat->P, pos, strat, strat->tl);
    4354         enterTShift(strat->P, strat);
     4353        if (!strat->rightGB)
     4354          enterTShift(strat->P, strat);
    43554355      }
    43564356
     
    43694369          // and add pairs
    43704370          int pos=posInS(strat,strat->sl,strat->P.p,strat->P.ecart);
    4371           int atR=strat->tl+1; // enterTShift introduces P.p=T[tl+1], T[tl+2]...
    4372           enterTShift(strat->P,strat,-1);
    4373           enterpairsShift(strat->P.p,strat->sl,strat->P.ecart,pos,strat, atR);
    4374           strat->enterS(strat->P, pos, strat, atR);
     4371          enterT(strat->P, strat);
     4372          enterpairsShift(strat->P.p,strat->sl,strat->P.ecart,pos,strat, strat->tl);
     4373          strat->enterS(strat->P, pos, strat, strat->tl);
     4374          if (!strat->rightGB)
     4375            enterTShift(strat->P,strat);
    43754376        }
    43764377      }
     
    43934394    for (int k = 0; k <= strat->sl; ++k)
    43944395    {
     4396      if ((strat->fromQ!=NULL) && (strat->fromQ[k])) continue; // do not reduce Q_k
    43954397      for (int j = 0; j<=strat->tl; ++j)
    43964398      {
     
    44574459
    44584460
    4459 ideal freegb(ideal I)
     4461ideal freegb(ideal F)
    44604462{
    44614463  assume(rIsLPRing(currRing));
    4462   assume(idIsInV(I));
    4463   ideal RS = kStdShift(I,NULL, testHomog, NULL,NULL,0,0,NULL);
     4464  assume(idIsInV(F));
     4465  ideal RS = kStdShift(F, NULL, testHomog, NULL);
     4466  idSkipZeroes(RS); // is this even necessary?
     4467  assume(idIsInV(RS));
     4468  return(RS);
     4469}
     4470
     4471ideal rightgb(ideal F, ideal Q)
     4472{
     4473  assume(rIsLPRing(currRing));
     4474  assume(idIsInV(F));
     4475  ideal RS = kStdShift(F, Q, testHomog, NULL, NULL, 0, 0, NULL, TRUE);
    44644476  idSkipZeroes(RS); // is this even necessary?
    44654477  assume(idIsInV(RS));
  • kernel/GBEngine/kutil.cc

    r18a3df rb849856  
    80358035      Print("\n  %d:",i);
    80368036      p_wrp(strat->S[i], currRing, strat->tailRing);
     8037      if (strat->fromQ!=NULL && strat->fromQ[i])
     8038        Print(" (from Q)");
    80378039    }
    80388040    strat->news = FALSE;
     
    91519153        enterT(h,strat);
    91529154        strat->S_2_R[i] = strat->tl;
     9155#ifdef HAVE_SHIFTBBA
     9156        if (currRing->isLPring)
     9157          enterTShift(h, strat);
     9158#endif
    91539159      }
    91549160    }
     
    92479253      enterT(h,strat);
    92489254      strat->S_2_R[i] = strat->tl;
     9255#ifdef HAVE_SHIFTBBA
     9256      if (currRing->isLPring)
     9257        enterTShift(h, strat);
     9258#endif
    92499259    }
    92509260    if (suc!= -1) updateS(toT,strat);
     
    93619371void enterSBbaShift (LObject &p,int atS,kStrategy strat, int atR)
    93629372{
    9363   int toInsert = itoInsert(p.p, strat->tailRing);
    9364   for (int i = toInsert; i > 0; i--)
     9373  int maxPossibleShift = p_mLPmaxPossibleShift(p.p, strat->tailRing);
     9374  for (int i = maxPossibleShift; i > 0; i--)
    93659375  {
    93669376    LObject qq;
     
    1020410214  strat->cp = 0;
    1020510215  strat->c3 = 0;
     10216#ifdef HAVE_SHIFTBBA
     10217  strat->cv = 0;
     10218#endif
    1020610219  strat->tail = pInit();
    1020710220  /*- set s -*/
     
    1026710280    updateS(TRUE,strat);
    1026810281  }
    10269   if (strat->fromQ!=NULL) omFreeSize(strat->fromQ,IDELEMS(strat->Shdl)*sizeof(int));
    10270   strat->fromQ=NULL;
     10282#ifdef HAVE_SHIFTBBA
     10283  if (!(rIsLPRing(currRing) && strat->rightGB)) // for right GB, we need to check later whether a poly is from Q
     10284#endif
     10285  {
     10286    if (strat->fromQ!=NULL) omFreeSize(strat->fromQ,IDELEMS(strat->Shdl)*sizeof(int));
     10287    strat->fromQ=NULL;
     10288  }
    1027110289  assume(kTest_TS(strat));
    1027210290}
     
    1028810306  pLmFree(&strat->tail);
    1028910307  strat->syzComp=0;
     10308
     10309#ifdef HAVE_SHIFTBBA
     10310  if (rIsLPRing(currRing) && strat->rightGB)
     10311  {
     10312    if (strat->fromQ!=NULL) omFreeSize(strat->fromQ,IDELEMS(strat->Shdl)*sizeof(int));
     10313    strat->fromQ=NULL;
     10314  }
     10315#endif
    1029010316}
    1029110317
     
    1218012206
    1218112207#ifdef HAVE_SHIFTBBA
    12182 /* including the self pairs */
    12183 void updateSShift(kStrategy strat)
    12184 {
    12185   /* to use after updateS(toT=FALSE,strat) */
    12186   /* fills T with shifted elt's of S */
    12187   int i;
    12188   LObject h;
    12189   int atT = -1; // or figure out smth better
    12190   strat->tl = -1; // init
    12191   for (i=0; i<=strat->sl; i++)
    12192   {
    12193     memset(&h,0,sizeof(h));
    12194     h.p =  strat->S[i];
    12195     strat->initEcart(&h);
    12196     h.sev = strat->sevS[i];
    12197     h.t_p = NULL;
    12198     h.GetTP(); // creates correct t_p
    12199     /*puts the elements of S with their shifts to T*/
    12200     //    int atT, int uptodeg, int lV)
    12201     strat->S_2_R[i] = strat->tl + 1; // the el't with shift 0 will be inserted first
    12202     // need a small check for above; we insert >=1 elements
    12203     // insert this check into kTest_TS ?
    12204     enterTShift(h,strat,atT);
    12205   }
    12206   /* what about setting strat->tl? */
     12208// creates if possible (q,p), (shifts(q),p)
     12209static void enterOnePairWithShifts (int q_inS /*also i*/, poly q, poly p, int ecartp, int p_isFromQ, kStrategy strat, int atR, int p_lastVblock, int q_lastVblock)
     12210{
     12211  // note: ecart and isFromQ is for p
     12212  assume(q_inS < 0 || strat->S[q_inS] == q); // if q is from S, q_inS should be the index of q in S
     12213  assume(pmFirstVblock(p) == 1);
     12214  assume(pmFirstVblock(q) == 1);
     12215  assume(p_lastVblock == pmLastVblock(p));
     12216  assume(q_lastVblock == pmLastVblock(q));
     12217
     12218  // TODO: is ecartq = 0 still ok?
     12219  int ecartq = 0; //Hans says it's ok; we're in the homog case, no ecart
     12220
     12221  int q_isFromQ = 0;
     12222  if (strat->fromQ != NULL && q_inS >= 0)
     12223    q_isFromQ = strat->fromQ[q_inS];
     12224
     12225  int degbound = currRing->N/currRing->isLPring;
     12226  int neededShift = p_lastVblock - 1;
     12227  int maxPossibleShift = degbound - q_lastVblock;
     12228  int maxShift = si_min(neededShift, maxPossibleShift);
     12229  int firstShift = (q == p ? 1 : 0); // do not add (q,p) if q=p
     12230  for (int j = firstShift; j <= maxShift; j++)
     12231  {
     12232    poly qq = pLPCopyAndShiftLM(q, j);
     12233    enterOnePairShift(qq, p, ecartp, p_isFromQ, strat, -1, ecartq, q_isFromQ, j, q_inS);
     12234  }
    1220712235}
    1220812236#endif
    1220912237
    1221012238#ifdef HAVE_SHIFTBBA
    12211 void initBuchMoraShift (ideal F,ideal Q,kStrategy strat)
    12212 {
    12213   strat->interpt = BTEST1(OPT_INTERRUPT);
    12214   strat->kHEdge=NULL;
    12215   if (rHasGlobalOrdering(currRing)) strat->kHEdgeFound=FALSE;
    12216   /*- creating temp data structures------------------- -*/
    12217   strat->cp = 0;
    12218   strat->c3 = 0;
    12219   strat->cv = 0;
    12220   strat->tail = pInit();
    12221   /*- set s -*/
    12222   strat->sl = -1;
    12223   /*- set L -*/
    12224   strat->Lmax = setmaxL;
    12225   strat->Ll = -1;
    12226   strat->L = initL();
    12227   /*- set B -*/
    12228   strat->Bmax = setmaxL;
    12229   strat->Bl = -1;
    12230   strat->B = initL();
    12231   /*- set T -*/
    12232   strat->tl = -1;
    12233   strat->tmax = setmaxT;
    12234   strat->T = initT();
    12235   strat->R = initR();
    12236   strat->sevT = initsevT();
    12237   /*- init local data struct.---------------------------------------- -*/
    12238   strat->P.ecart=0;
    12239   strat->P.length=0;
    12240   if (rHasLocalOrMixedOrdering(currRing))
    12241   {
    12242     if (strat->kHEdge!=NULL) pSetComp(strat->kHEdge, strat->ak);
    12243     if (strat->kNoether!=NULL) pSetComp(strat->kNoetherTail(), strat->ak);
    12244   }
    12245   if(rField_is_Ring(currRing))
    12246   {
    12247     /*Shdl=*/initSL(F, Q,strat); /*sets also S, ecartS, fromQ */
    12248   }
    12249   {
    12250     if(TEST_OPT_SB_1)
    12251     {
    12252       int i;
    12253       ideal P=idInit(IDELEMS(F)-strat->newIdeal,F->rank);
    12254       for (i=strat->newIdeal;i<IDELEMS(F);i++)
    12255       {
    12256         P->m[i-strat->newIdeal] = F->m[i];
    12257         F->m[i] = NULL;
    12258       }
    12259       initSSpecial(F,Q,P,strat);
    12260       for (i=strat->newIdeal;i<IDELEMS(F);i++)
    12261       {
    12262         F->m[i] = P->m[i-strat->newIdeal];
    12263         P->m[i-strat->newIdeal] = NULL;
    12264       }
    12265       idDelete(&P);
    12266     }
    12267     else
    12268     {
    12269       /*Shdl=*/initSL(F, Q,strat); /*sets also S, ecartS, fromQ */
    12270       // /*Shdl=*/initS(F, Q,strat); /*sets also S, ecartS, fromQ */
    12271     }
    12272   }
    12273   strat->fromT = FALSE;
    12274   if (!TEST_OPT_SB_1)
    12275   {
    12276     /* the only change: we do not fill the set T*/
    12277     if(!rField_is_Ring(currRing)) updateS(FALSE,strat);
    12278   }
    12279   if (strat->fromQ!=NULL) omFreeSize(strat->fromQ,IDELEMS(strat->Shdl)*sizeof(int));
    12280   strat->fromQ=NULL;
    12281   /* more changes: fill the set T with all the shifts of elts of S*/
    12282   /* is done by other procedure */
     12239// creates if possible (q,p), use it when q is already shifted
     12240static void enterOnePairWithoutShifts (int p_inS /*also i*/, poly q, poly p, int ecartq, int q_isFromQ, kStrategy strat, int atR, int p_lastVblock, int q_shift)
     12241{
     12242  // note: ecart and isFromQ is for p
     12243  assume(p_inS < 0 || strat->S[p_inS] == p); // if p is from S, p_inS should be the index of p in S
     12244  assume(pmFirstVblock(p) == 1);
     12245  assume(p_lastVblock == pmLastVblock(p));
     12246  assume(q_shift == pmFirstVblock(q) - 1);
     12247
     12248  // TODO: is ecartp = 0 still ok?
     12249  int ecartp = 0; //Hans says it's ok; we're in the homog e:, no ecart
     12250
     12251  int p_isFromQ = 0;
     12252  if (strat->fromQ != NULL && p_inS >= 0)
     12253    p_isFromQ = strat->fromQ[p_inS];
     12254
     12255  int maxNeededShift = p_lastVblock - 1;
     12256  if (q_shift <= maxNeededShift)
     12257    enterOnePairShift(q, p, ecartp, p_isFromQ, strat, -1, ecartq, q_isFromQ, q_shift, -1);
    1228312258}
    1228412259#endif
    1228512260
    1228612261#ifdef HAVE_SHIFTBBA
    12287 /*1
    12288 * put the pairs (sh \dot s[i],p)  into the set B, ecart=ecart(p)
    12289 */
    12290 static void enterOnePairManyShifts (int i, poly p, int ecart, int isFromQ, kStrategy strat, int atR)
    12291 {
    12292   poly s = strat->S[i];
    12293   assume(i<=strat->sl); // from OnePair
    12294 
    12295   /* cycles through all shifts of s[i] until uptodeg - lastVblock(s[i]) */
    12296   /* that is create the pairs (f, s \dot g)  */
    12297 
    12298   //  poly q = pCopy(pHead(strat->S[i])); // lm in currRing
    12299   //  pNext(q) = prCopyR(pNext(strat->S[i]),strat->tailRing,currRing); // zero shift
    12300 
    12301  /* determine how many elements we have to insert for a given s[i] */
    12302   /* x(0)y(1)z(2) : lastVblock-1=2, to add until lastVblock=uptodeg-1 */
    12303   /* hence, a total number of elt's to add is: */
    12304   /*  int toInsert = 1 + (uptodeg-1) - (pLastVblock(p.p, lV) -1);  */
    12305   int toInsert =  itoInsert(s, currRing);
    12306 
    12307 
    12308   /* these vars hold for all shifts of s[i] */
    12309   int ecartq = 0; //Hans says it's ok; we're in the homog case, no ecart
    12310 
    12311   int qfromQ;
    12312   if (strat->fromQ != NULL)
    12313   {
    12314     qfromQ = strat->fromQ[i];
    12315   }
    12316   else
    12317   {
    12318     qfromQ = -1;
    12319   }
    12320 
    12321   // for the 0th shift: insert the orig. pair
    12322   enterOnePairShift(s, p, ecart, isFromQ, strat, -1, ecartq, qfromQ, 0, i);
    12323 
    12324   for (int j = 1; j <= toInsert; j++)
    12325   {
    12326     poly q = pLPCopyAndShiftLM(s, j);
    12327     enterOnePairShift(q, p, ecart, isFromQ, strat, -1, ecartq, qfromQ, j, i);
    12328   }
    12329 }
    12330 #endif
    12331 
    12332 #ifdef HAVE_SHIFTBBA
    12333 /*1
    12334 * put the pairs (sh \dot qq,p)  into the set B, ecart=ecart(p)
    12335 * despite the name, not only self shifts
    12336 */
    12337 void enterOnePairSelfShifts (poly qq, poly p, int ecart, int isFromQ, kStrategy strat, int /*atR*/)
    12338 {
    12339   /* should cycle through all shifts of q until uptodeg - lastVblock(q) */
    12340   /* that is create the pairs (f, s \dot g)  */
    12341 
    12342   int toInsert =  itoInsert(qq, currRing);
    12343 
    12344   /* these vars hold for all shifts of s[i] */
    12345   int ecartq = 0; //Hans says it's ok; we're in the homog case, no ecart
    12346   int qfromQ = 0; // strat->fromQ[i];
    12347 
    12348   /* since this proc is applied twice for (h, s*g) and (g,s*h), init j with 1 */
    12349   for (int j = 1; j<= toInsert; j++)
    12350   {
    12351     poly q = pLPCopyAndShiftLM(qq, j);
    12352     enterOnePairShift(q, p, ecart, isFromQ, strat, -1, ecartq, qfromQ, j, -1);
    12353   }
    12354 }
    12355 #endif
    12356 
    12357 #ifdef HAVE_SHIFTBBA
     12262
     12263#ifdef KDEBUG
     12264// enable to print which pairs are considered or discarded and why
     12265/* #define CRITERION_DEBUG */
     12266#endif
    1235812267/*2
    1235912268* put the pair (q,p)  into the set B, ecart=ecart(p), q is the shift of some s[i]
     
    1236112270void enterOnePairShift (poly q, poly p, int ecart, int isFromQ, kStrategy strat, int atR, int ecartq, int qisFromQ, int shiftcount, int ifromS)
    1236212271{
     12272#ifdef CRITERION_DEBUG
     12273  if (TEST_OPT_DEBUG)
     12274  {
     12275    PrintS("Consider pair ("); wrp(q); PrintS(", "); wrp(p); PrintS(")"); PrintLn();
     12276    // also write the LMs in separate lines:
     12277    poly lmq = pHead(q);
     12278    poly lmp = pHead(p);
     12279    pSetCoeff(lmq, n_Init(1, currRing->cf));
     12280    pSetCoeff(lmp, n_Init(1, currRing->cf));
     12281    Print("    %s\n", pString(lmq));
     12282    Print("    %s\n", pString(lmp));
     12283    pLmDelete(lmq);
     12284    pLmDelete(lmp);
     12285  }
     12286#endif
    1236312287
    1236412288  /* Format: q and p are like strat->P.p, so lm in CR, tail in TR */
     
    1237012294  assume(p_CheckIsFromRing(pNext(p),strat->tailRing));
    1237112295
    12372 #ifdef KDEBUG
    12373 //    if (TEST_OPT_DEBUG)
    12374 //    {
    12375 //       PrintS("enterOnePairShift(q,p) invoked with q = ");
    12376 //       wrp(q); //      wrp(pHead(q));
    12377 //       PrintS(", p = ");
    12378 //       wrp(p); //wrp(pHead(p));
    12379 //       PrintLn();
    12380 //    }
    12381 #endif
    12382 
    1238312296  /* poly q stays for s[i], ecartq = ecart(q), qisFromQ = applies to q */
    1238412297
     
    1239712310  Lp.lcm = p_Lcm(p,q, currRing); // q is what was strat->S[i], so a poly in LM/TR presentation
    1239812311
    12399   /* apply the V criterion */
    12400   if (!pIsInV(Lp.lcm))
    12401   {
    12402 #ifdef KDEBUG
    12403     if (TEST_OPT_DEBUG)
    12404     {
    12405       PrintS("V crit applied to q = ");
    12406       wrp(q); //      wrp(pHead(q));
    12407       PrintS(", p = ");
    12408       wrp(p); //wrp(pHead(p));
    12409       PrintLn();
    12410     }
    12411 #endif
     12312  /* the V criterion */
     12313  if (!pmIsInV(Lp.lcm))
     12314  {
     12315    strat->cv++; // counter for applying the V criterion
    1241212316    pLmFree(Lp.lcm);
    12413     /* + counter for applying the V criterion */
    12414     strat->cv++;
     12317#ifdef CRITERION_DEBUG
     12318    if (TEST_OPT_DEBUG) PrintS("--- V crit\n");
     12319#endif
    1241512320    return;
    1241612321  }
     
    1243712342      strat->cp++;
    1243812343      pLmFree(Lp.lcm);
     12344#ifdef CRITERION_DEBUG
     12345      if (TEST_OPT_DEBUG) PrintS("--- prod crit\n");
     12346#endif
    1243912347      return;
    1244012348    }
     
    1244412352    {
    1244512353      pLmFree(Lp.lcm);
     12354#ifdef CRITERION_DEBUG
     12355      if (TEST_OPT_DEBUG) PrintS("--- ecartq > ecart\n");
     12356#endif
    1244612357      return;
    1244712358      /*the pair is (s[i],t[.]), discard it if the ecart is too big*/
     
    1246612377          {
    1246712378            pLmFree(Lp.lcm);
     12379#ifdef CRITERION_DEBUG
     12380            if (TEST_OPT_DEBUG) Print("--- divided by B[%d]\n", j);
     12381#endif
    1246812382            return;
    1246912383          }
     
    1247512389        {
    1247612390          deleteInL(strat->B,&strat->Bl,j,strat);
     12391#ifdef CRITERION_DEBUG
     12392          if (TEST_OPT_DEBUG) Print("divides B[%d] -> delete B[%d]\n", j, j);
     12393#endif
    1247712394          strat->c3++;
    1247812395        }
     
    1250412421          strat->cp++;
    1250512422          pLmFree(Lp.lcm);
     12423#ifdef CRITERION_DEBUG
     12424          if (TEST_OPT_DEBUG) PrintS("--- prod crit\n");
     12425#endif
    1250612426          return;
    1250712427      }
     
    1250912429      {
    1251012430        pLmFree(Lp.lcm);
     12431#ifdef CRITERION_DEBUG
     12432        if (TEST_OPT_DEBUG) PrintS("--- ecartq > ecart\n");
     12433#endif
    1251112434        return;
    1251212435        /*the pair is (s[i],t[.]), discard it if the ecart is too big*/
     
    1252712450          {
    1252812451            pLmFree(Lp.lcm);
     12452#ifdef CRITERION_DEBUG
     12453            if (TEST_OPT_DEBUG) Print("--- divided by B[%d]\n", j);
     12454#endif
    1252912455            return;
    1253012456          }
     
    1253512461        {
    1253612462          deleteInL(strat->B,&strat->Bl,j,strat);
     12463#ifdef CRITERION_DEBUG
     12464          if (TEST_OPT_DEBUG) Print("divides B[%d] -> delete B[%d]\n", j, j);
     12465#endif
    1253712466          strat->c3++;
    1253812467        }
     
    1254712476    pNorm(p);
    1254812477  if ((q==NULL) || (p==NULL))
     12478  {
     12479#ifdef CRITERION_DEBUG
     12480    if (TEST_OPT_DEBUG) PrintS("--- q == NULL || p == NULL\n");
     12481#endif
    1254912482    return;
     12483  }
    1255012484  if ((strat->fromQ!=NULL) && (isFromQ!=0) && (qfromQ!=0))
     12485  {
    1255112486    Lp.p=NULL;
     12487#ifdef CRITERION_DEBUG
     12488    if (TEST_OPT_DEBUG) PrintS("--- pair from Q\n");
     12489#endif
     12490  }
    1255212491  else
    1255312492  {
     
    1260712546    */
    1260812547    if (Lp.lcm!=NULL) pLmFree(Lp.lcm);
     12548#ifdef CRITERION_DEBUG
     12549    if (TEST_OPT_DEBUG) PrintS("--- S-poly = 0\n");
     12550#endif
    1260912551  }
    1261012552  else
     
    1264312585    l = strat->posInL(strat->B,strat->Bl,&Lp,strat);
    1264412586    enterL(&strat->B,&strat->Bl,&strat->Bmax,Lp,l);
     12587#ifdef CRITERION_DEBUG
     12588    if (TEST_OPT_DEBUG) PrintS("+++ Entered pair\n");
     12589#endif
    1264512590  }
    1264612591}
     
    1265512600void initenterpairsShift (poly h,int k,int ecart,int isFromQ, kStrategy strat, int atR)
    1265612601{
     12602  int h_lastVblock = pmLastVblock(h);
     12603  assume(h_lastVblock != 0 || pLmIsConstantComp(h));
     12604  // TODO: is it allowed to skip pairs with constants? also with constants from other components?
     12605  if (h_lastVblock == 0) return;
     12606  assume(pmFirstVblock(h) == 1);
    1265712607  /* h comes from strat->P.p, that is LObject with LM in currRing and Tail in tailRing */
    1265812608  //  atR = -1;
     
    1266012610  || (pGetComp(h)<=strat->syzComp))
    1266112611  {
    12662     int j;
     12612    int i,j;
    1266312613    BOOLEAN new_pair=FALSE;
    1266412614
     12615    int degbound = currRing->N/currRing->isLPring;
     12616    int maxShift = degbound - h_lastVblock;
     12617
    1266512618    if (pGetComp(h)==0)
    1266612619    {
     12620      if (strat->rightGB)
     12621      {
     12622        if (isFromQ)
     12623        {
     12624          // pairs (shifts(h),s[1..k]), (h, s[1..k])
     12625          for (i=0; i<=maxShift; i++)
     12626          {
     12627            poly hh = pLPCopyAndShiftLM(h, i);
     12628            for (j=0; j<=k; j++)
     12629            {
     12630              if (strat->fromQ == NULL || !strat->fromQ[j])
     12631              {
     12632                new_pair=TRUE;
     12633                poly s = strat->S[j];
     12634                enterOnePairWithoutShifts(j, hh, s, ecart, isFromQ, strat, atR, pmLastVblock(s), i);
     12635              }
     12636            }
     12637          }
     12638        }
     12639        else
     12640        {
     12641          new_pair=TRUE;
     12642          for (j=0; j<=k; j++)
     12643          {
     12644            poly s = strat->S[j];
     12645            if (strat->fromQ != NULL && strat->fromQ[j])
     12646            {
     12647              // pairs (shifts(s[j]),h), (s[j],h)
     12648              enterOnePairWithShifts(j, s, h, ecart, isFromQ, strat, atR, h_lastVblock, pmLastVblock(s));
     12649            }
     12650            else
     12651            {
     12652              // pair (h, s[j])
     12653              enterOnePairWithoutShifts(j, h, s, ecart, isFromQ, strat, atR, pmLastVblock(s), 0);
     12654            }
     12655          }
     12656        }
     12657      }
    1266712658      /* for Q!=NULL: build pairs (f,q),(f1,f2), but not (q1,q2)*/
    12668       if ((isFromQ)&&(strat->fromQ!=NULL))
    12669       {
    12670         for (j=0; j<=k; j++)
    12671         {
     12659      else if ((isFromQ)&&(strat->fromQ!=NULL))
     12660      {
     12661        // pairs (shifts(s[1..k]),h), (s[1..k],h)
     12662        for (j=0; j<=k; j++) {
    1267212663          if (!strat->fromQ[j])
    1267312664          {
    1267412665            new_pair=TRUE;
    12675             enterOnePairManyShifts(j,h,ecart,isFromQ,strat, atR);
    12676             // other side pairs:
    12677             enterOnePairSelfShifts(h,strat->S[j],ecart,isFromQ,strat, atR);
    12678           //Print("j:%d, Ll:%d\n",j,strat->Ll);
     12666            poly s = strat->S[j];
     12667            enterOnePairWithShifts(j, s, h, ecart, isFromQ, strat, atR, h_lastVblock, pmLastVblock(s));
    1267912668          }
    1268012669        }
     12670        // pairs (shifts(h),s[1..k])
     12671        if (new_pair)
     12672        {
     12673          for (i=1; i<=maxShift; i++)
     12674          {
     12675            poly hh = pLPCopyAndShiftLM(h, i);
     12676            for (j=0; j<=k; j++)
     12677            {
     12678              if (!strat->fromQ[j])
     12679              {
     12680                poly s = strat->S[j];
     12681                enterOnePairWithoutShifts(j, hh, s, ecart, isFromQ, strat, atR, pmLastVblock(s), i);
     12682              }
     12683            }
     12684          }
     12685        }
    1268112686      }
    1268212687      else
    1268312688      {
    1268412689        new_pair=TRUE;
     12690        // pairs (shifts(s[1..k]),h), (s[1..k],h)
     12691        for (j=0; j<=k; j++) {
     12692          poly s = strat->S[j];
     12693          // TODO: cache lastVblock of s[1..k] for later use
     12694          enterOnePairWithShifts(j, s, h, ecart, isFromQ, strat, atR, h_lastVblock, pmLastVblock(s));
     12695        }
     12696        // pairs (shifts(h),s[1..k]), (shifts(h), h)
     12697        for (i=1; i<=maxShift; i++)
     12698        {
     12699          poly hh = pLPCopyAndShiftLM(h, i);
     12700          for (j=0; j<=k; j++)
     12701          {
     12702            poly s = strat->S[j];
     12703            enterOnePairWithoutShifts(j, hh, s, ecart, isFromQ, strat, atR, pmLastVblock(s), i);
     12704          }
     12705          enterOnePairWithoutShifts(-1, hh, h, ecart, isFromQ, strat, atR, h_lastVblock, i);
     12706        }
     12707      }
     12708    }
     12709    else
     12710    {
     12711      new_pair=TRUE;
     12712      if (strat->rightGB)
     12713      {
    1268512714        for (j=0; j<=k; j++)
    1268612715        {
    12687           enterOnePairManyShifts(j,h,ecart,isFromQ,strat, atR);
    12688           // other side pairs
    12689           enterOnePairSelfShifts(h,strat->S[j],ecart,isFromQ,strat, atR);
    12690         }
    12691         /* HERE we put (h, s*h) pairs */
    12692        /* enterOnePairSelfShifts (poly qq, poly p, int ecart, int isFromQ, kStrategy strat, int atR, int uptodeg, int lV); */
    12693        enterOnePairSelfShifts (h, h, ecart, isFromQ, strat, atR);
    12694       }
    12695     }
    12696     else
    12697     {
    12698       for (j=0; j<=k; j++)
    12699       {
    12700         if ((pGetComp(h)==pGetComp(strat->S[j]))
    12701         || (pGetComp(strat->S[j])==0))
    12702         {
    12703           new_pair=TRUE;
    12704           enterOnePairManyShifts(j,h,ecart,isFromQ,strat, atR);
    12705           // other side pairs
    12706           enterOnePairSelfShifts(h,strat->S[j],ecart,isFromQ,strat, atR);
    12707         //Print("j:%d, Ll:%d\n",j,strat->Ll);
    12708         }
    12709       }
    12710       /* HERE we put (h, s*h) pairs */
    12711       enterOnePairSelfShifts (h, h, ecart, isFromQ, strat, atR);
     12716          if ((pGetComp(h)==pGetComp(strat->S[j]))
     12717              || (pGetComp(strat->S[j])==0))
     12718          {
     12719            assume(isFromQ == 0); // this case is not handeled here and should also never happen
     12720            poly s = strat->S[j];
     12721            if (strat->fromQ != NULL && strat->fromQ[j])
     12722            {
     12723              // pairs (shifts(s[j]),h), (s[j],h)
     12724              enterOnePairWithShifts(j, s, h, ecart, isFromQ, strat, atR, h_lastVblock, pmLastVblock(s));
     12725            }
     12726            else
     12727            {
     12728              // pair (h, s[j])
     12729              enterOnePairWithoutShifts(j, h, s, ecart, isFromQ, strat, atR, pmLastVblock(s), 0);
     12730            }
     12731          }
     12732        }
     12733      }
     12734      else
     12735      {
     12736        // pairs (shifts(s[1..k]),h), (s[1..k],h)
     12737        for (j=0; j<=k; j++) {
     12738          if ((pGetComp(h)==pGetComp(strat->S[j]))
     12739              || (pGetComp(strat->S[j])==0))
     12740          {
     12741            poly s = strat->S[j];
     12742            enterOnePairWithShifts(j, s, h, ecart, isFromQ, strat, atR, h_lastVblock, pmLastVblock(s));
     12743          }
     12744        }
     12745        // pairs (shifts(h),s[1..k]), (shifts(h), h)
     12746        for (i=1; i<=maxShift; i++)
     12747        {
     12748          poly hh = pLPCopyAndShiftLM(h, i);
     12749          for (j=0; j<=k; j++)
     12750          {
     12751            if ((pGetComp(h)==pGetComp(strat->S[j]))
     12752                || (pGetComp(strat->S[j])==0))
     12753            {
     12754              poly s = strat->S[j];
     12755              enterOnePairWithoutShifts(j, hh, s, ecart, isFromQ, strat, atR, pmLastVblock(s), i);
     12756            }
     12757          }
     12758          enterOnePairWithoutShifts(-1, hh, h, ecart, isFromQ, strat, atR, h_lastVblock, i);
     12759        }
     12760      }
    1271212761    }
    1271312762
     
    1273812787    ||(pGetComp(h)<=strat->syzComp)))
    1273912788  {
    12740     //Print("start clearS k=%d, pos=%d, sl=%d\n",k,pos,strat->sl);
    1274112789    unsigned long h_sev = pGetShortExpVector(h);
    1274212790    loop
    1274312791    {
    1274412792      if (j > k) break;
    12745       clearS(h,h_sev, &j,&k,strat);
     12793      // TODO this currently doesn't clear all possible elements because of commutative division
     12794      if (!(strat->rightGB && strat->fromQ != NULL && strat->fromQ[j]))
     12795        clearS(h,h_sev, &j,&k,strat);
    1274612796      j++;
    1274712797    }
    12748     //Print("end clearS sl=%d\n",strat->sl);
    12749   }
    12750  // PrintS("end enterpairs\n");
     12798  }
    1275112799}
    1275212800#endif
     
    1276512813  pAssume(p.p != NULL);
    1276612814
    12767   int toInsert = itoInsert(p.p, strat->tailRing);
    12768 
    12769   for (int i = 1; i <= toInsert; i++)
     12815  int maxPossibleShift = p_mLPmaxPossibleShift(p.p, strat->tailRing);
     12816
     12817  for (int i = 1; i <= maxPossibleShift; i++)
    1277012818  {
    1277112819    LObject qq;
  • kernel/GBEngine/kutil.h

    rc723156 rb849856  
    1111#include <string.h>
    1212
     13#include "omalloc/omalloc.h"
    1314#ifdef HAVE_OMALLOC
    14 #include "omalloc/omalloc.h"
    1515#include "omalloc/omallocClass.h"
    16 #else
    17 #include "xalloc/omalloc.h"
    1816#endif
    1917
  • kernel/GBEngine/shiftgb.cc

    r18a3df rb849856  
    4343}
    4444
    45 /* for poly in lmCR/tailTR presentation */
    46 int itoInsert(poly p, const ring r)
     45int p_mLPmaxPossibleShift(poly p, const ring r)
    4746{
    48   /* the below situation (commented out) might happen! */
    49 //   if (r == currRing)
    50 //   {
    51 //     "Current ring is not expected in toInsert";
    52 //     return(0);
    53 //   }
    54   /* compute the number of insertions */
    55   int i = p_mLastVblock(p, currRing);
    56   if (pNext(p) != NULL)
    57   {
    58     i = si_max(i, p_LastVblock(pNext(p), r) );
    59   }
    60   //  i = uptodeg  - i +1;
     47  int lastBlock = p_mLastVblock(p, r);
     48  if (lastBlock == 0) return 0;
    6149  int uptodeg = r->N/r->isLPring;
    62   //  p_wrp(p,currRing,r); Print("----i:%d",i); PrintLn();
    63   return uptodeg - i;
     50  return uptodeg - lastBlock;
    6451}
    6552
  • kernel/GBEngine/shiftgb.h

    r18a3df rb849856  
    1515#define pLPCopyAndShiftLM(p, sh) p_LPCopyAndShiftLM(p, sh, currRing)
    1616
    17 int itoInsert(poly p, const ring r);
     17int p_mLPmaxPossibleShift(poly p, const ring r);
     18#define pmLPmaxPossibleShift(p) p_mLPmaxPossibleShift(p, currRing)
    1819
    1920#endif
  • kernel/GBEngine/tgb_internal.h

    rc723156 rb849856  
    1010#define USE_NORO 1
    1111
    12 #ifdef HAVE_OMALLOC
    1312#include "omalloc/omalloc.h"
    14 #else
    15 #include "xalloc/omalloc.h"
    16 #endif
    1713
    1814//#define TGB_DEBUG
  • kernel/GBEngine/tgbgauss.h

    rc723156 rb849856  
    99#include "coeffs/numbers.h"
    1010#include "polys/monomials/p_polys.h"
     11#include "omalloc/omalloc.h"
    1112#ifdef HAVE_OMALLOC
    12 #include "omalloc/omalloc.h"
    1313#include "omalloc/omallocClass.h"
    14 #else
    15 #include "xalloc/omalloc.h"
    1614#endif
    1715
  • kernel/oswrapper/feread.cc

    rc723156 rb849856  
    1818#define READLINE_STATIC
    1919#endif
    20 #ifdef HAVE_OMALLOC
    2120#include "omalloc/omalloc.h"
    22 #else
    23 #include "xalloc/omalloc.h"
    24 #endif
    2521#include "misc/options.h"
    2622
  • kernel/oswrapper/fereadl.c

    rc723156 rb849856  
    1111
    1212#include "kernel/mod2.h"
    13 #ifdef HAVE_OMALLOC
    1413#include "omalloc/omalloc.h"
    15 #else
    16 #include "xalloc/omalloc.h"
    17 #endif
    1814
    1915#ifdef HAVE_FEREAD
  • kernel/spectrum/GMPrat.cc

    rc723156 rb849856  
    2020#endif
    2121
    22 #ifdef HAVE_OMALLOC
    2322#include "omalloc/omalloc.h"
    24 #else
    25 #include "xalloc/omalloc.h"
    26 #endif
    27 
    2823#include "kernel/spectrum/GMPrat.h"
    2924
  • kernel/structs.h

    rc723156 rb849856  
    1111
    1212/* for omBin */
    13 #ifdef HAVE_OMALLOC
    1413#include "omalloc/omalloc.h"
    15 #else
    16 #include "xalloc/omalloc.h"
    17 #endif
    1814
    1915#ifdef HAVE_RINGS
  • libpolys/coeffs/coeffs.h

    rc723156 rb849856  
    1111
    1212#include "misc/auxiliary.h"
    13 #ifdef HAVE_OMALLOC
    1413#include "omalloc/omalloc.h"
    15 #else
    16 #include "xalloc/omalloc.h"
    17 #endif
    1814
    1915#include "misc/sirandom.h"
  • libpolys/coeffs/shortfl.h

    rc723156 rb849856  
    88*/
    99#include "misc/auxiliary.h"
    10 #ifdef HAVE_OMALLOC
    1110#include "omalloc/omalloc.h"
    12 #else
    13 #include "xalloc/omalloc.h"
    14 #endif
    1511
    1612#if SIZEOF_DOUBLE == SIZEOF_LONG
  • libpolys/misc/int64vec.h

    rc723156 rb849856  
    1111
    1212#include "misc/auxiliary.h"
     13#include "omalloc/omalloc.h"
    1314#ifdef HAVE_OMALLOC
    14 #include "omalloc/omalloc.h"
    1515#include "omalloc/omallocClass.h"
    16 #else
    17 #include "xalloc/omalloc.h"
    1816#endif
    1917
  • libpolys/misc/intvec.cc

    rc723156 rb849856  
    1212#include "misc/intvec.h"
    1313#include "misc/options.h"
    14 #ifdef HAVE_OMALLOC
    1514#include "omalloc/omalloc.h"
    16 #else
    17 #include "xalloc/omalloc.h"
    18 #endif
    19 
    2015
    2116#pragma GCC push_options
  • libpolys/misc/intvec.h

    rc723156 rb849856  
    99#include <string.h>
    1010#include "misc/auxiliary.h"
     11#include "omalloc/omalloc.h"
    1112#ifdef HAVE_OMALLOC
    12 #include "omalloc/omalloc.h"
    1313#include "omalloc/omallocClass.h"
    14 #else
    15 #include "xalloc/omalloc.h"
    1614#endif
    1715
  • libpolys/polys/mod_raw.cc

    rc723156 rb849856  
    1919#include <unistd.h>
    2020
    21 
    22 
    23 
    24 
    2521#include "misc/auxiliary.h"
    26 
    2722#include "reporter/reporter.h"
    28 
    2923#include "resources/feResource.h"
    30 
    31 #ifdef HAVE_OMALLOC
    3224#include "omalloc/omalloc.h"
    33 #else
    34 #include "xalloc/omalloc.h"
    35 #endif
    36 
    3725#include "mod_raw.h"
    3826
  • libpolys/polys/shiftop.cc

    r18a3df rb849856  
    368368  p_GetExpV(m,e,ri);
    369369
     370  if (p_mLastVblock(m, e, ri) + sh > ri->N/lV)
     371  {
     372    Werror("letterplace degree bound is %d, but at least %d is needed for this shift", ri->N/lV, p_mLastVblock(m, e, ri) + sh);
     373  }
    370374  for (int i = ri->N - sh*lV; i > 0; i--)
    371375  {
     
    506510  PrintLn(); WriteLPExpV(m2ExpV, ri);
    507511#endif
    508   if (m1Length + m2Length > ri->N)
    509   {
    510     WarnS("letterplace degree bound too low for this multiplication");
    511   }
    512   for (int i = 1 + m1Length; i < 1 + m1Length + m2Length; ++i)
     512  int last = m1Length + m2Length;
     513  if (last > ri->N)
     514  {
     515    Werror("letterplace degree bound is %d, but at least %d is needed for this multiplication", ri->N/ri->isLPring, last/ri->isLPring);
     516    last = ri->N;
     517  }
     518  for (int i = 1 + m1Length; i < 1 + last; ++i)
    513519  {
    514520    assume(m2ExpV[i - m1Length] <= 1);
     
    531537  PrintLn(); WriteLPExpV(m2ExpV, ri);
    532538#endif
    533   if (m1Length + m2Length > ri->N)
    534   {
    535     WarnS("letterplace degree bound too low for this multiplication");
     539  int last = m1Length + m2Length;
     540  if (last > ri->N)
     541  {
     542    Werror("letterplace degree bound is %d, but at least %d is needed for this multiplication", ri->N/ri->isLPring, last/ri->isLPring);
     543    last = ri->N;
    536544  }
    537545
    538546  // shift m1 by m2Length
    539   for (int i = m2Length + m1Length; i >= 1 + m2Length; --i)
     547  for (int i = last; i >= 1 + m2Length; --i)
    540548  {
    541549    m1ExpV[i] = m1ExpV[i - m2Length];
  • libpolys/polys/weight0.c

    rc723156 rb849856  
    88
    99#include "misc/auxiliary.h"
    10 
    11 #ifdef HAVE_OMALLOC
    1210#include "omalloc/omalloc.h"
    13 #else
    14 #include "xalloc/omalloc.h"
    15 #endif
    1611
    1712#include <math.h>
  • libpolys/reporter/reporter.cc

    rc723156 rb849856  
    1313#include "resources/feFopen.h"
    1414//#include "options.h"
    15 #ifdef HAVE_OMALLOC
    1615#include "omalloc/omalloc.h"
    17 #else
    18 #include "xalloc/omalloc.h"
    19 #endif
    2016
    2117#include <stdlib.h>
  • libpolys/reporter/s_buff.cc

    rc723156 rb849856  
    1111
    1212#include "misc/auxiliary.h"
    13 #ifdef HAVE_OMALLOC
    1413#include "omalloc/omalloc.h"
    15 #else
    16 #include "xalloc/omalloc.h"
    17 #endif
    1814
    1915#include "reporter/s_buff.h"
  • m4/options.m4

    rc723156 rb849856  
    106106    AC_MSG_RESULT(${OMALLOC_LIBS:-unset})
    107107  fi
    108 
    109   AM_CONDITIONAL([ENABLE_OMALLOC],[test "x$ENABLE_OMALLOC" = xyes])
    110108])
    111109
     
    148146 else
    149147  OMALLOC_INCLUDES="-I$ac_abs_top_srcdir"
    150   OMALLOC_LIBS="$ac_abs_top_builddir/xalloc/libomalloc.la"
     148  OMALLOC_LIBS="$ac_abs_top_builddir/omalloc/libomalloc.la"
    151149  AC_SUBST(OMALLOC_INCLUDES)
    152150  AC_SUBST(OMALLOC_LIBS)
     
    154152 fi
    155153
    156 
    157  AM_CONDITIONAL([ENABLE_OMALLOC],[test "x$ENABLE_OMALLOC" = xyes])
    158154])
    159155
  • omalloc/configure.ac

    rc723156 rb849856  
    9595  debug,
    9696  [ --enable-debug    include backtrace stuff])
     97
     98AC_ARG_ENABLE(omalloc,
     99   [AS_HELP_STRING([--disable-omalloc], [do NOT use omalloc but xalloc])],
     100   [if test "x$enableval"  = "xyes"; then
     101     ENABLE_OMALLOC=yes
     102     AH_TEMPLATE([HAVE_OMALLOC], [define if build with OMALLOC])
     103     AC_DEFINE([HAVE_OMALLOC],[1])
     104   else
     105     ENABLE_OMALLOC=no
     106   fi],
     107   [ENABLE_OMALLOC=yes
     108     AH_TEMPLATE([HAVE_OMALLOC], [define if build with OMALLOC])
     109     AC_DEFINE([HAVE_OMALLOC],[1])
     110   ])
    97111dnl lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
    98112dnl compiler/make  config
  • omalloc/omAllocFunc.c

    rc723156 rb849856  
    77 *  Created: 11/99
    88 *******************************************************************/
     9#include "omalloc/omConfig.h"
    910
     11#ifdef HAVE_OMALLOC
    1012#define malloc      omMallocFunc
    1113#define calloc      omCallocFunc
     
    2022#define OMALLOC_FUNC
    2123#include <omalloc/omalloc.c>
     24#endif
  • omalloc/omAllocSystem.c

    rc723156 rb849856  
    1313
    1414#include "omConfig.h"
     15
     16#ifdef HAVE_OMALLOC
    1517#include "omDefaultConfig.h"
    1618#include "omMalloc.h"
     
    364366}
    365367
     368#endif /*HAVE_OMALLOC*/
    366369#endif /* OM_ALLOC_SYSTEM_C */
  • omalloc/omBin.c

    rc723156 rb849856  
    88#include "omalloc.h"
    99/* this should go away */
     10
     11#ifdef HAVE_OMALLOC
    1012
    1113#ifdef OM_INTERNAL_DEBUG
     
    796798  return used;
    797799}
     800#endif
  • omalloc/omBinPage.c

    rc723156 rb849856  
    77#include <limits.h>
    88#include "omalloc.h"
     9
     10#ifdef HAVE_OMALLOC
    911#include "omDefaultConfig.h"
    1012
     
    611613
    612614#endif /* ! OM_NDEBUG */
     615#endif /* HAVE_OMALLOC*/
  • omalloc/omDebugTrack.c

    rc723156 rb849856  
    88#include <string.h>
    99#include "omConfig.h"
     10
     11#ifdef HAVE_OMALLOC
    1012#include "omDerivedConfig.h"
    1113
     
    767769}
    768770#endif /*!OM_NDEBUG*/
     771#endif
  • omalloc/omError.c

    rc723156 rb849856  
    88#include <stdarg.h>
    99#include "omalloc.h"
     10
     11#ifdef HAVE_OMALLOC
    1012
    1113omError_t om_ErrorStatus = omError_NoError;
     
    135137extern void omErrorBreak()
    136138{}
     139#endif
  • omalloc/omGetBackTrace.c

    rc723156 rb849856  
    55 *  Created: 11/99
    66 *******************************************************************/
     7#include "omalloc/omConfig.h"
     8
     9#ifdef HAVE_OMALLOC
    710#ifndef OM_NDEBUG
    811
     
    7982
    8083#endif /* ! OM_NDEBUG */
     84#endif
  • omalloc/omList.c

    rc723156 rb849856  
    66 *******************************************************************/
    77#include "omConfig.h"
     8
     9#ifdef HAVE_OMALLOC
    810
    911#ifndef NULL
     
    258260}
    259261#endif
     262#endif
  • omalloc/omOpts.c

    rc723156 rb849856  
    88#include "omalloc.h"
    99#include "omDefaultConfig.h"
     10
     11#ifdef HAVE_OMALLOC
    1012
    1113omOpts_t om_Opts =
     
    2325  OM_DEFAULT_ERROR_HOOK
    2426};
     27#endif
  • omalloc/omStats.c

    rc723156 rb849856  
    77#include <unistd.h>
    88#include "omConfig.h"
     9
     10#ifdef HAVE_OMALLOC
    911#include "omDefaultConfig.h"
    1012#include "omMalloc.h"
    1113#include "omalloc.h"
     14
    1215
    1316omInfo_t om_Info = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     
    144147  fprintf(fd, "Pages:           %8ld   %8ld\n", om_Info.UsedPages, om_Info.AvailPages);
    145148}
     149#else
     150#include "omalloc/xalloc.h"
     151int om_sing_opt_show_mem; /* dummy */
     152struct omInfo_s om_Info; /* dummy */
     153struct omOpts_s om_Opts; /* dummy */
     154#endif
  • omalloc/om_Alloc.c

    rc723156 rb849856  
    99
    1010#include "omalloc.h"
     11
     12#ifdef HAVE_OMALLOC
    1113/*******************************************************************
    1214 *
     
    262264  }
    263265}
     266#endif
    264267#endif /* OM_ALLOC_C */
  • omalloc/omalloc.h

    rc723156 rb849856  
    1111#include <stdio.h>
    1212#include <string.h>
     13
     14#include "omalloc/omConfig.h"
     15#ifndef HAVE_OMALLOC
     16#include "omalloc/xalloc.h"
     17#else
    1318
    1419#ifdef __cplusplus
     
    2631#endif
    2732
    28 #include "omalloc/omConfig.h"
    2933
    3034#if defined(OM_NDEBUG) && !defined(OM_ALLOC_INTERNAL)
     
    6266#endif
    6367
     68#endif /* HAVE_OMALLOC */
    6469#endif /* OM_ALLOC_H */
  • omalloc/omallocClass.cc

    rc723156 rb849856  
    1111#include <stdlib.h>
    1212#include "omalloc/omallocClass.h"
    13 
    1413// The C++ standard has ratified a change to the new operator.
    1514//
Note: See TracChangeset for help on using the changeset viewer.