Changeset 47e836b in git
- Timestamp:
- Aug 3, 2011, 2:53:56 PM (12 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'a800fe4b3e9d37a38c5a10cc0ae9dfa0c15a4ee6')
- Children:
- b44f5efd50dcfa0bb89204f55621946bbb67238d
- Parents:
- 3342df1a96f6513ccd51901066e6cb096c2c9780
- git-author:
- Hans Schoenemann <hannes@mathematik.uni-kl.de>2011-08-03 14:53:56+02:00
- git-committer:
- Mohamed Barakat <mohamed.barakat@rwth-aachen.de>2011-11-09 13:11:35+01:00
- Location:
- kernel
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/tgb.cc
r3342df r47e836b 15 15 ///@TODO: grade aus ecartS, setze dazu strat->honey; und nutze p.ecart 16 16 ///@TODO: no tail reductions in syz comp 17 #include <stdlib.h> 18 #include <stdio.h> 19 #include <queue> 17 20 #include <kernel/mod2.h> 18 21 #include <kernel/tgb.h> … … 27 30 #include <kernel/longrat.h> 28 31 #include <coeffs/modulop.h> 29 #include <stdlib.h>30 #include <stdio.h>31 #include <queue>32 32 #define BUCKETS_FOR_NORO_RED 1 33 33 #define SR_HDL(A) ((long)(A)) … … 176 176 } 177 177 #endif 178 struct snumber_dummy 179 { 180 mpz_t z; 181 mpz_t n; 182 #if defined(LDEBUG) 183 int debug; 184 #endif 185 BOOLEAN s; 186 }; 187 typedef struct snumber_dummy *number_dummy; 188 178 189 179 190 int QlogSize (number n) 180 191 { 181 if(SR_HDL (n) & SR_INT) 182 { 183 long i = SR_TO_INT (n); 184 if(i == 0) 185 return 0; 186 192 long nl=n_Size(n,currRing->cf); 193 if (nl==0L) return 0; 194 if (nl==1L) 195 { 196 long i = n_Int(n,currRing->cf); 187 197 unsigned long v; 188 198 v = (i >= 0) ? i : -i; … … 196 206 } 197 207 //assume denominator is 0 198 return mpz_sizeinbase (n->z, 2); 208 number_dummy nn=(number_dummy)n; 209 return mpz_sizeinbase (nn->z, 2); 199 210 } 200 211 … … 985 996 P.p = h; /*p_Copy(h,c->r); */ 986 997 P.ecart = ecart; 987 P.FDeg = pFDeg (P.p, c->r);998 P.FDeg = c->r->pFDeg (P.p, c->r); 988 999 if(!(simplified)) 989 1000 { … … 2589 2600 /*template <class number_type> SparseRow<number_type>* noro_red_to_non_poly(poly p, int &len, NoroCache<number_type>* cache,slimgb_alg* c) 2590 2601 * { 2591 if (n pPrimeM<255)2602 if (n_GetChar(currRing->cf)<255) 2592 2603 { 2593 2604 return noro_red_to_non_poly_t<tgb_uint8>(p,len,cache,c); … … 2595 2606 else 2596 2607 { 2597 if (n pPrimeM<65000)2608 if (n_GetChar(currRing->cf)<65000) 2598 2609 { 2599 2610 return noro_red_to_non_poly_t<tgb_uint16>(p,len,cache,c); … … 2835 2846 } 2836 2847 { 2837 if(n pPrimeM< 255)2848 if(n_GetChar(currRing->cf) < 255) 2838 2849 { 2839 2850 noro_step < tgb_uint8 > (p, pn, c); … … 2841 2852 else 2842 2853 { 2843 if(n pPrimeM< 65000)2854 if(n_GetChar(currRing->cf) < 65000) 2844 2855 { 2845 2856 noro_step < tgb_uint16 > (p, pn, c); … … 3353 3364 #ifdef USE_NORO 3354 3365 use_noro = ((!(nc)) && (S->rank <= 1) && (rField_is_Zp (r)) 3355 && (!(eliminationProblem)) && (n pPrimeM<= 32003));3366 && (!(eliminationProblem)) && (n_GetChar(currRing->cf) <= 32003)); 3356 3367 use_noro_last_block = false; 3357 3368 if((!(use_noro)) && (lastDpBlockStart <= (currRing->N))) 3358 3369 { 3359 3370 use_noro_last_block = ((!(nc)) && (S->rank <= 1) && (rField_is_Zp (r)) 3360 && (n pPrimeM<= 32003));3371 && (n_GetChar(currRing->cf) <= 32003)); 3361 3372 } 3362 3373 #else … … 3573 3584 { 3574 3585 rChangeCurrRing (new_ring); 3575 s_h = idrCopyR_NoSort (arg_I, orig_ring );3586 s_h = idrCopyR_NoSort (arg_I, orig_ring, new_ring); 3576 3587 idTest (s_h); 3577 3588 /*int i; … … 3597 3608 idTest (s_result); 3598 3609 rChangeCurrRing (orig_ring); 3599 result = idrMoveR_NoSort (s_result, new_ring );3610 result = idrMoveR_NoSort (s_result, new_ring, orig_ring); 3600 3611 3601 3612 idTest (result); … … 4717 4728 p_noro[i] = p; 4718 4729 } 4719 if(n pPrimeM< 255)4730 if(n_GetChar(currRing->cf) < 255) 4720 4731 { 4721 4732 noro_step < tgb_uint8 > (p_noro, pn_noro, c); … … 4723 4734 else 4724 4735 { 4725 if(n pPrimeM< 65000)4736 if(n_GetChar(currRing->cf) < 65000) 4726 4737 { 4727 4738 noro_step < tgb_uint16 > (p_noro, pn_noro, c); -
kernel/tgb_internal.h
r3342df r47e836b 11 11 #define USE_NORO 1 12 12 13 #include <omalloc/omalloc.h> 13 14 14 15 //#define TGB_DEBUG … … 43 44 //#define USE_STDVECBOOL 1 44 45 #ifdef HAVE_BOOST 45 #include <omalloc/omalloc.h>46 46 #include <vector> 47 47 using boost::dynamic_bitset; … … 52 52 using std::vector; 53 53 #endif 54 55 #include <omalloc/omalloc.h> 54 #include <stdlib.h> 55 56 56 #include <polys/monomials/p_polys.h> 57 57 … … 61 61 #include <misc/options.h> 62 62 #include <polys/polys.h> 63 #include <stdlib.h>64 63 #include <kernel/modulop.h> 65 64 #include <kernel/kutil.h> … … 624 623 //assume(impl.find(p_Copy(term,currRing))==impl.end()); 625 624 //assume(len==pLength(nf)); 626 assume(n pIsOne(p_GetCoeff(term,currRing)));625 assume(n_IsOne(p_GetCoeff(term,currRing),currRing->cf)); 627 626 if (term==nf) 628 627 { … … 792 791 number coef_bak=p_GetCoeff(t,c->r); 793 792 794 p_SetCoeff(t,n pInit(1,c->r),c->r);795 assume(n pIsOne(p_GetCoeff(c->strat->S[i],c->r)));793 p_SetCoeff(t,n_Init(1,c->r->cf),c->r); 794 assume(n_IsOne(p_GetCoeff(c->strat->S[i],c->r),c->r->cf)); 796 795 number coefstrat=p_GetCoeff(c->strat->S[i],c->r); 797 796 … … 799 798 poly exp_diff=cache->temp_term; 800 799 p_ExpVectorDiff(exp_diff,t,c->strat->S[i],c->r); 801 p_SetCoeff(exp_diff,n pNeg(npInvers(coefstrat)),c->r);800 p_SetCoeff(exp_diff,n_Neg(n_Invers(coefstrat,c->r->cf),c->r->cf),c->r); 802 801 p_Setm(exp_diff,c->r); 803 802 assume(c->strat->S[i]!=NULL); … … 819 818 } else { 820 819 number coef_bak=p_GetCoeff(t,c->r); 821 number one=n pInit(1, currRing);820 number one=n_Init(1, c->r->cf); 822 821 p_SetCoeff(t,one,c->r); 823 822 … … 929 928 const int len=row->len; 930 929 tgb_uint32 buffer[256]; 931 const tgb_uint32 prime=n pPrimeM;930 const tgb_uint32 prime=n_GetChar(currRing->cf); 932 931 const tgb_uint32 c=F4mat_to_number_type(coef); 933 932 assume(!(npIsZero(coef))); … … 956 955 assume(bpos<256); 957 956 assume(!(npIsZero((number)(long) buffer[bpos]))); 958 temp_array[idx]=F4mat_to_number_type(n pAddM((number)(long) temp_array[idx], (number)(long) buffer[bpos++]));957 temp_array[idx]=F4mat_to_number_type(n_Add((number)(long) temp_array[idx], (number)(long) buffer[bpos++],currRing->cf)); 959 958 assume(idx<temp_size); 960 959 } … … 970 969 //const int len=temp_size; 971 970 tgb_uint32 buffer[256]; 972 const tgb_uint32 prime=n pPrimeM;971 const tgb_uint32 prime=n_GetChar(currRing->cf); 973 972 const tgb_uint32 c=F4mat_to_number_type(coef); 974 973 assume(!(npIsZero(coef))); … … 997 996 assume(bpos<256); 998 997 //assume(!(npIsZero((number) buffer[bpos]))); 999 temp_array[i]=F4mat_to_number_type(n pAddM((number)(long) temp_array[i], (number)(long) buffer[bpos++]));998 temp_array[i]=F4mat_to_number_type(n_Add((number)(long) temp_array[i], (number)(long) buffer[bpos++],currRing->cf)); 1000 999 assume(i<temp_size); 1001 1000 } … … 1017 1016 for(i=0;i<len;i++) 1018 1017 { 1019 temp_array[i]=F4mat_to_number_type(n pAddM((number)(long) temp_array[i], (number)(long) row[i]));1018 temp_array[i]=F4mat_to_number_type(n_Add((number)(long) temp_array[i], (number)(long) row[i],currRing->cf)); 1020 1019 assume(i<temp_size); 1021 1020 } … … 1037 1036 { 1038 1037 1039 temp_array[i]=F4mat_to_number_type(n pSubM((number)(long) temp_array[i], (number)(long) row[i]));1038 temp_array[i]=F4mat_to_number_type(n_Sub((number)(long) temp_array[i], (number)(long) row[i],currRing->cf)); 1040 1039 assume(i<temp_size); 1041 1040 } … … 1053 1052 { 1054 1053 int idx=idx_array[j]; 1055 temp_array[idx]=F4mat_to_number_type( (number_type)(long)n pAddM((number) (long)temp_array[idx],(number)(long) coef_array[j]));1054 temp_array[idx]=F4mat_to_number_type( (number_type)(long)n_Add((number) (long)temp_array[idx],(number)(long) coef_array[j],currRing->cf)); 1056 1055 assume(idx<temp_size); 1057 1056 } … … 1067 1066 { 1068 1067 int idx=idx_array[j]; 1069 temp_array[idx]=F4mat_to_number_type( (number_type)(long) n pSubM((number) (long)temp_array[idx],(number)(long) coef_array[j]));1068 temp_array[idx]=F4mat_to_number_type( (number_type)(long) n_Sub((number) (long)temp_array[idx],(number)(long) coef_array[j],currRing->cf)); 1070 1069 assume(idx<temp_size); 1071 1070 } … … 1079 1078 int temp_size=cache->nIrreducibleMonomials; 1080 1079 memset(temp_array,0,temp_size_bytes); 1081 number minus_one=n pInit(-1,currRing);1080 number minus_one=n_Init(-1,currRing->cf); 1082 1081 int i; 1083 1082 for(i=0;i<len;i++) … … 1130 1129 if (red.ref->value_len==NoroCache<number_type>::backLinkCode) 1131 1130 { 1132 temp_array[red.ref->term_index]=F4mat_to_number_type( n pAddM((number)(long) temp_array[red.ref->term_index],red.coef));1131 temp_array[red.ref->term_index]=F4mat_to_number_type( n_Add((number)(long) temp_array[red.ref->term_index],red.coef,currRing->cf)); 1133 1132 } 1134 1133 else … … 1178 1177 assume(coef_array[j]!=0); 1179 1178 CoefIdx<number_type> ci; 1180 ci.coef=F4mat_to_number_type(n pMultM((number)(long) coef,(number)(long) coef_array[j]));1179 ci.coef=F4mat_to_number_type(n_Mult((number)(long) coef,(number)(long) coef_array[j],currRing->cf)); 1181 1180 ci.idx=idx_array[j]; 1182 1181 pairs[pos++]=ci; … … 1193 1192 assume(coef_array[j]!=0); 1194 1193 CoefIdx<number_type> ci; 1195 ci.coef=F4mat_to_number_type(n pMultM((number)(long) coef,(number)(long) coef_array[j]));1194 ci.coef=F4mat_to_number_type(n_Mult((number)(long) coef,(number)(long) coef_array[j],currRing->cf)); 1196 1195 assume(ci.coef!=0); 1197 1196 ci.idx=j; … … 1228 1227 assume(coef_array[j]!=0); 1229 1228 CoefIdx<number_type> ci; 1230 ci.coef=F4mat_to_number_type(n pNegM((number)(long) coef_array[j]));1229 ci.coef=F4mat_to_number_type(n_Neg((number)(long) coef_array[j],currRing->cf)); 1231 1230 assume(ci.coef!=0); 1232 1231 ci.idx=j; … … 1255 1254 assume(coef_array[j]!=0); 1256 1255 CoefIdx<number_type> ci; 1257 ci.coef=F4mat_to_number_type(n pNegM(coef_array[j]));1256 ci.coef=F4mat_to_number_type(n_Neg((number)coef_array[j],currRing->cf)); 1258 1257 ci.idx=idx_array[j]; 1259 1258 pairs[pos++]=ci; … … 1283 1282 CoefIdx<number_type>* pairs=(CoefIdx<number_type>*) cache->tempBuffer; //omalloc(together*sizeof(CoefIdx<number_type>)); 1284 1283 int pos=0; 1285 const number one=n pInit(1, currRing);1286 const number minus_one=n pInit(-1, currRing);1284 const number one=n_Init(1, currRing->cf); 1285 const number minus_one=n_Init(-1, currRing->cf); 1287 1286 for(i=0;i<len;i++) 1288 1287 { … … 1363 1362 else 1364 1363 { 1365 pairs[act].coef=F4mat_to_number_type(n pAddM((number)(long)pairs[act].coef,(number)(long)pairs[i].coef));1364 pairs[act].coef=F4mat_to_number_type(n_Add((number)(long)pairs[act].coef,(number)(long)pairs[i].coef,currRing->cf)); 1366 1365 } 1367 1366 } … … 1530 1529 for(i=startIndices[row];i<ncols;i++) 1531 1530 { 1532 row_array[i]=F4mat_to_number_type(n pMult((number)(long) row_array[i],(number)(long) coef));1531 row_array[i]=F4mat_to_number_type(n_Mult((number)(long) row_array[i],(number)(long) coef,currRing->cf)); 1533 1532 } 1534 1533 } … … 1537 1536 //assume rows "under r" have bigger or equal start index 1538 1537 number_type* row_array=rows[r]; 1539 number_type zero=F4mat_to_number_type( npInit(0, currRing));1538 number_type zero=F4mat_to_number_type((number)0 /*npInit(0, currRing)*/); 1540 1539 int start=startIndices[r]; 1541 1540 number_type coef=row_array[start]; … … 1543 1542 int other_row; 1544 1543 assume(!(npIsZero((number)(long) row_array[start]))); 1545 if (!(n pIsOne((number)(long) coef)))1546 multiplyRow(r,F4mat_to_number_type(n pInvers((number)(long) coef)));1547 assume(n pIsOne((number)(long) row_array[start]));1544 if (!(n_IsOne((number)(long) coef,currRing->cf))) 1545 multiplyRow(r,F4mat_to_number_type(n_Invers((number)(long) coef,currRing->cf))); 1546 assume(n_IsOne((number)(long) row_array[start],currRing->cf)); 1548 1547 int lastIndex=modP_lastIndexRow(row_array, ncols); 1549 number minus_one=n pInit(-1, currRing);1548 number minus_one=n_Init(-1, currRing->cf); 1550 1549 for (other_row=r+1;other_row<nrows;other_row++) 1551 1550 { … … 1555 1554 int i; 1556 1555 number_type* other_row_array=rows[other_row]; 1557 number coef2=n pNeg((number)(long) other_row_array[start]);1556 number coef2=n_Neg((number)(long) other_row_array[start],currRing->cf); 1558 1557 if (coef2==minus_one) 1559 1558 { … … 1561 1560 { 1562 1561 if (row_array[i]!=zero) 1563 other_row_array[i]=F4mat_to_number_type(n pSubM((number)(long) other_row_array[i], (number)(long) row_array[i]));1562 other_row_array[i]=F4mat_to_number_type(n_Sub((number)(long) other_row_array[i], (number)(long) row_array[i],currRing->cf)); 1564 1563 } 1565 1564 } … … 1570 1569 { 1571 1570 if (row_array[i]!=zero) 1572 other_row_array[i]=F4mat_to_number_type(n pAddM(npMult(coef2,(number)(long) row_array[i]),(number) (long)other_row_array[i]));1571 other_row_array[i]=F4mat_to_number_type(n_Add(n_Mult(coef2,(number)(long) row_array[i],currRing->cf),(number)(long) other_row_array[i],currRing->cf)); 1573 1572 } 1574 1573 } … … 1636 1635 for(i=startIndices[row];i<ncols;i++) 1637 1636 { 1638 row_array[i]= (number_type)(long)(npMult((number)(long) row_array[i],(number)(long) coef));1637 row_array[i]=F4mat_to_number_type(n_Mult((number)(long) row_array[i],(number)(long) coef,currRing->cf)); 1639 1638 } 1640 1639 } … … 1696 1695 assume(start<ncols); 1697 1696 int other_row; 1698 if (!(n pIsOne((number)(long) row_array[r])))1697 if (!(n_IsOne((number)(long) row_array[r],currRing->cf))) 1699 1698 { 1700 1699 //it should be one, but this safety is not expensive 1701 multiplyRow(r, (number_type)(long)(npInvers((number)(long) row_array[start])));1700 multiplyRow(r, F4mat_to_number_type(n_Invers((number)(long) row_array[start],currRing->cf))); 1702 1701 } 1703 1702 int lastIndex=modP_lastIndexRow(row_array, ncols); … … 1710 1709 { 1711 1710 number_type* other_row_array=rows[other_row]; 1712 number coef=((number)(long) other_row_array[start]); 1713 coef=npNeg(coef); 1711 number coef=n_Neg((number)(long) other_row_array[start],currRing->cf); 1714 1712 assume(!(npIsZero(coef))); 1715 1713 int i; … … 1718 1716 { 1719 1717 if (row_array[i]!=zero) 1720 other_row_array[i]= (number_type)(long)(npAddM(npMult(coef,(number)(long)row_array[i]),(number)(long)other_row_array[i]));1718 other_row_array[i]=F4mat_to_number_type(n_Add(n_Mult(coef,(number)(long)row_array[i],currRing->cf),(number)(long)other_row_array[i],currRing->cf)); 1721 1719 } 1722 1720 updateLastReducibleIndex(other_row,r); -
kernel/tgbgauss.cc
r3342df r47e836b 272 272 number n2=c2; 273 273 274 ksCheckCoeff(&n1,&n2 );274 ksCheckCoeff(&n1,&n2,currRing->cf); 275 275 //nDelete(&c1); 276 276 n1=nNeg(n1); … … 432 432 number n2=c2; 433 433 434 ksCheckCoeff(&n1,&n2 );434 ksCheckCoeff(&n1,&n2,currRing->cf); 435 435 nDelete(&c1); 436 436 mat->mult_row(i,n2); … … 887 887 while (p!=NULL) 888 888 { 889 d = nIntDiv(p GetCoeff(p),h);889 d = nIntDiv(p->coef,h); 890 890 nDelete(&p->coef); 891 891 p->coef=d; -
kernel/tgbgauss.h
r3342df r47e836b 10 10 #include <kernel/mod2.h> 11 11 #include <coeffs/numbers.h> 12 #include <polys/monomials/p_polys.h> 12 13 //#include "tgb_internal.h" 13 14
Note: See TracChangeset
for help on using the changeset viewer.