Changeset 15fbfe0 in git
- Timestamp:
- Nov 23, 2018, 9:57:32 AM (5 years ago)
- Branches:
- (u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
- Children:
- b95a5fd690d6e706af819dfdf1070a990219bf41
- Parents:
- 6b0b41353343d43decc1e6b69445b44cca8cd850352a92c88d03b3b9cf5dcabdeb7619670ccc7228
- Files:
-
- 3 added
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/freegb.lib
r6b0b413 r15fbfe0 26 26 lieBracket(a,b[, N]); Lie bracket ab-ba of two letterplace polynomials 27 27 letplaceGBasis(I); two-sided Groebner basis of a letterplace ideal I 28 lpNF(f,I); two-sided normal form of f with respect to ideal I29 28 lpDivision(f,I); two-sided division with remainder 30 29 lpGBPres2Poly(L,I); reconstructs a polynomial from the output of lpDivision … … 2770 2769 // TODO Oct 18: replace by legacy call to the kernel function 2771 2770 proc 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) 2773 2772 RETURN: poly 2774 2773 PURPOSE: computation of the normal form of p with respect to G … … 3576 3575 { 3577 3576 p = iv2lp(L[i]); 3578 G[( ncols(G) + 1)] = p;3577 G[(size(G) + 1)] = p; 3579 3578 } 3580 3579 return(G); -
Singular/table.h
r6b0b413 r15fbfe0 725 725 ,{D(jjRANK2), RANK_CMD, INT_CMD, MATRIX_CMD, INT_CMD, ALLOW_NC |NO_RING} 726 726 ,{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} 728 728 ,{D(jjREDUCE_P), REDUCE_CMD, VECTOR_CMD, VECTOR_CMD, IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING} 729 729 ,{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} 731 731 ,{D(jjREDUCE_ID), REDUCE_CMD, MODUL_CMD, MODUL_CMD, IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING} 732 732 ,{D(jjREDUCE_ID), REDUCE_CMD, MODUL_CMD, MODUL_CMD, MODUL_CMD, ALLOW_PLURAL |ALLOW_RING} … … 937 937 ,{D(jjCALL2ARG), CNUMBER_CMD, CNUMBER_CMD, 2 , ALLOW_NC |ALLOW_RING} 938 938 ,{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} 940 940 ,{D(jjCALL3ARG), REDUCE_CMD, IDEAL_CMD/*or set by p*/, 3, ALLOW_PLURAL |ALLOW_RING} 941 941 ,{D(jjREDUCE4), REDUCE_CMD, IDEAL_CMD/*or set by p*/, 4, ALLOW_PLURAL |ALLOW_RING} -
Tst/Manual/lpMonomialBasis.res.gz.uu
r6b0b413 r15fbfe0 1 1 begin 644 lpMonomialBasis.res.gz 2 M'XL(" &3JV5L"`VQP36]N;VUI86Q"87-I<RYR97,`;5-;;X(P%'[G5YR8/12#3 M AH+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 M CN94T(2?-=,%#`F4//N&$E;@>ZCV&M=+"HM/""3L!#L)G^D/VS(A6%FD](OM6 M Y!J:NQ%43"B*G=V:$N`)HRG$<J\>-L,:1B"_P\;.S`CDA>!YADJ6[->2R!X/7 M E*>N'9T3190RH91?5%`47TTLY$3DQ._X8Z7D1DI,-@+=4$?=;&L)A`:X@Q0X8 M L6`/E@-&==F[?11XV%/1D>]*?T?MJ):%=-*H0BO+8M)V&L.&_4=L?H\-:ZZ.9 M J>/1$E,C,3,2\UL)W)<(I>'8<*O`QNNU6^M7\VHEJW51N[D@'#S2\ZU>EZ6Y10 M S:+Y.^[&YF@["Y-L:4)CW_K&V!K'@;6+0^L73VPB/+7F\>S>O7P;[8-K']-O11 .A;`;/3G_0,XS[IL#````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#```` 12 12 ` 13 13 end -
Tst/Manual/lpMonomialBasis.stat
r6b0b413 r15fbfe0 1 1 >> tst_memory_0 :: 154 1007972:4113, 64 bit:4.1.1:x86_64-Darwin:161-029.eduroam.rwth-aachen.de:6989362 1 >> tst_memory_1 :: 154 1007972:4113, 64 bit:4.1.1:x86_64-Darwin:161-029.eduroam.rwth-aachen.de:20971683 1 >> tst_memory_2 :: 154 1007972:4113, 64 bit:4.1.1:x86_64-Darwin:161-029.eduroam.rwth-aachen.de:21218724 1 >> tst_timer_1 :: 154 1007972:4113, 64 bit:4.1.1:x86_64-Darwin:161-029.eduroam.rwth-aachen.de:1561 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 -
Tst/Manual/m.lst
r6b0b413 r15fbfe0 162 162 leadexp 163 163 leadmonom 164 letterplace_reduce 164 165 Loading_a_library 165 166 map_declarations -
kernel/GBEngine/kInline.h
r6b0b413 r15fbfe0 31 31 #include "kernel/polys.h" 32 32 33 #ifdef HAVE_SHIFTBBA 34 #include "polys/shiftop.h" 35 #endif 36 33 37 34 38 #define HAVE_TAIL_BIN … … 125 129 { 126 130 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 } 128 142 t_p = p_in; 129 143 } 130 144 else 131 145 { 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 } 133 157 p = p_in; 134 158 } … … 147 171 { 148 172 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 } 150 184 p = p_in; 151 185 pLength=::pLength(p_in); -
kernel/GBEngine/kspoly.cc
r6b0b413 r15fbfe0 21 21 #endif 22 22 #ifdef HAVE_SHIFTBBA 23 #include "kernel/GBEngine/shiftgb.h"24 23 #include "polys/shiftop.h" 25 24 #endif -
kernel/GBEngine/kstd1.cc
r6b0b413 r15fbfe0 2854 2854 2855 2855 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 2856 2864 res=kNF1(F,Q,pp,strat,lazyReduce); 2865 } 2857 2866 else 2858 2867 res=kNF2(F,Q,pp,strat,lazyReduce); … … 2949 2958 2950 2959 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 2951 2968 res=kNF1(F,Q,pp,strat,lazyReduce); 2969 } 2952 2970 else 2953 2971 res=kNF2(F,Q,pp,strat,lazyReduce); -
kernel/GBEngine/kstd2.cc
r6b0b413 r15fbfe0 3522 3522 initBuchMoraCrit(strat); 3523 3523 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 } 3525 3534 #ifndef NO_BUCKETS 3526 3535 strat->use_buckets = (!TEST_OPT_NOT_BUCKETS) && (!rIsPluralRing(currRing)); … … 3564 3573 omfree(strat->S_2_R); 3565 3574 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 3566 3590 idDelete(&strat->Shdl); 3567 3591 SI_RESTORE_OPT1(save1); … … 3665 3689 initBuchMoraCrit(strat); 3666 3690 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 } 3668 3701 /*- set S -*/ 3669 3702 strat->sl = -1; … … 3709 3742 omfree(strat->S_2_R); 3710 3743 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 3711 3759 idDelete(&strat->Shdl); 3712 3760 SI_RESTORE_OPT1(save1); -
kernel/GBEngine/kutil.cc
r6b0b413 r15fbfe0 9365 9365 strat->sl++; 9366 9366 } 9367 9368 #ifdef HAVE_SHIFTBBA 9369 void 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 9367 9383 9368 9384 /*2 -
kernel/GBEngine/kutil.h
r6b0b413 r15fbfe0 424 424 void enterL (LSet *set,int *length, int *LSetmax, LObject p,int at); 425 425 void enterSBba (LObject &p,int atS,kStrategy strat, int atR = -1); 426 void enterSBbaShift (LObject &p,int atS,kStrategy strat, int atR = -1); 426 427 void enterSSba (LObject &p,int atS,kStrategy strat, int atR = -1); 427 428 void initEcartPairBba (LObject* Lp,poly f,poly g,int ecartF,int ecartG); -
kernel/GBEngine/shiftgb.cc
r6b0b413 r15fbfe0 64 64 } 65 65 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 frame68 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 84 66 #endif -
kernel/GBEngine/shiftgb.h
r6b0b413 r15fbfe0 17 17 int itoInsert(poly p, const ring r); 18 18 19 void k_SplitFrame(poly &m1, poly &m2, int at, const ring r);20 19 #endif 21 20 #endif -
libpolys/polys/kbuckets.cc
r6b0b413 r15fbfe0 11 11 #include "polys/monomials/ring.h" 12 12 #include "polys/kbuckets.h" 13 14 #ifdef HAVE_SHIFTBBA 15 #include "polys/shiftop.h" 16 #endif 13 17 14 18 #ifdef HAVE_COEF_BUCKETS … … 1140 1144 1141 1145 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 1142 1154 #if 0 1143 1155 BOOLEAN backuped=FALSE; … … 1160 1172 #endif 1161 1173 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 } 1163 1184 1164 1185 #if 0 … … 1168 1189 1169 1190 p_LmDelete(&lm, r); 1191 #ifdef HAVE_SHIFTBBA 1192 if (r->isLPring) 1193 { 1194 p_LmDelete(&lmRight, r); 1195 } 1196 #endif 1170 1197 if (reset_vec) p_SetCompP(a1, 0, r); 1171 1198 kbTest(bucket); -
libpolys/polys/shiftop.cc
r6b0b413 r15fbfe0 579 579 } 580 580 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 585 void 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); 581 600 } 582 601 -
libpolys/polys/shiftop.h
r6b0b413 r15fbfe0 41 41 char* LPExpVString(int *expV, ring ri); 42 42 43 void k_SplitFrame(poly &m1, poly &m2, int at, const ring r); 44 #define kSplitFrame(m1, m2, at) k_SplitFrame(m1, m2, at, currRing); 45 43 46 int id_IsInV(ideal I, const ring r); 44 47 int p_IsInV(poly p, const ring r);
Note: See TracChangeset
for help on using the changeset viewer.