Changeset 15fbfe0 in git


Ignore:
Timestamp:
Nov 23, 2018, 9:57:32 AM (5 years ago)
Author:
Karim Abou Zeid <karim23697@…>
Branches:
(u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
Children:
b95a5fd690d6e706af819dfdf1070a990219bf41
Parents:
6b0b41353343d43decc1e6b69445b44cca8cd850352a92c88d03b3b9cf5dcabdeb7619670ccc7228
Message:
Merge branch 'spielwiese' into rightGB
Files:
3 added
18 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/freegb.lib

    r6b0b413 r15fbfe0  
    2626lieBracket(a,b[, N]);            Lie bracket ab-ba of two letterplace polynomials
    2727letplaceGBasis(I);               two-sided Groebner basis of a letterplace ideal I
    28 lpNF(f,I);                       two-sided normal form of f with respect to ideal I
    2928lpDivision(f,I);                 two-sided division with remainder
    3029lpGBPres2Poly(L,I);              reconstructs a polynomial from the output of lpDivision
     
    27702769// TODO Oct 18: replace by legacy call to the kernel function
    27712770proc lpNF(poly p, ideal G)
    2772 "USAGE: lpNF(p,G); poly p, ideal G
     2771"USAGE: lpNF(p,G); poly p, ideal G (deprecated in favor of reduce(). will be removed soon)
    27732772RETURN: poly
    27742773PURPOSE: computation of the normal form of p with respect to G
     
    35763575  {
    35773576    p = iv2lp(L[i]);
    3578     G[(ncols(G) + 1)] = p;
     3577    G[(size(G) + 1)] = p;
    35793578  }
    35803579  return(G);
  • Singular/table.h

    r6b0b413 r15fbfe0  
    725725,{D(jjRANK2),     RANK_CMD,       INT_CMD,        MATRIX_CMD, INT_CMD, ALLOW_NC |NO_RING}
    726726,{D(jjREAD2),     READ_CMD,       STRING_CMD,     LINK_CMD,   STRING_CMD, ALLOW_NC |ALLOW_RING}
    727 ,{D(jjREDUCE_P),  REDUCE_CMD,     POLY_CMD,       POLY_CMD,   IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}
     727,{D(jjREDUCE_P),  REDUCE_CMD,     POLY_CMD,       POLY_CMD,   IDEAL_CMD, ALLOW_NC |ALLOW_RING}
    728728,{D(jjREDUCE_P),  REDUCE_CMD,     VECTOR_CMD,     VECTOR_CMD, IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}
    729729,{D(jjREDUCE_P),  REDUCE_CMD,     VECTOR_CMD,     VECTOR_CMD, MODUL_CMD, ALLOW_PLURAL |ALLOW_RING}
    730 ,{D(jjREDUCE_ID), REDUCE_CMD,     IDEAL_CMD,      IDEAL_CMD,  IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}
     730,{D(jjREDUCE_ID), REDUCE_CMD,     IDEAL_CMD,      IDEAL_CMD,  IDEAL_CMD, ALLOW_NC |ALLOW_RING}
    731731,{D(jjREDUCE_ID), REDUCE_CMD,     MODUL_CMD,      MODUL_CMD,  IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}
    732732,{D(jjREDUCE_ID), REDUCE_CMD,     MODUL_CMD,      MODUL_CMD,  MODUL_CMD, ALLOW_PLURAL |ALLOW_RING}
     
    937937,{D(jjCALL2ARG),  CNUMBER_CMD,     CNUMBER_CMD,         2      , ALLOW_NC |ALLOW_RING}
    938938,{D(jjOPTION_PL), OPTION_CMD,      STRING_CMD/*or set by p*/,-1, ALLOW_NC |ALLOW_RING}
    939 ,{D(jjCALL2ARG),  REDUCE_CMD,      IDEAL_CMD/*or set by p*/,  2, ALLOW_PLURAL |ALLOW_RING}
     939,{D(jjCALL2ARG),  REDUCE_CMD,      IDEAL_CMD/*or set by p*/,  2, ALLOW_NC |ALLOW_RING}
    940940,{D(jjCALL3ARG),  REDUCE_CMD,      IDEAL_CMD/*or set by p*/,  3, ALLOW_PLURAL |ALLOW_RING}
    941941,{D(jjREDUCE4),   REDUCE_CMD,      IDEAL_CMD/*or set by p*/,  4, ALLOW_PLURAL |ALLOW_RING}
  • Tst/Manual/lpMonomialBasis.res.gz.uu

    r6b0b413 r15fbfe0  
    11begin 644 lpMonomialBasis.res.gz
    2 M'XL("&3JV5L"`VQP36]N;VUI86Q"87-I<RYR97,`;5-;;X(P%'[G5YR8/12#
    3 MAH+7$/M@EBP2MP?U;5E,-^K2#(%`E\&_7VFI5?$%3L]WSG=ITOWA>?,&`)C`
    4 M=K.&@:C$..6?@PAD=>09%\B-G/8/A$!:O.99?N8T7=.*5^.,_8TK086S[VB"
    5 MCN94T(2?-=,%#`F4//N&$E;@>ZCV&M=+"HM/""3L!#L)G^D/VS(A6%FD](OM
    6 MY!J:NQ%43"B*G=V:$N`)HRG$<J\>-L,:1B"_P\;.S`CDA>!YADJ6[->2R!X/
    7 ME*>N'9T3190RH91?5%`47TTLY$3DQ._X8Z7D1DI,-@+=4$?=;&L)A`:X@Q0X
    8 ML6`/E@-&==F[?11XV%/1D>]*?T?MJ):%=-*H0BO+8M)V&L.&_4=L?H\-:ZZ.
    9 MJ>/1$E,C,3,2\UL)W)<(I>'8<*O`QNNU6^M7\VHEJW51N[D@'#S2\ZU>EZ6Y
    10 MS:+Y.^[&YF@["Y-L:4)CW_K&V!K'@;6+0^L73VPB/+7F\>S>O7P;[8-K']-O
    11 .A;`;/3G_0,XS[IL#````
     2M'XL(")E5]%L"`VQP36]N;VUI86Q"87-I<RYR97,`G9-?:X,P%,7?_127L8=8
     3M;#%J_R'-0QF,2K>'MF]EE&RF(\RJ:,;TVR\FVKC:I[WHS3TWYW<2R/[PM'D%
     4M`$Q@NUG#@RC%).'O#R'(ZL13+I`=6LT?"($D?\G2[,)ILJ8E+R<I^YF4@@IK
     5MW]IXK<TYIS&_:*>KZ!,H>/H)!:S`=5#EU+83YT8/",3L##LI7^@7VS(A6)$G
     6M](/MY#8TMT,HF5`6.[-K2H#'C"80R7W5J!Y5,`;Y'=5F9D8@RP7/4E2P>+^6
     7M1F9YH#RQS>B<**.$"45^5@=%46]B(2="*SKBMY7"C15,-CS=4$O=;&HI^)UP
     8M(RDQ,.)`E@,==3FX?>0YV%%'1ZXM\YUTHDH6,DFM"DV61=!TZLX-N_?<W($;
     9MUEZM4^NC$=,.,>L0\[\(/$3X,G#42]K+VJ755]9QE*\FJ7+6WM65UN-Y]WBN
     10MX?WG+*?CP@1=FJ#8-4DQ-E&Q9[)BWX3%P6U:^1::!]8\GN\283M\M'X!]54A
     11%VXL#````
    1212`
    1313end
  • Tst/Manual/lpMonomialBasis.stat

    r6b0b413 r15fbfe0  
    1 1 >> tst_memory_0 :: 1541007972:4113, 64 bit:4.1.1:x86_64-Darwin:161-029.eduroam.rwth-aachen.de:698936
    2 1 >> tst_memory_1 :: 1541007972:4113, 64 bit:4.1.1:x86_64-Darwin:161-029.eduroam.rwth-aachen.de:2097168
    3 1 >> tst_memory_2 :: 1541007972:4113, 64 bit:4.1.1:x86_64-Darwin:161-029.eduroam.rwth-aachen.de:2121872
    4 1 >> tst_timer_1 :: 1541007972:4113, 64 bit:4.1.1:x86_64-Darwin:161-029.eduroam.rwth-aachen.de:156
     11 >> tst_memory_0 :: 1542739353:4113, 64 bit:4.1.1:x86_64-Darwin:Karims-MacBook-Pro.local:720208
     21 >> tst_memory_1 :: 1542739353:4113, 64 bit:4.1.1:x86_64-Darwin:Karims-MacBook-Pro.local:2097168
     31 >> tst_memory_2 :: 1542739353:4113, 64 bit:4.1.1:x86_64-Darwin:Karims-MacBook-Pro.local:2121872
     41 >> tst_timer_1 :: 1542739353:4113, 64 bit:4.1.1:x86_64-Darwin:Karims-MacBook-Pro.local:90
  • Tst/Manual/m.lst

    r6b0b413 r15fbfe0  
    162162leadexp
    163163leadmonom
     164letterplace_reduce
    164165Loading_a_library
    165166map_declarations
  • kernel/GBEngine/kInline.h

    r6b0b413 r15fbfe0  
    3131#include "kernel/polys.h"
    3232
     33#ifdef HAVE_SHIFTBBA
     34#include "polys/shiftop.h"
     35#endif
     36
    3337
    3438#define HAVE_TAIL_BIN
     
    125129  {
    126130    assume(r == tailRing);
    127     p_Test(p_in, r);
     131#ifdef HAVE_SHIFTBBA
     132    if (r->isLPring)
     133    {
     134      shift = p_mFirstVblock(p_in, r);
     135      if (!shift) p_Test(p_in, r);
     136    }
     137    else
     138#endif
     139    {
     140      p_Test(p_in, r);
     141    }
    128142    t_p = p_in;
    129143  }
    130144  else
    131145  {
    132     p_Test(p_in, currRing);
     146#ifdef HAVE_SHIFTBBA
     147    if (currRing->isLPring)
     148    {
     149      shift = p_mFirstVblock(p_in, currRing);
     150      if (!shift) p_Test(p_in, currRing);
     151    }
     152    else
     153#endif
     154    {
     155      p_Test(p_in, currRing);
     156    }
    133157    p = p_in;
    134158  }
     
    147171  {
    148172    assume(c_r == currRing && t_r == tailRing);
    149     p_Test(p_in, currRing);
     173#ifdef HAVE_SHIFTBBA
     174    if (c_r->isLPring)
     175    {
     176      shift = p_mFirstVblock(p_in, c_r);
     177      if (!shift) p_Test(p_in, currRing);
     178    }
     179    else
     180#endif
     181    {
     182      p_Test(p_in, currRing);
     183    }
    150184    p = p_in;
    151185    pLength=::pLength(p_in);
  • kernel/GBEngine/kspoly.cc

    r6b0b413 r15fbfe0  
    2121#endif
    2222#ifdef HAVE_SHIFTBBA
    23 #include "kernel/GBEngine/shiftgb.h"
    2423#include "polys/shiftop.h"
    2524#endif
  • kernel/GBEngine/kstd1.cc

    r6b0b413 r15fbfe0  
    28542854
    28552855  if (rHasLocalOrMixedOrdering(currRing))
     2856  {
     2857#ifdef HAVE_SHIFTBBA
     2858    if (currRing->isLPring)
     2859    {
     2860      WerrorS("No local ordering possible for shift algebra");
     2861      return(NULL);
     2862    }
     2863#endif
    28562864    res=kNF1(F,Q,pp,strat,lazyReduce);
     2865  }
    28572866  else
    28582867    res=kNF2(F,Q,pp,strat,lazyReduce);
     
    29492958
    29502959  if (rHasLocalOrMixedOrdering(currRing))
     2960  {
     2961#ifdef HAVE_SHIFTBBA
     2962    if (currRing->isLPring)
     2963    {
     2964      WerrorS("No local ordering possible for shift algebra");
     2965      return(NULL);
     2966    }
     2967#endif
    29512968    res=kNF1(F,Q,pp,strat,lazyReduce);
     2969  }
    29522970  else
    29532971    res=kNF2(F,Q,pp,strat,lazyReduce);
  • kernel/GBEngine/kstd2.cc

    r6b0b413 r15fbfe0  
    35223522  initBuchMoraCrit(strat);
    35233523  strat->initEcart = initEcartBBA;
    3524   strat->enterS = enterSBba;
     3524#ifdef HAVE_SHIFTBBA
     3525  if (rIsLPRing(currRing))
     3526  {
     3527    strat->enterS = enterSBbaShift;
     3528  }
     3529  else
     3530#endif
     3531  {
     3532    strat->enterS = enterSBba;
     3533  }
    35253534#ifndef NO_BUCKETS
    35263535  strat->use_buckets = (!TEST_OPT_NOT_BUCKETS) && (!rIsPluralRing(currRing));
     
    35643573  omfree(strat->S_2_R);
    35653574  omfree(strat->fromQ);
     3575#ifdef HAVE_SHIFTBBA
     3576  // only LM of elements in S is shifted
     3577  // necessary to prevent deleting the tail multiple times
     3578  if (rIsLPRing(currRing))
     3579  {
     3580    for (int j = 0; j < IDELEMS(strat->Shdl); j++)
     3581    {
     3582      if (strat->Shdl->m[j]!=NULL && pmFirstVblock(strat->Shdl->m[j]) > 1)
     3583      {
     3584        // otherwise the tail would be freed multiple times
     3585        pNext(strat->Shdl->m[j]) = NULL;
     3586      }
     3587    }
     3588  }
     3589#endif
    35663590  idDelete(&strat->Shdl);
    35673591  SI_RESTORE_OPT1(save1);
     
    36653689  initBuchMoraCrit(strat);
    36663690  strat->initEcart = initEcartBBA;
    3667   strat->enterS = enterSBba;
     3691#ifdef HAVE_SHIFTBBA
     3692  if (rIsLPRing(currRing))
     3693  {
     3694    strat->enterS = enterSBbaShift;
     3695  }
     3696  else
     3697#endif
     3698  {
     3699    strat->enterS = enterSBba;
     3700  }
    36683701  /*- set S -*/
    36693702  strat->sl = -1;
     
    37093742  omfree(strat->S_2_R);
    37103743  omfree(strat->fromQ);
     3744#ifdef HAVE_SHIFTBBA
     3745  // only LM of elements in S is shifted
     3746  // necessary to prevent deleting the tail multiple times
     3747  if (rIsLPRing(currRing))
     3748  {
     3749    for (int j = 0; j < IDELEMS(strat->Shdl); j++)
     3750    {
     3751      if (strat->Shdl->m[j]!=NULL && pmFirstVblock(strat->Shdl->m[j]) > 1)
     3752      {
     3753        // otherwise the tail would be freed multiple times
     3754        pNext(strat->Shdl->m[j]) = NULL;
     3755      }
     3756    }
     3757  }
     3758#endif
    37113759  idDelete(&strat->Shdl);
    37123760  SI_RESTORE_OPT1(save1);
  • kernel/GBEngine/kutil.cc

    r6b0b413 r15fbfe0  
    93659365  strat->sl++;
    93669366}
     9367
     9368#ifdef HAVE_SHIFTBBA
     9369void enterSBbaShift (LObject &p,int atS,kStrategy strat, int atR)
     9370{
     9371  int toInsert = itoInsert(p.p, strat->tailRing);
     9372  for (int i = toInsert; i > 0; i--)
     9373  {
     9374    LObject qq;
     9375    qq.p = pLPCopyAndShiftLM(p.p, i); // don't use Set() because it'll test the poly order
     9376    qq.shift = i;
     9377    strat->initEcart(&qq); // initEcartBBA sets length, pLength, FDeg and ecart
     9378    enterSBba(qq, atS, strat, -1);
     9379  }
     9380  enterSBba(p, atS, strat, atR);
     9381}
     9382#endif
    93679383
    93689384/*2
  • kernel/GBEngine/kutil.h

    r6b0b413 r15fbfe0  
    424424void enterL (LSet *set,int *length, int *LSetmax, LObject p,int at);
    425425void enterSBba (LObject &p,int atS,kStrategy strat, int atR = -1);
     426void enterSBbaShift (LObject &p,int atS,kStrategy strat, int atR = -1);
    426427void enterSSba (LObject &p,int atS,kStrategy strat, int atR = -1);
    427428void initEcartPairBba (LObject* Lp,poly f,poly g,int ecartF,int ecartG);
  • kernel/GBEngine/shiftgb.cc

    r6b0b413 r15fbfe0  
    6464}
    6565
    66 // splits a frame (e.g. x(1)*y(5)) m1 into m1 and m2 (e.g. m1=x(1) and m2=y(1))
    67 // according to p which is inside the frame
    68 void k_SplitFrame(poly &m1, poly &m2, int at, const ring r) {
    69   int lV = r->isLPring;
    70 
    71   number m1Coeff = pGetCoeff(m1);
    72 
    73   int hole = lV * at;
    74   m2 = p_GetExp_k_n(m1, 1, hole, r);
    75   m1 = p_GetExp_k_n(m1, hole, r->N, r);
    76 
    77   p_mLPunshift(m2, r);
    78   p_SetCoeff(m1, m1Coeff, r);
    79 
    80   assume(p_FirstVblock(m1,r) <= 1);
    81   assume(p_FirstVblock(m2,r) <= 1);
    82 }
    83 
    8466#endif
  • kernel/GBEngine/shiftgb.h

    r6b0b413 r15fbfe0  
    1717int itoInsert(poly p, const ring r);
    1818
    19 void k_SplitFrame(poly &m1, poly &m2, int at, const ring r);
    2019#endif
    2120#endif
  • libpolys/polys/kbuckets.cc

    r6b0b413 r15fbfe0  
    1111#include "polys/monomials/ring.h"
    1212#include "polys/kbuckets.h"
     13
     14#ifdef HAVE_SHIFTBBA
     15#include "polys/shiftop.h"
     16#endif
    1317
    1418#ifdef HAVE_COEF_BUCKETS
     
    11401144
    11411145  assume((unsigned)l1==pLength(a1));
     1146
     1147#ifdef HAVE_SHIFTBBA
     1148  poly lmRight;
     1149  if (r->isLPring) {
     1150    int firstBlock = p_mFirstVblock(p1, r);
     1151    k_SplitFrame(lm, lmRight, firstBlock, r);
     1152  }
     1153#endif
    11421154#if 0
    11431155  BOOLEAN backuped=FALSE;
     
    11601172#endif
    11611173
    1162   kBucket_Minus_m_Mult_p(bucket, lm, a1, &l1, spNoether);
     1174#ifdef HAVE_SHIFTBBA
     1175  if (r->isLPring)
     1176  {
     1177    kBucket_Minus_m_Mult_p(bucket, lm, r->p_Procs->pp_Mult_mm(a1, lmRight, r), &l1, spNoether);
     1178  }
     1179  else
     1180#endif
     1181  {
     1182    kBucket_Minus_m_Mult_p(bucket, lm, a1, &l1, spNoether);
     1183  }
    11631184
    11641185#if 0
     
    11681189
    11691190  p_LmDelete(&lm, r);
     1191#ifdef HAVE_SHIFTBBA
     1192  if (r->isLPring)
     1193  {
     1194    p_LmDelete(&lmRight, r);
     1195  }
     1196#endif
    11701197  if (reset_vec) p_SetCompP(a1, 0, r);
    11711198  kbTest(bucket);
  • libpolys/polys/shiftop.cc

    r6b0b413 r15fbfe0  
    579579  }
    580580  return StringEndS();
     581}
     582
     583// splits a frame (e.g. x(1)*y(5)) m1 into m1 and m2 (e.g. m1=x(1) and m2=y(1))
     584// according to p which is inside the frame
     585void k_SplitFrame(poly &m1, poly &m2, int at, const ring r)
     586{
     587  int lV = r->isLPring;
     588
     589  number m1Coeff = pGetCoeff(m1);
     590
     591  int hole = lV * at;
     592  m2 = p_GetExp_k_n(m1, 1, hole, r);
     593  m1 = p_GetExp_k_n(m1, hole, r->N, r);
     594
     595  p_mLPunshift(m2, r);
     596  p_SetCoeff(m1, m1Coeff, r);
     597
     598  assume(p_FirstVblock(m1,r) <= 1);
     599  assume(p_FirstVblock(m2,r) <= 1);
    581600}
    582601
  • libpolys/polys/shiftop.h

    r6b0b413 r15fbfe0  
    4141char* LPExpVString(int *expV, ring ri);
    4242
     43void k_SplitFrame(poly &m1, poly &m2, int at, const ring r);
     44#define kSplitFrame(m1, m2, at) k_SplitFrame(m1, m2, at, currRing);
     45
    4346int id_IsInV(ideal I, const ring r);
    4447int p_IsInV(poly p, const ring r);
Note: See TracChangeset for help on using the changeset viewer.