Changeset 24d587 in git
- Timestamp:
- Dec 20, 2000, 12:15:50 PM (22 years ago)
- Branches:
- (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
- Children:
- c22d845dacb42bdd0a798a7eb2606d8e9f6f6095
- Parents:
- bad9f3c06133001d0c55551cbf4faf2ca805670e
- Location:
- Singular
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/surf.lib
rbad9f3 r24d587 1 // $Id: surf.lib,v 1.1 3 2000-12-19 15:05:43 anneExp $1 // $Id: surf.lib,v 1.14 2000-12-20 11:15:50 obachman Exp $ 2 2 // 3 3 // author : Hans Schoenemann 4 4 // 5 5 /////////////////////////////////////////////////////////////////////////////// 6 version="$Id: surf.lib,v 1.1 3 2000-12-19 15:05:43 anneExp $";6 version="$Id: surf.lib,v 1.14 2000-12-20 11:15:50 obachman Exp $"; 7 7 category="Visualization"; 8 8 info=" … … 46 46 RETURN: nothing 47 47 NOTE: requires the external program 'surf' to be installed 48 @*If the (string) variable extra_surf_opts is defined, the the value of 49 this 48 50 EXAMPLE: example plot; shows an example 49 51 " -
Singular/Makefile.in
rbad9f3 r24d587 119 119 120 120 # normal C source files 121 CSOURCES=weight0.c fegetopt.c fereadl.c page.c feOpenWinntUrl.c dError.c mmstd.c 121 CSOURCES=weight0.c fegetopt.c fereadl.c page.c feOpenWinntUrl.c dError.c mmstd.c 122 122 123 123 # C++ sources which are used if part of the kernel are dynamically linked -
Singular/kInline.cc
rbad9f3 r24d587 7 7 * Author: obachman (Olaf Bachmann) 8 8 * Created: 8/00 9 * Version: $Id: kInline.cc,v 1.2 0 2000-12-19 18:31:40obachman Exp $9 * Version: $Id: kInline.cc,v 1.21 2000-12-20 11:15:42 obachman Exp $ 10 10 *******************************************************************/ 11 11 #ifndef KINLINE_CC … … 20 20 21 21 #define HAVE_TAIL_BIN 22 // Hmm ... this I don't understand: 23 // with HAVE_LM_BIN, cyclic_7 is appr. 10% slower (on Intel) 22 // This doesn't really work, fixme, if necessary 24 23 // #define HAVE_LM_BIN 25 24 26 KINLINE skStrategy::skStrategy()27 {28 memset(this, 0, sizeof(skStrategy));29 tailRing = currRing;30 P.tailRing = currRing;31 tl = -1;32 sl = -1;33 #ifdef HAVE_LM_BIN34 lmBin = omGetStickyBinOfBin(currRing->PolyBin);35 #endif36 #ifdef HAVE_TAIL_BIN37 tailBin = omGetStickyBinOfBin(currRing->PolyBin);38 #endif39 pOrigFDeg = pFDeg;40 pOrigLDeg = pLDeg;41 }42 43 KINLINE skStrategy::~skStrategy()44 {45 if (lmBin != NULL)46 omMergeStickyBinIntoBin(lmBin, currRing->PolyBin);47 if (tailBin != NULL)48 omMergeStickyBinIntoBin(tailBin,49 (tailRing != NULL ? tailRing->PolyBin:50 currRing->PolyBin));51 if (currRing != tailRing)52 rKillModifiedRing(tailRing);53 pLDeg = pOrigLDeg;54 pFDeg = pOrigFDeg;55 }56 25 57 26 KINLINE TObject* skStrategy::S_2_T(int i) … … 388 357 KINLINE long sTObject::pLDeg() 389 358 { 390 return ::pLDeg(GetLmTailRing(), &length, tailRing);359 return tailRing->pLDeg(GetLmTailRing(), &length, tailRing); 391 360 } 392 361 KINLINE long sTObject::SetDegStuffReturnLDeg() … … 698 667 int i = kBucketCanonicalize(bucket); 699 668 pNext(tp) = bucket->buckets[i]; 700 long ldeg = ::pLDeg(tp, &length, tailRing);669 long ldeg = tailRing->pLDeg(tp, &length, tailRing); 701 670 pNext(tp) = NULL; 702 671 return ldeg; 703 672 } 704 673 else 705 return ::pLDeg(tp, &length, tailRing);674 return tailRing->pLDeg(tp, &length, tailRing); 706 675 } 707 676 KINLINE long sLObject::pLDeg(BOOLEAN deg_last) … … 713 682 #ifdef HAVE_ASSUME 714 683 long fdeg; 715 fdeg = ::pLDeg(GetLmTailRing(), &length, tailRing);716 assume (pLength == length && fdeg == ::pFDeg(last, tailRing));684 fdeg = tailRing->pLDeg(GetLmTailRing(), &length, tailRing); 685 assume (pLength == length && fdeg == tailRing->pFDeg(last, tailRing)); 717 686 return fdeg; 718 687 #else 719 688 length = pLength; 720 return ::pFDeg(last, tailRing);689 return tailRing->pFDeg(last, tailRing); 721 690 #endif 722 691 } -
Singular/kstd1.cc
rbad9f3 r24d587 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: kstd1.cc,v 1.7 4 2000-12-18 17:26:39obachman Exp $ */4 /* $Id: kstd1.cc,v 1.75 2000-12-20 11:15:43 obachman Exp $ */ 5 5 /* 6 6 * ABSTRACT: … … 11 11 12 12 // define if tailrings should be used 13 //#define HAVE_TAIL_RING13 #define HAVE_TAIL_RING 14 14 15 15 #include "mod2.h" … … 90 90 static BOOLEAN kMoraUseBucket(kStrategy strat); 91 91 92 static void kOptimizeLDeg(pFDegProc fdeg, pLDegProc ldeg, kStrategy strat) 93 { 94 if (fdeg == pDeg) 95 { 96 if (ldeg == pLDeg1) 97 pLDeg = pLDeg1_Deg; 98 if (ldeg == pLDeg1c) 99 pLDeg = pLDeg1c_Deg; 100 } 101 else if (fdeg == pTotaldegree) 102 { 103 if (ldeg == pLDeg1) 104 pLDeg = pLDeg1_Totaldegree; 105 if (ldeg == pLDeg1c) 106 pLDeg = pLDeg1c_Totaldegree; 107 } 108 92 static void kOptimizeLDeg(pLDegProc ldeg, kStrategy strat) 93 { 109 94 if (strat->ak == 0 && !rIsSyzIndexRing(currRing)) 110 95 strat->length_pLength = TRUE; 96 else 97 strat->length_pLength = FALSE; 111 98 112 99 if ((ldeg == pLDeg0c && !rIsSyzIndexRing(currRing)) || … … 227 214 228 215 // end of search: have to reduce with pi 229 if ( !K_TEST_OPT_REDTHROUGH &&ei > h->ecart)216 if (ei > h->ecart) 230 217 { 231 218 // It is not possible to reduce h with smaller ecart; … … 233 220 // if its position in L would be not the last one 234 221 strat->fromT = TRUE; 235 if ( strat->Ll >= 0) /*- L is not empty -*/222 if (!K_TEST_OPT_REDTHROUGH && strat->Ll >= 0) /*- L is not empty -*/ 236 223 { 237 224 h->SetLmCurrRing(); … … 880 867 if (TEST_OPT_WEIGHTM) 881 868 { 882 if (pFDegOld != pFDeg)883 {884 pFDeg=pFDegOld;885 int i;886 for (i =0; i<=strat->Ll; i++)887 {888 strat->L[i].SetpFDeg();889 }890 for (i=0; i<=strat->tl; i++)891 {892 strat->T[i].SetpFDeg();893 }894 }895 pLDeg=pLDegOld;896 kOptimizeLDeg(pFDeg, pLDeg, strat);869 pRestoreDegProcs(pFDegOld, pLDegOld); 870 if (strat->tailRing != currRing) 871 { 872 strat->tailRing->pFDeg = strat->pOrigFDeg_TailRing; 873 strat->tailRing->pLDeg = strat->pOrigLDeg_TailRing; 874 } 875 int i; 876 for (i =0; i<=strat->Ll; i++) 877 { 878 strat->L[i].SetpFDeg(); 879 } 880 for (i=0; i<=strat->tl; i++) 881 { 882 strat->T[i].SetpFDeg(); 883 } 897 884 if (ecartWeights) 898 885 { … … 1043 1030 kEcartWeights(F->m,IDELEMS(F)-1,ecartWeights); 1044 1031 } 1045 pFDeg=totaldegreeWecart; 1046 pLDeg=maxdegreeWecart; 1047 for(i=1; i<=pVariables; i++) 1048 Print(" %d",ecartWeights[i]); 1049 PrintLn(); 1050 mflush(); 1051 } 1052 kOptimizeLDeg(pFDeg, pLDeg, strat); 1032 1033 pSetDegProcs(totaldegreeWecart, maxdegreeWecart); 1034 if (TEST_OPT_PROT) 1035 { 1036 for(i=1; i<=pVariables; i++) 1037 Print(" %d",ecartWeights[i]); 1038 PrintLn(); 1039 mflush(); 1040 } 1041 } 1042 kOptimizeLDeg(pLDeg, strat); 1053 1043 } 1054 1044 … … 1108 1098 1109 1099 #ifdef HAVE_TAIL_RING 1110 kStratInitChangeTailRing(strat); 1100 if (strat->homog && strat->red == redFirst) 1101 kStratInitChangeTailRing(strat); 1111 1102 #endif 1112 1103 … … 1259 1250 if (TEST_OPT_WEIGHTM) 1260 1251 { 1261 pFDeg=pFDegOld; 1262 pLDeg=pLDegOld; 1252 pRestoreDegProcs(pFDegOld, pLDegOld); 1263 1253 if (ecartWeights) 1264 1254 { … … 1377 1367 if ((TEST_OPT_WEIGHTM)&&(F!=NULL)) 1378 1368 { 1379 pFDeg=pFDegOld; 1380 pLDeg=pLDegOld; 1369 pRestoreDegProcs(pFDegOld, pLDegOld); 1381 1370 if (ecartWeights) 1382 1371 { … … 1522 1511 } 1523 1512 1524 pFDegProc pOldFDeg; 1513 pFDegProc pFDegOld; 1514 pLDegProc pLDegOld; 1525 1515 intvec * kModW, * kHomW; 1526 1516 … … 1569 1559 pLexOrder=FALSE; 1570 1560 strat->kHomW=kHomW=vw; 1571 pOldFDeg = pFDeg; 1572 pFDeg = kHomModDeg; 1561 pFDegOld = pFDeg; 1562 pLDegOld = pLDeg; 1563 pSetDegProcs(kHomModDeg); 1573 1564 toReset = TRUE; 1574 1565 } … … 1594 1585 if (vw == NULL) 1595 1586 { 1596 pOldFDeg = pFDeg; 1597 pFDeg = kModDeg; 1587 pFDegOld = pFDeg; 1588 pLDegOld = pLDeg; 1589 pSetDegProcs(kModDeg); 1598 1590 toReset = TRUE; 1599 1591 } … … 1626 1618 { 1627 1619 kModW = NULL; 1628 p FDeg = pOldFDeg;1620 pRestoreDegProcs(pFDegOld, pLDegOld); 1629 1621 } 1630 1622 pLexOrder = b; … … 1686 1678 kModW = *w; 1687 1679 strat->kModW = *w; 1688 pOldFDeg = pFDeg; 1689 pFDeg = kModDeg; 1680 assume(pFDeg != NULL && pLDeg != NULL); 1681 pFDegOld = pFDeg; 1682 pLDegOld = pLDeg; 1683 pSetDegProcs(kModDeg); 1684 1690 1685 toReset = TRUE; 1691 1686 if (reduced>1) … … 1727 1722 if (toReset) 1728 1723 { 1724 pRestoreDegProcs(pFDegOld, pLDegOld); 1729 1725 kModW = NULL; 1730 pFDeg = pOldFDeg;1731 1726 } 1732 1727 pLexOrder = b; -
Singular/kstd1.h
rbad9f3 r24d587 4 4 * Computer Algebra System SINGULAR * 5 5 ****************************************/ 6 /* $Id: kstd1.h,v 1.1 6 2000-11-14 16:04:55obachman Exp $ */6 /* $Id: kstd1.h,v 1.17 2000-12-20 11:15:44 obachman Exp $ */ 7 7 /* 8 8 * ABSTRACT … … 48 48 49 49 50 extern pFDegProc pOldFDeg; 50 extern pFDegProc pFDegOld; 51 extern pLDegProc pLDegOld; 51 52 extern intvec * kModW; 52 53 -
Singular/kstd2.cc
rbad9f3 r24d587 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: kstd2.cc,v 1. 69 2000-12-19 18:31:41obachman Exp $ */4 /* $Id: kstd2.cc,v 1.70 2000-12-20 11:15:44 obachman Exp $ */ 5 5 /* 6 6 * ABSTRACT - Kernel: alg. of Buchberger … … 10 10 // define to enable tailRings 11 11 #define HAVE_TAIL_RING 12 // define if no buckets should be used 13 // #define NO_BUCKETS 12 14 13 15 #include "mod2.h" … … 475 477 kEcartWeights(F->m,IDELEMS(F)-1,ecartWeights); 476 478 } 477 pFDeg=totaldegreeWecart; 478 pLDeg=maxdegreeWecart; 479 for(i=1; i<=pVariables; i++) 480 Print(" %d",ecartWeights[i]); 481 PrintLn(); 482 mflush(); 479 pRestoreDegProcs(totaldegreeWecart, maxdegreeWecart); 480 if (TEST_OPT_PROT) 481 { 482 for(i=1; i<=pVariables; i++) 483 Print(" %d",ecartWeights[i]); 484 PrintLn(); 485 mflush(); 486 } 483 487 } 484 488 } … … 510 514 reduc = olddeg = lrmax = 0; 511 515 516 #ifndef NO_BUCKETS 512 517 if (!TEST_OPT_NOT_BUCKETS) 513 518 strat->use_buckets = 1; 519 #endif 514 520 515 521 // redtailBBa against T for inhomogenous input … … 665 671 if (TEST_OPT_WEIGHTM) 666 672 { 667 pFDeg=pFDegOld; 668 pLDeg=pLDegOld; 673 pRestoreDegProcs(pFDegOld, pLDegOld); 669 674 if (ecartWeights) 670 675 { … … 785 790 return res; 786 791 } 787 788 -
Singular/kstdfac.cc
rbad9f3 r24d587 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: kstdfac.cc,v 1.4 8 2000-12-18 13:30:36obachman Exp $ */4 /* $Id: kstdfac.cc,v 1.49 2000-12-20 11:15:44 obachman Exp $ */ 5 5 /* 6 6 * ABSTRACT - Kernel: factorizing alg. of Buchberger … … 161 161 s->initEcartPair=o->initEcartPair; 162 162 s->posInLOld=o->posInLOld; 163 s->pOldFDeg=o->pOldFDeg;164 163 s->Shdl=idCopy(o->Shdl); 165 164 s->S=s->Shdl->m; … … 758 757 if (TEST_OPT_WEIGHTM) 759 758 { 760 pFDeg=pFDegOld; 761 pLDeg=pLDegOld; 759 pRestoreDegProcs(pFDegOld, pLDegOld); 762 760 if (ecartWeights) 763 761 { … … 805 803 kModW = *w; 806 804 strat->kModW = *w; 807 pOldFDeg = pFDeg; 808 pFDeg = kModDeg; 805 pFDegOld = pFDeg; 806 pLDegOld = pLDeg; 807 pSetDegProcs(kModDeg); 809 808 toReset = TRUE; 810 809 } … … 885 884 if (toReset) 886 885 { 886 pRestoreDegProcs(pFDegOld, pLDegOld); 887 887 kModW = NULL; 888 pFDeg = pOldFDeg;889 888 } 890 889 pLexOrder = b; -
Singular/kutil.cc
rbad9f3 r24d587 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: kutil.cc,v 1.8 7 2000-12-19 18:31:41obachman Exp $ */4 /* $Id: kutil.cc,v 1.88 2000-12-20 11:15:45 obachman Exp $ */ 5 5 /* 6 6 * ABSTRACT: kernel: utils for kStd … … 518 518 } 519 519 520 static BOOLEAN sloppy_max = FALSE; 520 521 BOOLEAN kTest_T(TObject * T, ring strat_tailRing, int i, char TN) 521 522 { … … 566 567 omCheckBinAddrSize(T->max, (tailRing->PolyBin->sizeW)*SIZEOF_LONG); 567 568 #if KDEBUG > 0 568 poly test_max = p_GetMaxExpP(pNext(T->t_p), tailRing); 569 p_Setm(T->max, tailRing); 570 p_Setm(test_max, tailRing); 571 BOOLEAN equal = p_ExpVectorEqual(T->max, test_max, tailRing); 572 if (! equal) 573 return dReportError("%c[%d].max out of sync", TN, i); 574 p_LmFree(test_max, tailRing); 569 if (! sloppy_max) 570 { 571 poly test_max = p_GetMaxExpP(pNext(T->t_p), tailRing); 572 p_Setm(T->max, tailRing); 573 p_Setm(test_max, tailRing); 574 BOOLEAN equal = p_ExpVectorEqual(T->max, test_max, tailRing); 575 if (! equal) 576 return dReportError("%c[%d].max out of sync", TN, i); 577 p_LmFree(test_max, tailRing); 578 } 575 579 #endif 576 580 } … … 2698 2702 return redtail(&L, pos, strat); 2699 2703 } 2700 2701 2704 2702 2705 poly redtailBba (LObject* L, int pos, kStrategy strat, BOOLEAN withT) … … 3977 3980 { 3978 3981 int i; 3979 3982 int low = (pOrdSgn == 1 ? 1 : 0); 3983 LObject L; 3984 3985 #ifdef KDEBUG 3986 // need to set this: during tailreductions of T[i], T[i].max is out of 3987 // sync 3988 sloppy_max = TRUE; 3989 #endif 3990 3980 3991 strat->noTailReduction = FALSE; 3981 3992 if (TEST_OPT_PROT) … … 3988 3999 Print("(S:%d)",strat->sl);mflush(); 3989 4000 } 3990 if(pOrdSgn==1) 3991 { 3992 for (i=strat->sl; i>0; i--) 3993 { 3994 TObject* T_j = strat->s_2_t(i); 3995 if (T_j != NULL) 3996 { 3997 assume(strat->S[i] == T_j->p); 3998 strat->S[i] = redtailBba(T_j, i-1, strat); 3999 assume(strat->S[i] == T_j->p); 4000 if (strat->redTailChange && strat->tailRing != currRing) 4001 { 4002 if (T_j->max != NULL) p_LmFree(T_j->max, strat->tailRing); 4003 if (pNext(T_j->p) != NULL) 4004 T_j->max = p_GetMaxExpP(pNext(T_j->p), strat->tailRing); 4005 else 4006 T_j->max = NULL; 4007 } 4008 } 4001 for (i=strat->sl; i>=low; i--) 4002 { 4003 TObject* T_j = strat->s_2_t(i); 4004 if (T_j != NULL) 4005 { 4006 L = *T_j; 4007 poly p; 4008 if (pOrdSgn == 1) 4009 strat->S[i] = redtailBba(&L, i-1, strat, FALSE); 4009 4010 else 4010 strat->S[i] = redtailBba(strat->S[i],i-1,strat); 4011 4012 if (TEST_OPT_INTSTRATEGY) 4013 { 4014 //if (strat->redTailChange) 4015 pCleardenom(strat->S[i]); 4016 } 4017 if (TEST_OPT_PROT) 4018 { 4019 PrintS("-");mflush(); 4020 } 4021 } 4022 } 4023 else 4024 { 4025 for (i=strat->sl; i>=0; i--) 4026 { 4027 strat->S[i] = redtail(strat->S[i],strat->sl,strat); 4028 // Hmm .. this might also change strat->T[i] 4029 // but, we don't need it any more 4030 if (TEST_OPT_INTSTRATEGY) 4031 pCleardenom(strat->S[i]); 4032 if (TEST_OPT_PROT) 4033 PrintS("-"); 4034 } 4035 } 4011 strat->S[i] = redtail(&L, strat->sl, strat); 4012 4013 if (strat->redTailChange && strat->tailRing != currRing) 4014 { 4015 if (T_j->max != NULL) p_LmFree(T_j->max, strat->tailRing); 4016 if (pNext(T_j->p) != NULL) 4017 T_j->max = p_GetMaxExpP(pNext(T_j->p), strat->tailRing); 4018 else 4019 T_j->max = NULL; 4020 } 4021 } 4022 else 4023 { 4024 assume(currRing == strat->tailRing); 4025 if (pOrdSgn == 1) 4026 strat->S[i] = redtailBba(strat->S[i], i-1, strat); 4027 else 4028 strat->S[i] = redtail(strat->S[i], strat->sl, strat); 4029 } 4030 if (TEST_OPT_INTSTRATEGY) 4031 pCleardenom(strat->S[i]); 4032 if (TEST_OPT_PROT) 4033 PrintS("-"); 4034 } 4035 #ifdef KDEBUG 4036 sloppy_max = FALSE; 4037 #endif 4036 4038 } 4037 4039 … … 4116 4118 // Hmmm .. the condition pFDeg == pDeg 4117 4119 // might be too strong 4118 (strat->homog && pFDeg == pDeg && pOrdSgn == 1),4120 (strat->homog && pFDeg == pDeg), 4119 4121 !strat->ak, 4120 4122 expbound); 4121 4122 4123 if (new_tailRing == currRing) return TRUE; 4124 4125 strat->pOrigFDeg_TailRing = new_tailRing->pFDeg; 4126 strat->pOrigLDeg_TailRing = new_tailRing->pLDeg; 4127 4128 if (currRing->pFDeg != currRing->pFDegOrig) 4129 { 4130 new_tailRing->pFDeg = currRing->pFDeg; 4131 new_tailRing->pLDeg = currRing->pLDeg; 4132 } 4133 4123 4134 if (TEST_OPT_PROT) 4124 4135 Print("[%d:%d", (long) new_tailRing->bitmask, new_tailRing->ExpL_Size); … … 4203 4214 } 4204 4215 4216 skStrategy::skStrategy() 4217 { 4218 memset(this, 0, sizeof(skStrategy)); 4219 tailRing = currRing; 4220 P.tailRing = currRing; 4221 tl = -1; 4222 sl = -1; 4223 #ifdef HAVE_LM_BIN 4224 lmBin = omGetStickyBinOfBin(currRing->PolyBin); 4225 #endif 4226 #ifdef HAVE_TAIL_BIN 4227 tailBin = omGetStickyBinOfBin(currRing->PolyBin); 4228 #endif 4229 pOrigFDeg = pFDeg; 4230 pOrigLDeg = pLDeg; 4231 } 4232 4233 4234 skStrategy::~skStrategy() 4235 { 4236 if (lmBin != NULL) 4237 omMergeStickyBinIntoBin(lmBin, currRing->PolyBin); 4238 if (tailBin != NULL) 4239 omMergeStickyBinIntoBin(tailBin, 4240 (tailRing != NULL ? tailRing->PolyBin: 4241 currRing->PolyBin)); 4242 if (currRing != tailRing) 4243 rKillModifiedRing(tailRing); 4244 pRestoreDegProcs(pOrigFDeg, pOrigLDeg); 4245 } 4205 4246 4206 4247 #if 0 -
Singular/kutil.h
rbad9f3 r24d587 4 4 * Computer Algebra System SINGULAR * 5 5 ****************************************/ 6 /* $Id: kutil.h,v 1.5 1 2000-12-19 18:31:42obachman Exp $ */6 /* $Id: kutil.h,v 1.52 2000-12-20 11:15:46 obachman Exp $ */ 7 7 /* 8 8 * ABSTRACT: kernel: utils for kStd … … 218 218 pFDegProc pOrigFDeg; 219 219 pLDegProc pOrigLDeg; 220 pFDegProc pOldFDeg; 220 pFDegProc pOrigFDeg_TailRing; 221 pLDegProc pOrigLDeg_TailRing; 222 221 223 ideal Shdl; 222 224 ideal D; /*V(S) is in D(D)*/ … … 281 283 int* S_2_R; 282 284 283 KINLINEskStrategy();284 KINLINE~skStrategy();285 skStrategy(); 286 ~skStrategy(); 285 287 286 288 // return TObject corresponding to S[i]: assume that it exists -
Singular/numbers.cc
rbad9f3 r24d587 2 2 * Computer Algebra System SINGULAR * 3 3 *****************************************/ 4 /* $Id: numbers.cc,v 1.3 5 2000-12-20 10:54:25 pohlExp $ */4 /* $Id: numbers.cc,v 1.36 2000-12-20 11:15:46 obachman Exp $ */ 5 5 6 6 /* … … 122 122 nfSetChar(c,r->parameter); 123 123 } 124 /* -------------- long R -----------------------*/ 125 else if (rField_is_long_R(r)) 126 { 127 setGMPFloatDigits(r->ch_flags,r->ch_flags); 128 } 129 /* -------------- long C -----------------------*/ 130 else if (rField_is_long_C(r)) 131 { 132 setGMPFloatDigits(r->ch_flags,r->ch_flags); 133 } 134 #ifdef TEST 124 135 /* -------------- R -----------------------*/ 125 136 //if (c==(-1)) 126 else if (rField_is_R(r)) 127 { 128 } 129 /* -------------- long R -----------------------*/ 130 else if (rField_is_long_R(r)) 131 { 132 setGMPFloatDigits(r->ch_flags,r->ch_flags); 133 } 134 /* -------------- long C -----------------------*/ 135 else if (rField_is_long_C(r)) 136 { 137 setGMPFloatDigits(r->ch_flags,r->ch_flags); 138 } 139 #ifdef TEST 140 else 137 else if (!rField_is_R(r) && !rField_is_Q(r)) 141 138 { 142 139 WerrorS("unknown field"); -
Singular/p_polys.cc
rbad9f3 r24d587 7 7 * Author: obachman (Olaf Bachmann) 8 8 * Created: 8/00 9 * Version: $Id: p_polys.cc,v 1.1 3 2000-12-14 16:38:53obachman Exp $9 * Version: $Id: p_polys.cc,v 1.14 2000-12-20 11:15:46 obachman Exp $ 10 10 *******************************************************************/ 11 11 … … 199 199 // pWTotalDegree for weighted orderings 200 200 // whose first block covers all variables 201 longpWFirstTotalDegree(poly p, ring r)201 inline long _pWFirstTotalDegree(poly p, ring r) 202 202 { 203 203 int i; … … 211 211 } 212 212 213 long pWFirstTotalDegree(poly p, ring r) 214 { 215 return (long) _pWFirstTotalDegree(p, r); 216 } 213 217 214 218 /*2 … … 323 327 } 324 328 *l=ll; 325 return p_GetOrder(p, r);329 return r->pFDeg(p, r); 326 330 } 327 331 … … 344 348 ll++; 345 349 } 346 o = pFDeg(p, r);350 o = r->pFDeg(p, r); 347 351 } 348 352 else … … 357 361 pp = p; 358 362 } 359 o = pFDeg(pp, r);363 o = r->pFDeg(pp, r); 360 364 } 361 365 *l=ll; … … 373 377 p_CheckPolyRing(p, r); 374 378 Exponent_t k= p_GetComp(p, r); 375 long o = pFDeg(p, r);379 long o = r->pFDeg(p, r); 376 380 int ll=1; 377 381 … … 406 410 long t,max; 407 411 408 max= pFDeg(p, r);412 max=r->pFDeg(p, r); 409 413 if (k > 0) 410 414 { 411 415 while (((p=pNext(p))!=NULL) && (p_GetComp(p, r)==k)) 412 416 { 413 t= pFDeg(p, r);417 t=r->pFDeg(p, r); 414 418 if (t>max) max=t; 415 419 ll++; … … 420 424 while ((p=pNext(p))!=NULL) 421 425 { 422 t= pFDeg(p, r);426 t=r->pFDeg(p, r); 423 427 if (t>max) max=t; 424 428 ll++; … … 441 445 long t,max; 442 446 443 max= pFDeg(p, r);447 max=r->pFDeg(p, r); 444 448 if (rIsSyzIndexRing(r)) 445 449 { … … 449 453 if (p_GetComp(p, r)<=limit) 450 454 { 451 if ((t= pFDeg(p, r))>max) max=t;455 if ((t=r->pFDeg(p, r))>max) max=t; 452 456 ll++; 453 457 } … … 459 463 while ((p=pNext(p))!=NULL) 460 464 { 461 if ((t= pFDeg(p, r))>max) max=t;462 ll++; 463 } 464 } 465 *l=ll; 466 return max; 467 } 468 469 // like pLDeg1, only pFDeg == Deg465 if ((t=r->pFDeg(p, r))>max) max=t; 466 ll++; 467 } 468 } 469 *l=ll; 470 return max; 471 } 472 473 // like pLDeg1, only pFDeg == pDeg 470 474 long pLDeg1_Deg(poly p,int *l, ring r) 471 475 { 476 assume(r->pFDeg == pDeg); 472 477 p_CheckPolyRing(p, r); 473 478 Exponent_t k= p_GetComp(p, r); … … 500 505 long pLDeg1c_Deg(poly p,int *l, ring r) 501 506 { 507 assume(r->pFDeg == pDeg); 502 508 p_CheckPolyRing(p, r); 503 509 int ll=1; … … 568 574 569 575 max=_pTotaldegree(p, r); 576 if (rIsSyzIndexRing(r)) 577 { 578 long limit = rGetCurrSyzLimit(r); 579 while ((p=pNext(p))!=NULL) 580 { 581 if (p_GetComp(p, r)<=limit) 582 { 583 if ((t=_pTotaldegree(p, r))>max) max=t; 584 ll++; 585 } 586 else break; 587 } 588 } 589 else 590 { 591 while ((p=pNext(p))!=NULL) 592 { 593 if ((t=_pTotaldegree(p, r))>max) max=t; 594 ll++; 595 } 596 } 597 *l=ll; 598 return max; 599 } 600 601 // like pLDeg1, only pFDeg == pWFirstTotalDegree 602 long pLDeg1_WFirstTotalDegree(poly p,int *l, ring r) 603 { 604 p_CheckPolyRing(p, r); 605 Exponent_t k= p_GetComp(p, r); 606 int ll=1; 607 long t,max; 608 609 max=_pWFirstTotalDegree(p, r); 610 if (k > 0) 611 { 612 while (((p=pNext(p))!=NULL) && (p_GetComp(p, r)==k)) 613 { 614 t=_pWFirstTotalDegree(p, r); 615 if (t>max) max=t; 616 ll++; 617 } 618 } 619 else 620 { 621 while ((p=pNext(p))!=NULL) 622 { 623 t=_pWFirstTotalDegree(p, r); 624 if (t>max) max=t; 625 ll++; 626 } 627 } 628 *l=ll; 629 return max; 630 } 631 632 long pLDeg1c_WFirstTotalDegree(poly p,int *l, ring r) 633 { 634 p_CheckPolyRing(p, r); 635 int ll=1; 636 long t,max; 637 638 max=_pWFirstTotalDegree(p, r); 570 639 if (rIsSyzIndexRing(r)) 571 640 { -
Singular/p_polys.h
rbad9f3 r24d587 8 8 * Author: obachman (Olaf Bachmann) 9 9 * Created: 9/00 10 * Version: $Id: p_polys.h,v 1.1 7 2000-11-24 16:24:42 SingularExp $10 * Version: $Id: p_polys.h,v 1.18 2000-12-20 11:15:47 obachman Exp $ 11 11 *******************************************************************/ 12 12 #ifndef P_POLYS_H … … 360 360 long pLDeg1_Totaldegree(poly p,int *l, ring r); 361 361 long pLDeg1c_Totaldegree(poly p,int *l, ring r); 362 long pLDeg1_WFirstTotalDegree(poly p,int *l, ring r); 363 long pLDeg1c_WFirstTotalDegree(poly p,int *l, ring r); 362 364 363 365 /*************************************************************** -
Singular/polys.cc
rbad9f3 r24d587 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: polys.cc,v 1.7 3 2000-12-19 18:31:44obachman Exp $ */4 /* $Id: polys.cc,v 1.74 2000-12-20 11:15:47 obachman Exp $ */ 5 5 6 6 /* … … 63 63 } 64 64 65 // resets the pFDeg and pLDeg: if pLDeg is not given, it is 66 // set to currRing->pLDegOrig, i.e. to the respective LDegProc which 67 // only uses pFDeg (and not pDeg, or pTotalDegree, etc) 68 void pSetDegProcs(pFDegProc new_FDeg, pLDegProc new_lDeg = NULL) 69 { 70 assume(new_FDeg != NULL); 71 pFDeg = new_FDeg; 72 currRing->pFDeg = new_FDeg; 73 74 if (new_lDeg == NULL) 75 new_lDeg = currRing->pLDegOrig; 76 77 pLDeg = new_lDeg; 78 currRing->pLDeg = new_lDeg; 79 } 80 81 82 // restores pFDeg and pLDeg: 83 extern void pRestoreDegProcs(pFDegProc old_FDeg, pLDegProc old_lDeg) 84 { 85 assume(old_FDeg != NULL && old_lDeg != NULL); 86 pFDeg = old_FDeg; 87 currRing->pFDeg = old_FDeg; 88 pLDeg = old_lDeg; 89 currRing->pLDeg = old_lDeg; 90 } 65 91 66 92 /*2 -
Singular/polys.h
rbad9f3 r24d587 4 4 * Computer Algebra System SINGULAR * 5 5 ****************************************/ 6 /* $Id: polys.h,v 1.5 0 2000-12-15 18:49:35 SingularExp $ */6 /* $Id: polys.h,v 1.51 2000-12-20 11:15:48 obachman Exp $ */ 7 7 /* 8 8 * ABSTRACT - all basic methods to manipulate polynomials of the … … 248 248 //extern void pChangeRing(ring newRing); 249 249 extern void pSetGlobals(ring r, BOOLEAN complete = TRUE); 250 // resets the pFDeg and pLDeg: if pLDeg is not given, it is 251 // set to currRing->pLDegOrig, i.e. to the respective LDegProc which 252 // only uses pFDeg (and not pDeg, or pTotalDegree, etc). 253 // If you use this, make sure your procs does not make any assumptions 254 // on oredering and/or OrdIndex -- otherwise they might return wrong results 255 // on strat->tailRing 256 extern void pSetDegProcs(pFDegProc new_FDeg, pLDegProc new_lDeg = NULL); 257 // restores pFDeg and pLDeg: 258 extern void pRestoreDegProcs(pFDegProc old_FDeg, pLDegProc old_lDeg); 250 259 251 260 /*-----------the ordering of monomials:-------------*/ … … 275 284 long pLDeg1_Totaldegree(poly p,int *l, ring r = currRing); 276 285 long pLDeg1c_Totaldegree(poly p,int *l, ring r = currRing); 286 long pLDeg1_WFirstTotalDegree(poly p,int *l, ring r=currRing); 287 long pLDeg1c_WFirstTotalDegree(poly p,int *l, ring r=currRing); 277 288 278 289 /*-------------pComp for syzygies:-------------------*/ -
Singular/polys1.cc
rbad9f3 r24d587 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: polys1.cc,v 1.5 8 2000-12-15 18:49:35 SingularExp $ */4 /* $Id: polys1.cc,v 1.59 2000-12-20 11:15:48 obachman Exp $ */ 5 5 6 6 /* … … 69 69 */ 70 70 static pFDegProc pOldFDeg; 71 static pLDegProc pOldLDeg; 71 72 static intvec * pModW; 72 73 static BOOLEAN pOldLexOrder; … … 83 84 pModW = w; 84 85 pOldFDeg = pFDeg; 86 pOldLDeg = pLDeg; 85 87 pOldLexOrder = pLexOrder; 86 p FDeg = pModDeg;88 pSetDegProcs(pModDeg); 87 89 pLexOrder = TRUE; 88 90 } … … 90 92 { 91 93 pModW = NULL; 92 p FDeg = pOldFDeg;94 pRestoreDegProcs(pOldFDeg, pOldLDeg); 93 95 pLexOrder = pOldLexOrder; 94 96 } -
Singular/ring.cc
rbad9f3 r24d587 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: ring.cc,v 1.15 1 2000-12-19 18:31:45obachman Exp $ */4 /* $Id: ring.cc,v 1.152 2000-12-20 11:15:48 obachman Exp $ */ 5 5 6 6 /* … … 70 70 // right-adjust r->VarOffset 71 71 static void rRightAdjustVarOffset(ring r); 72 static void rOptimizeLDeg(ring r); 72 73 73 74 /*0 implementation*/ … … 1976 1977 { 1977 1978 int blocks = rBlocks(r) - 1; 1978 if (blocks != 3) return FALSE; 1979 return ((r->order[0] == ringorder_aa && r->order[1] != ringorder_M) || 1980 (r->order[1] == ringorder_aa && r->order[2] != ringorder_M)); 1979 if (blocks > 3 || blocks < 2) return FALSE; 1980 if (blocks == 3) 1981 { 1982 return ((r->order[0] == ringorder_aa && r->order[1] != ringorder_M && 1983 (r->order[2] == ringorder_c || r->order[2] == ringorder_C)) || 1984 ((r->order[0] == ringorder_c || r->order[0] == ringorder_C) && 1985 r->order[1] == ringorder_aa && r->order[2] != ringorder_M)); 1986 } 1987 else 1988 { 1989 return (r->order[0] == ringorder_aa && r->order[1] != ringorder_M); 1990 } 1981 1991 } 1982 1992 … … 2457 2467 assume (exp_limit > 1); 2458 2468 BOOLEAN need_other_ring; 2469 BOOLEAN omitted_degree = FALSE; 2459 2470 int bits; 2460 2471 … … 2523 2534 need_other_ring=TRUE; 2524 2535 omit_degree=FALSE; 2536 omitted_degree = TRUE; 2525 2537 } 2526 2538 break; … … 2538 2550 need_other_ring=TRUE; 2539 2551 omit_degree=FALSE; 2552 omitted_degree = TRUE; 2540 2553 } 2541 2554 break; … … 2572 2585 rComplete(res, 1); 2573 2586 2574 // adjust res->pFDeg: if it was changed global y, then2587 // adjust res->pFDeg: if it was changed globally, then 2575 2588 // it must also be changed for new ring 2576 if (pFDeg != r->pFDeg) 2577 res->pFDeg = pFDeg; 2578 else if (r->pFDeg != res->pFDeg && 2589 if (r->pFDegOrig != res->pFDegOrig && 2579 2590 rOrd_is_WeightedDegree_Ordering(r)) 2580 // still might need adjustment 2581 { 2591 { 2592 // still might need adjustment for weighted orderings 2593 // and omit_degree 2582 2594 res->firstwv = r->firstwv; 2583 2595 res->firstBlockEnds = r->firstBlockEnds; 2584 res->pFDeg = pWFirstTotalDegree; 2585 } 2596 res->pFDeg = res->pFDegOrig = pWFirstTotalDegree; 2597 } 2598 if (omitted_degree) 2599 res->pLDeg = res->pLDegOrig = r->pLDegOrig; 2600 2601 rOptimizeLDeg(res); 2586 2602 2587 2603 // set syzcomp … … 2704 2720 r->firstwv = wvhdl[i]; 2705 2721 } 2722 2723 static void rOptimizeLDeg(ring r) 2724 { 2725 if (r->pFDeg == pDeg) 2726 { 2727 if (r->pLDeg == pLDeg1) 2728 r->pLDeg = pLDeg1_Deg; 2729 if (r->pLDeg == pLDeg1c) 2730 r->pLDeg = pLDeg1c_Deg; 2731 } 2732 else if (r->pFDeg == pTotaldegree) 2733 { 2734 if (r->pLDeg == pLDeg1) 2735 r->pLDeg = pLDeg1_Totaldegree; 2736 if (r->pLDeg == pLDeg1c) 2737 r->pLDeg = pLDeg1c_Totaldegree; 2738 } 2739 else if (r->pFDeg == pWFirstTotalDegree) 2740 { 2741 if (r->pLDeg == pLDeg1) 2742 r->pLDeg = pLDeg1_WFirstTotalDegree; 2743 if (r->pLDeg == pLDeg1c) 2744 r->pLDeg = pLDeg1c_WFirstTotalDegree; 2745 } 2746 } 2706 2747 2707 2748 // set pFDeg, pLDeg, MixOrder, ComponentOrder, etc … … 2741 2782 r->ComponentOrder=-1; 2742 2783 if (r->OrdSgn == -1) r->pLDeg = pLDeg0c; 2743 if ((order[0] == ringorder_lp) || (order[0] == ringorder_ls) )2784 if ((order[0] == ringorder_lp) || (order[0] == ringorder_ls) || order[0] == ringorder_rp) 2744 2785 { 2745 2786 r->LexOrder=TRUE; … … 2763 2804 order[0]==ringorder_s) 2764 2805 r->ComponentOrder=-1; 2765 if ((order[1] == ringorder_lp) || (order[1] == ringorder_ls) )2806 if ((order[1] == ringorder_lp) || (order[1] == ringorder_ls) || order[1] == ringorder_rp) 2766 2807 { 2767 2808 r->LexOrder=TRUE; … … 2807 2848 r->pFDeg = pWTotaldegree; // may be improved: pTotaldegree for lp/dp/ls/.. blocks 2808 2849 } 2809 if (rOrd_is_Totaldegree_Ordering(r) )2850 if (rOrd_is_Totaldegree_Ordering(r) || rOrd_is_WeightedDegree_Ordering(r)) 2810 2851 r->pFDeg = pDeg; 2852 2853 r->pFDegOrig = r->pFDeg; 2854 r->pLDegOrig = r->pLDeg; 2855 rOptimizeLDeg(r); 2811 2856 } 2812 2857 … … 2837 2882 } 2838 2883 } 2839 } 2840 } 2884 return; 2885 } 2886 } 2887 r->NegWeightL_Size = 0; 2888 r->NegWeightL_Offset = NULL; 2841 2889 } 2842 2890 -
Singular/structs.h
rbad9f3 r24d587 4 4 * Computer Algebra System SINGULAR * 5 5 ****************************************/ 6 /* $Id: structs.h,v 1.5 0 2000-12-19 18:31:46obachman Exp $ */6 /* $Id: structs.h,v 1.51 2000-12-20 11:15:49 obachman Exp $ */ 7 7 /* 8 8 * ABSTRACT … … 432 432 433 433 p_Procs_s* p_Procs; 434 435 /* FDeg and LDeg */ 434 436 pFDegProc pFDeg; 435 437 pLDegProc pLDeg; 438 439 /* as it was determined by rComplete */ 440 pFDegProc pFDegOrig; 441 /* and as it was determined before rOptimizeLDeg */ 442 pLDegProc pLDegOrig; 443 436 444 p_SetmProc p_Setm; 437 445 n_Procs_s* cf; -
Singular/weight.cc
rbad9f3 r24d587 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: weight.cc,v 1.1 7 2000-10-30 13:40:29obachman Exp $ */4 /* $Id: weight.cc,v 1.18 2000-12-20 11:15:50 obachman Exp $ */ 5 5 6 6 /* … … 22 22 23 23 /*0 implementation*/ 24 25 pFDegProc pFDegOld;26 pLDegProc pLDegOld;27 28 24 #ifndef __MWERKS__ 29 25 extern "C" double (*wFunctional)(int *degw, int *lpol, int npol,
Note: See TracChangeset
for help on using the changeset viewer.