Changeset e6cbed in git
- Timestamp:
- Jun 20, 2006, 11:44:18 PM (17 years ago)
- Branches:
- (u'spielwiese', '828514cf6e480e4bafc26df99217bf2a1ed1ef45')
- Children:
- 451a9afc25d0cd3e8d7385616d5a2ae5fe690dbe
- Parents:
- 0266acf035e867ba3e767b7d865bb68b4ab24eca
- Location:
- kernel
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/kspoly.cc
r0266ac re6cbed 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: kspoly.cc,v 1. 5 2006-06-09 23:17:04wienand Exp $ */4 /* $Id: kspoly.cc,v 1.6 2006-06-20 21:44:18 wienand Exp $ */ 5 5 /* 6 6 * ABSTRACT - Routines for Spoly creation and reductions … … 483 483 { 484 484 p_LmFree(m2,currRing); 485 nNew(&(pGetCoeff(m1))); 485 #ifdef HAVE_RING2TOM 486 if (currRing->cring == 1) 487 pSetCoeff(m1, t2); 488 else 489 #endif 490 nNew(&(pGetCoeff(m1))); 486 491 return m1; 487 492 } … … 489 494 { 490 495 p_LmFree(m1,currRing); 491 nNew(&(pGetCoeff(m2))); 496 #ifdef HAVE_RING2TOM 497 if (currRing->cring == 1) 498 pSetCoeff(m2, t1); 499 else 500 #endif 501 nNew(&(pGetCoeff(m2))); 492 502 return m2; 493 503 } -
kernel/kutil.cc
r0266ac re6cbed 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: kutil.cc,v 1.2 8 2006-06-12 17:40:09wienand Exp $ */4 /* $Id: kutil.cc,v 1.29 2006-06-20 21:44:18 wienand Exp $ */ 5 5 /* 6 6 * ABSTRACT: kernel: utils for kStd … … 2277 2277 int i; 2278 2278 int an = 0; 2279 int en = length;2280 int cmp_int =pOrdSgn;2279 int en = length; 2280 int cmp_int = pOrdSgn; 2281 2281 if (currRing->MixedOrder) 2282 2282 { … … 2311 2311 if (pLmCmp(set[length],p)== -cmp_int) 2312 2312 return length+1; 2313 2313 int cmp; 2314 2314 loop 2315 2315 { 2316 2316 if (an >= en-1) 2317 2317 { 2318 if (pLmCmp(set[an],p) == cmp_int) return an; 2319 if (pLmCmp(set[an],p) == -cmp_int) return en; 2320 if (currRing->cring == 1) { 2321 if (nGreater(pGetCoeff(p), pGetCoeff(set[an]))) return en; 2322 return an; 2323 } 2324 if ((cmp_int!=1) && ((strat->ecartS[an])>ecart_p)) return an; 2325 return en; 2326 } 2327 i=(an+en) / 2; 2328 if (pLmCmp(set[i],p) == cmp_int) en=i; 2329 else if (pLmCmp(set[i],p) == -cmp_int) an=i; 2318 cmp = pLmCmp(set[an],p); 2319 if (cmp == cmp_int) return an; 2320 if (cmp == -cmp_int) return en; 2321 if (nGreater(pGetCoeff(p), pGetCoeff(set[an]))) return en; 2322 return an; 2323 } 2324 i = (an+en) / 2; 2325 cmp = pLmCmp(set[i],p); 2326 if (cmp == cmp_int) en = i; 2327 else if (cmp == -cmp_int) an = i; 2330 2328 else 2331 2329 { 2332 if (currRing->cring == 1) { 2333 if (nGreater(pGetCoeff(p), pGetCoeff(set[i]))) an = i; 2334 else en = i; 2335 } 2336 else 2337 { 2338 if ((cmp_int!=1) && ((strat->ecartS[i])<ecart_p)) 2339 en=i; 2340 else 2341 an=i; 2342 } 2330 if (nGreater(pGetCoeff(p), pGetCoeff(set[i]))) an = i; 2331 else en = i; 2343 2332 } 2344 2333 } … … 2500 2489 } 2501 2490 2491 /*2 Pos for rings T: Here I am 2492 * looks up the position of p in T 2493 * set[0] is the smallest with respect to the ordering-procedure 2494 * totaldegree,pComp 2495 */ 2496 int posInTrg0 (const TSet set,const int length,LObject &p) 2497 { 2498 if (length==-1) return 0; 2499 int o = p.GetpFDeg(); 2500 int op = set[length].GetpFDeg(); 2501 int i; 2502 int an = 0; 2503 int en = length; 2504 int cmp_int = pOrdSgn; 2505 if ((op < o) || (pLmCmp(set[length].p,p.p)== -cmp_int)) 2506 return length+1; 2507 int cmp; 2508 loop 2509 { 2510 if (an >= en-1) 2511 { 2512 op = set[an].GetpFDeg(); 2513 if (op > o) return an; 2514 if (op < 0) return en; 2515 cmp = pLmCmp(set[an].p,p.p); 2516 if (cmp == cmp_int) return an; 2517 if (cmp == -cmp_int) return en; 2518 if (nGreater(pGetCoeff(p.p), pGetCoeff(set[an].p))) return en; 2519 return an; 2520 } 2521 i = (an + en) / 2; 2522 op = set[i].GetpFDeg(); 2523 if (op > o) en = i; 2524 else if (op < o) an = i; 2525 else 2526 { 2527 cmp = pLmCmp(set[i].p,p.p); 2528 if (cmp == cmp_int) en = i; 2529 else if (cmp == -cmp_int) an = i; 2530 else if (nGreater(pGetCoeff(p.p), pGetCoeff(set[i].p))) an = i; 2531 else en = i; 2532 } 2533 } 2534 } 2535 /* 2536 int o = p.GetpFDeg(); 2537 int op = set[length].GetpFDeg(); 2538 2539 if ((op < o) 2540 || ((op == o) && (pLmCmp(set[length].p,p.p) != pOrdSgn))) 2541 return length+1; 2542 2543 int i; 2544 int an = 0; 2545 int en= length; 2546 2547 loop 2548 { 2549 if (an >= en-1) 2550 { 2551 op= set[an].GetpFDeg(); 2552 if ((op > o) 2553 || (( op == o) && (pLmCmp(set[an].p,p.p) == pOrdSgn))) 2554 return an; 2555 return en; 2556 } 2557 i=(an+en) / 2; 2558 op = set[i].GetpFDeg(); 2559 if (( op > o) 2560 || (( op == o) && (pLmCmp(set[i].p,p.p) == pOrdSgn))) 2561 en=i; 2562 else 2563 an=i; 2564 } 2565 } 2566 */ 2502 2567 /*2 2503 2568 * looks up the position of p in T … … 2985 3050 } 2986 3051 } 3052 3053 /*2 Position for rings L: Here I am 3054 * looks up the position of polynomial p in set 3055 * e is the ecart of p 3056 * set[length] is the smallest element in set with respect 3057 * to the ordering-procedure totaldegree,pComp 3058 */ 3059 inline int getIndexRng(long coeff) 3060 { 3061 if (coeff == 0) return -1; 3062 long tmp = coeff; 3063 int ind = 0; 3064 while (tmp % 2 == 0) { 3065 tmp = tmp / 2; 3066 ind++; 3067 } 3068 return ind; 3069 } 3070 3071 int posInLrg0 (const LSet set, const int length, 3072 LObject* p,const kStrategy strat) 3073 /* if (nGreater(pGetCoeff(p), pGetCoeff(set[an]))) return en; 3074 if (pLmCmp(set[i],p) == cmp_int) en = i; 3075 else if (pLmCmp(set[i],p) == -cmp_int) an = i; 3076 else 3077 { 3078 if (nGreater(pGetCoeff(p), pGetCoeff(set[i]))) an = i; 3079 else en = i; 3080 }*/ 3081 { 3082 if (length < 0) return 0; 3083 3084 int o = p->GetpFDeg(); 3085 int op = set[length].GetpFDeg(); 3086 3087 if ((op > o) || ((op == o) && (pLmCmp(set[length].p,p->p) != -pOrdSgn))) 3088 return length + 1; 3089 int i; 3090 int an = 0; 3091 int en = length; 3092 loop 3093 { 3094 if (an >= en - 1) 3095 { 3096 op = set[an].GetpFDeg(); 3097 if ((op > o) || ((op == o) && (pLmCmp(set[an].p,p->p) != -pOrdSgn))) 3098 return en; 3099 return an; 3100 } 3101 i = (an+en) / 2; 3102 op = set[i].GetpFDeg(); 3103 if ((op > o) || ((op == o) && (pLmCmp(set[i].p,p->p) != -pOrdSgn))) 3104 an = i; 3105 else 3106 en = i; 3107 } 3108 } 3109 3110 /*{ 3111 if (length < 0) return 0; 3112 3113 int o = p->GetpFDeg(); 3114 int op = set[length].GetpFDeg(); 3115 3116 int inde = getIndexRng((unsigned long) pGetCoeff(set[length].p)); 3117 int indp = getIndexRng((unsigned long) pGetCoeff(p->p)); 3118 int inda; 3119 int indi; 3120 3121 if ((inda > indp) || ((inda == inde) && ((op > o) || ((op == o) && (pLmCmp(set[length].p,p->p) != -pOrdSgn))))) 3122 return length + 1; 3123 int i; 3124 int an = 0; 3125 inda = getIndexRng((unsigned long) pGetCoeff(set[an].p)); 3126 int en = length; 3127 loop 3128 { 3129 if (an >= en-1) 3130 { 3131 op = set[an].GetpFDeg(); 3132 if ((indp > inda) || ((indp == inda) && ((op > o) || ((op == o) && (pLmCmp(set[an].p,p->p) != -pOrdSgn))))) 3133 return en; 3134 return an; 3135 } 3136 i = (an + en) / 2; 3137 indi = getIndexRng((unsigned long) pGetCoeff(set[i].p)); 3138 op = set[i].GetpFDeg(); 3139 if ((indi > indp) || ((indi == indp) && ((op > o) || ((op == o) && (pLmCmp(set[i].p,p->p) != -pOrdSgn))))) 3140 // if ((op > o) || ((op == o) && (pLmCmp(set[i].p,p->p) != -pOrdSgn))) 3141 { 3142 an = i; 3143 inda = getIndexRng((unsigned long) pGetCoeff(set[an].p)); 3144 } 3145 else 3146 en = i; 3147 } 3148 } */ 2987 3149 2988 3150 /*2 … … 4654 4816 else if (BTEST1(12) || BTEST1(14) || BTEST1(16) || BTEST1(18)) 4655 4817 strat->posInT = posInT1; 4818 #ifdef HAVE_RING2TOM 4819 if (currRing->cring == 1) 4820 { 4821 strat->posInL = posInL11; 4822 strat->posInT = posInT11; 4823 } 4824 #endif 4656 4825 strat->posInLDependsOnLength = kPosInLDependsOnLength(strat->posInL); 4657 4826 }
Note: See TracChangeset
for help on using the changeset viewer.