Changeset 24cabe in git
- Timestamp:
- Sep 26, 2013, 1:38:02 PM (9 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'a800fe4b3e9d37a38c5a10cc0ae9dfa0c15a4ee6')
- Children:
- 260c654e69c12b6deda08c5f3587eff3ac6ace1b
- Parents:
- 9bfdcf268d8535fb2578d07c3ffb3aa4b438f30ecaf5880a642caa3f7049561818c3e0656b00b2d0
- Files:
-
- 3 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
Tst/Short.lst
r9bfdcf r24cabe 117 117 Short/bug_tr387.tst 118 118 Short/bug_tr404.tst 119 Short/bug_tr485.tst 119 120 Short/bug_x_i_j.tst 120 121 Short/classify_s.tst -
Tst/Short/ok_s.lst
r9bfdcf r24cabe 119 119 bug_tr387 120 120 bug_tr404 121 bug_tr485 121 122 brnoeth_s 122 123 countedref_s -
kernel/tgb.cc
r9bfdcf r24cabe 37 37 static const int bundle_size_noro = 10000; 38 38 static const int delay_factor = 3; 39 int QlogSize (number n);40 39 #define ADD_LATER_SIZE 500 41 40 #if 1 … … 64 63 if(rField_is_Q (r)) 65 64 { 66 return QlogSize (n);65 return nlQlogSize (n, r->cf); 67 66 } 68 67 else … … 178 177 } 179 178 #endif 180 struct snumber_dummy181 {182 mpz_t z;183 mpz_t n;184 #if defined(LDEBUG)185 int debug;186 #endif187 BOOLEAN s;188 };189 typedef struct snumber_dummy *number_dummy;190 191 192 int QlogSize (number n)193 {194 long nl=n_Size(n,currRing->cf);195 if (nl==0L) return 0;196 if (nl==1L)197 {198 long i = n_Int(n,currRing->cf);199 unsigned long v;200 v = (i >= 0) ? i : -i;201 int r = 0;202 203 while(v >>= 1)204 {205 r++;206 }207 return r + 1;208 }209 //assume denominator is 0210 number_dummy nn=(number_dummy)n;211 return mpz_sizeinbase (nn->z, 2);212 }213 179 214 180 #ifdef LEN_VAR3 … … 219 185 if(rField_is_Q (currRing)) 220 186 { 221 c = QlogSize (coef);187 c = nlQlogSize (coef, currRing->cf); 222 188 } 223 189 else … … 250 216 if(rField_is_Q (currRing)) 251 217 { 252 c = QlogSize (coef);218 c = nlQlogSize (coef, currRing->cf); 253 219 } 254 220 else … … 267 233 if(rField_is_Q (currRing)) 268 234 { 269 int modifier = QlogSize (pGetCoeff (b->coef[0]));235 int modifier = nlQlogSize (pGetCoeff (b->coef[0]), currRing->cf); 270 236 c += modifier; 271 237 } … … 297 263 if(rField_is_Q (currRing)) 298 264 { 299 c = QlogSize (coef);265 c = nlQlogSize (coef, currRing->cf); 300 266 } 301 267 else … … 323 289 if(rField_is_Q (currRing)) 324 290 { 325 c = QlogSize (coef);291 c = nlQlogSize (coef, currRing->cf); 326 292 } 327 293 else … … 340 306 if(rField_is_Q (currRing)) 341 307 { 342 int modifier = QlogSize (pGetCoeff (b->coef[0]));308 int modifier = nlQlogSize (pGetCoeff (b->coef[0]), currRing->cf); 343 309 c += modifier; 344 310 } … … 572 538 if(rField_is_Q (currRing)) 573 539 { 574 cs = QlogSize (coef);540 cs = nlQlogSize (coef, currRing->cf); 575 541 } 576 542 else … … 626 592 if(rField_is_Q (currRing)) 627 593 { 628 cs = QlogSize (coef);594 cs = nlQlogSize (coef, currRing->cf); 629 595 } 630 596 else … … 635 601 if(rField_is_Q (currRing)) 636 602 { 637 int modifier = QlogSize (pGetCoeff (bucket->coef[0]));603 int modifier = nlQlogSize (pGetCoeff (bucket->coef[0]), currRing->cf); 638 604 cs += modifier; 639 605 } -
kernel/tgb_internal.h
r9bfdcf r24cabe 64 64 #include <kernel/kstd1.h> 65 65 #include <polys/kbuckets.h> 66 #include <libpolys/coeffs/modulop.h> 66 67 67 68 class PolySimple … … 621 622 //assume(impl.find(p_Copy(term,currRing))==impl.end()); 622 623 //assume(len==pLength(nf)); 623 assume(n _IsOne(p_GetCoeff(term,currRing),currRing->cf));624 assume(npIsOne(p_GetCoeff(term,currRing),currRing->cf)); 624 625 if (term==nf) 625 626 { … … 789 790 number coef_bak=p_GetCoeff(t,c->r); 790 791 791 p_SetCoeff(t,n _Init(1,c->r->cf),c->r);792 assume(n _IsOne(p_GetCoeff(c->strat->S[i],c->r),c->r->cf));792 p_SetCoeff(t,npInit(1,c->r->cf),c->r); 793 assume(npIsOne(p_GetCoeff(c->strat->S[i],c->r),c->r->cf)); 793 794 number coefstrat=p_GetCoeff(c->strat->S[i],c->r); 794 795 … … 796 797 poly exp_diff=cache->temp_term; 797 798 p_ExpVectorDiff(exp_diff,t,c->strat->S[i],c->r); 798 p_SetCoeff(exp_diff,n _Neg(n_Invers(coefstrat,c->r->cf),c->r->cf),c->r);799 p_SetCoeff(exp_diff,npNeg(npInvers(coefstrat,c->r->cf),c->r->cf),c->r); 799 800 p_Setm(exp_diff,c->r); 800 801 assume(c->strat->S[i]!=NULL); … … 816 817 } else { 817 818 number coef_bak=p_GetCoeff(t,c->r); 818 number one=n _Init(1, c->r->cf);819 number one=npInit(1, c->r->cf); 819 820 p_SetCoeff(t,one,c->r); 820 821 … … 933 934 const tgb_uint32 prime=n_GetChar(currRing->cf); 934 935 const tgb_uint32 c=F4mat_to_number_type(coef); 935 assume(!(n _IsZero(coef,currRing->cf)));936 assume(!(npIsZero(coef,currRing->cf))); 936 937 for(j=0;j<len;j=j+256) 937 938 { … … 957 958 int idx=idx_array[i]; 958 959 assume(bpos<256); 959 assume(!(n _IsZero((number)(long) buffer[bpos],currRing->cf)));960 temp_array[idx]=F4mat_to_number_type(n _Add((number)(long) temp_array[idx], (number)(long) buffer[bpos++],currRing->cf));960 assume(!(npIsZero((number)(long) buffer[bpos],currRing->cf))); 961 temp_array[idx]=F4mat_to_number_type(npAddM((number)(long) temp_array[idx], (number)(long) buffer[bpos++],currRing->cf)); 961 962 assume(idx<temp_size); 962 963 } … … 979 980 const tgb_uint32 prime=n_GetChar(currRing->cf); 980 981 const tgb_uint32 c=F4mat_to_number_type(coef); 981 assume(!(n _IsZero(coef,currRing->cf)));982 assume(!(npIsZero(coef,currRing->cf))); 982 983 for(j=0;j<len;j=j+256) 983 984 { … … 1004 1005 assume(bpos<256); 1005 1006 //assume(!(npIsZero((number) buffer[bpos]))); 1006 temp_array[i]=F4mat_to_number_type(n _Add((number)(long) temp_array[i], (number)(long) buffer[bpos++],currRing->cf));1007 temp_array[i]=F4mat_to_number_type(npAddM((number)(long) temp_array[i], (number)(long) buffer[bpos++],currRing->cf)); 1007 1008 assume(i<temp_size); 1008 1009 } … … 1029 1030 for(i=0;i<len;i++) 1030 1031 { 1031 temp_array[i]=F4mat_to_number_type(n _Add((number)(long) temp_array[i], (number)(long) row[i],currRing->cf));1032 temp_array[i]=F4mat_to_number_type(npAddM((number)(long) temp_array[i], (number)(long) row[i],currRing->cf)); 1032 1033 assume(i<temp_size); 1033 1034 } … … 1054 1055 { 1055 1056 1056 temp_array[i]=F4mat_to_number_type(n _Sub((number)(long) temp_array[i], (number)(long) row[i],currRing->cf));1057 temp_array[i]=F4mat_to_number_type(npSubM((number)(long) temp_array[i], (number)(long) row[i],currRing->cf)); 1057 1058 assume(i<temp_size); 1058 1059 } … … 1074 1075 { 1075 1076 int idx=idx_array[j]; 1076 temp_array[idx]=F4mat_to_number_type( (number_type)(long)n _Add((number) (long)temp_array[idx],(number)(long) coef_array[j],currRing->cf));1077 temp_array[idx]=F4mat_to_number_type( (number_type)(long)npAddM((number) (long)temp_array[idx],(number)(long) coef_array[j],currRing->cf)); 1077 1078 assume(idx<temp_size); 1078 1079 } … … 1092 1093 { 1093 1094 int idx=idx_array[j]; 1094 temp_array[idx]=F4mat_to_number_type( (number_type)(long) n _Sub((number) (long)temp_array[idx],(number)(long) coef_array[j],currRing->cf));1095 temp_array[idx]=F4mat_to_number_type( (number_type)(long) npSubM((number) (long)temp_array[idx],(number)(long) coef_array[j],currRing->cf)); 1095 1096 assume(idx<temp_size); 1096 1097 } … … 1104 1105 int temp_size=cache->nIrreducibleMonomials; 1105 1106 memset(temp_array,0,temp_size_bytes); 1106 number minus_one=n _Init(-1,currRing->cf);1107 number minus_one=npInit(-1,currRing->cf); 1107 1108 int i; 1108 1109 for(i=0;i<len;i++) … … 1155 1156 if (red.ref->value_len==NoroCache<number_type>::backLinkCode) 1156 1157 { 1157 temp_array[red.ref->term_index]=F4mat_to_number_type( n _Add((number)(long) temp_array[red.ref->term_index],red.coef,currRing->cf));1158 temp_array[red.ref->term_index]=F4mat_to_number_type( npAddM((number)(long) temp_array[red.ref->term_index],red.coef,currRing->cf)); 1158 1159 } 1159 1160 else … … 1203 1204 assume(coef_array[j]!=0); 1204 1205 CoefIdx<number_type> ci; 1205 ci.coef=F4mat_to_number_type(n _Mult((number)(long) coef,(number)(long) coef_array[j],currRing->cf));1206 ci.coef=F4mat_to_number_type(npMultM((number)(long) coef,(number)(long) coef_array[j],currRing->cf)); 1206 1207 ci.idx=idx_array[j]; 1207 1208 pairs[pos++]=ci; … … 1218 1219 assume(coef_array[j]!=0); 1219 1220 CoefIdx<number_type> ci; 1220 ci.coef=F4mat_to_number_type(n _Mult((number)(long) coef,(number)(long) coef_array[j],currRing->cf));1221 ci.coef=F4mat_to_number_type(npMultM((number)(long) coef,(number)(long) coef_array[j],currRing->cf)); 1221 1222 assume(ci.coef!=0); 1222 1223 ci.idx=j; … … 1253 1254 assume(coef_array[j]!=0); 1254 1255 CoefIdx<number_type> ci; 1255 ci.coef=F4mat_to_number_type(n _Neg((number)(long) coef_array[j],currRing->cf));1256 ci.coef=F4mat_to_number_type(npNegM((number)(long) coef_array[j],currRing->cf)); 1256 1257 assume(ci.coef!=0); 1257 1258 ci.idx=j; … … 1280 1281 assume(coef_array[j]!=0); 1281 1282 CoefIdx<number_type> ci; 1282 ci.coef=F4mat_to_number_type(n _Neg((number)coef_array[j],currRing->cf));1283 ci.coef=F4mat_to_number_type(npNegM((number)coef_array[j],currRing->cf)); 1283 1284 ci.idx=idx_array[j]; 1284 1285 pairs[pos++]=ci; … … 1308 1309 CoefIdx<number_type>* pairs=(CoefIdx<number_type>*) cache->tempBuffer; //omalloc(together*sizeof(CoefIdx<number_type>)); 1309 1310 int pos=0; 1310 const number one=n _Init(1, currRing->cf);1311 const number minus_one=n _Init(-1, currRing->cf);1311 const number one=npInit(1, currRing->cf); 1312 const number minus_one=npInit(-1, currRing->cf); 1312 1313 for(i=0;i<len;i++) 1313 1314 { … … 1388 1389 else 1389 1390 { 1390 pairs[act].coef=F4mat_to_number_type(n _Add((number)(long)pairs[act].coef,(number)(long)pairs[i].coef,currRing->cf));1391 pairs[act].coef=F4mat_to_number_type(npAddM((number)(long)pairs[act].coef,(number)(long)pairs[i].coef,currRing->cf)); 1391 1392 } 1392 1393 } … … 1555 1556 for(i=startIndices[row];i<ncols;i++) 1556 1557 { 1557 row_array[i]=F4mat_to_number_type(n _Mult((number)(long) row_array[i],(number)(long) coef,currRing->cf));1558 row_array[i]=F4mat_to_number_type(npMult((number)(long) row_array[i],(number)(long) coef,currRing->cf)); 1558 1559 } 1559 1560 } … … 1567 1568 assume(start<ncols); 1568 1569 int other_row; 1569 assume(!(n _IsZero((number)(long) row_array[start],currRing->cf)));1570 if (!(n _IsOne((number)(long) coef,currRing->cf)))1571 multiplyRow(r,F4mat_to_number_type(n _Invers((number)(long) coef,currRing->cf)));1572 assume(n _IsOne((number)(long) row_array[start],currRing->cf));1570 assume(!(npIsZero((number)(long) row_array[start],currRing->cf))); 1571 if (!(npIsOne((number)(long) coef,currRing->cf))) 1572 multiplyRow(r,F4mat_to_number_type(npInvers((number)(long) coef,currRing->cf))); 1573 assume(npIsOne((number)(long) row_array[start],currRing->cf)); 1573 1574 int lastIndex=modP_lastIndexRow(row_array, ncols); 1574 number minus_one=n _Init(-1, currRing->cf);1575 number minus_one=npInit(-1, currRing->cf); 1575 1576 for (other_row=r+1;other_row<nrows;other_row++) 1576 1577 { … … 1580 1581 int i; 1581 1582 number_type* other_row_array=rows[other_row]; 1582 number coef2=n _Neg((number)(long) other_row_array[start],currRing->cf);1583 number coef2=npNeg((number)(long) other_row_array[start],currRing->cf); 1583 1584 if (coef2==minus_one) 1584 1585 { … … 1586 1587 { 1587 1588 if (row_array[i]!=zero) 1588 other_row_array[i]=F4mat_to_number_type(n _Sub((number)(long) other_row_array[i], (number)(long) row_array[i],currRing->cf));1589 other_row_array[i]=F4mat_to_number_type(npSubM((number)(long) other_row_array[i], (number)(long) row_array[i],currRing->cf)); 1589 1590 } 1590 1591 } … … 1595 1596 { 1596 1597 if (row_array[i]!=zero) 1597 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));1598 other_row_array[i]=F4mat_to_number_type(npAddM(npMult(coef2,(number)(long) row_array[i],currRing->cf),(number)(long) other_row_array[i],currRing->cf)); 1598 1599 } 1599 1600 } 1600 1601 updateStartIndex(other_row,start); 1601 assume(n _IsZero((number)(long) other_row_array[start],currRing->cf));1602 assume(npIsZero((number)(long) other_row_array[start],currRing->cf)); 1602 1603 } 1603 1604 } … … 1606 1607 { 1607 1608 number_type* row_array=rows[row]; 1608 assume((lower_bound<0)||(n _IsZero((number)(long) row_array[lower_bound],currRing->cf)));1609 assume((lower_bound<0)||(npIsZero((number)(long) row_array[lower_bound],currRing->cf))); 1609 1610 int i; 1610 1611 //number_type zero=npInit(0); … … 1661 1662 for(i=startIndices[row];i<ncols;i++) 1662 1663 { 1663 row_array[i]=F4mat_to_number_type(n _Mult((number)(long) row_array[i],(number)(long) coef,currRing->cf));1664 row_array[i]=F4mat_to_number_type(npMult((number)(long) row_array[i],(number)(long) coef,currRing->cf)); 1664 1665 } 1665 1666 } … … 1690 1691 { 1691 1692 assume(startIndices[i]<ncols); 1692 assume(!(n _IsZero((number)(long) rows[i][startIndices[i]],currRing->cf)));1693 assume(!(npIsZero((number)(long) rows[i][startIndices[i]],currRing->cf))); 1693 1694 assume(startIndices[i]>=i); 1694 1695 updateLastReducibleIndex(i,nonZeroUntil+1); … … 1719 1720 number_type zero=0;//npInit(0); 1720 1721 number_type* row_array=rows[r]; 1721 assume((!(n _IsZero((number)(long) row_array[start],currRing->cf))));1722 assume((!(npIsZero((number)(long) row_array[start],currRing->cf)))); 1722 1723 assume(start<ncols); 1723 1724 int other_row; 1724 if (!(n _IsOne((number)(long) row_array[r],currRing->cf)))1725 if (!(npIsOne((number)(long) row_array[r],currRing->cf))) 1725 1726 { 1726 1727 //it should be one, but this safety is not expensive 1727 multiplyRow(r, F4mat_to_number_type(n _Invers((number)(long) row_array[start],currRing->cf)));1728 multiplyRow(r, F4mat_to_number_type(npInvers((number)(long) row_array[start],currRing->cf))); 1728 1729 } 1729 1730 int lastIndex=modP_lastIndexRow(row_array, ncols); … … 1736 1737 { 1737 1738 number_type* other_row_array=rows[other_row]; 1738 number coef=n _Neg((number)(long) other_row_array[start],currRing->cf);1739 assume(!(n _IsZero(coef,currRing->cf)));1739 number coef=npNeg((number)(long) other_row_array[start],currRing->cf); 1740 assume(!(npIsZero(coef,currRing->cf))); 1740 1741 int i; 1741 1742 assume(start>startIndices[other_row]); … … 1743 1744 { 1744 1745 if (row_array[i]!=zero) 1745 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));1746 other_row_array[i]=F4mat_to_number_type(npAddM(npMult(coef,(number)(long)row_array[i],currRing->cf),(number)(long)other_row_array[i],currRing->cf)); 1746 1747 } 1747 1748 updateLastReducibleIndex(other_row,r); -
libpolys/coeffs/longrat.h
r9bfdcf r24cabe 131 131 132 132 int nlSize(number n, const coeffs r); 133 134 static inline int nlQlogSize (number n, const coeffs r) 135 { 136 assume( rField_is_Q (r) ); 137 138 long nl=nlSize(n,r); 139 if (nl==0L) return 0; 140 if (nl==1L) 141 { 142 long i = SR_TO_INT (n); 143 unsigned long v; 144 v = (i >= 0) ? i : -i; 145 int r = 0; 146 147 while(v >>= 1) 148 { 149 r++; 150 } 151 return r + 1; 152 } 153 //assume denominator is 0 154 number nn=(number) n; 155 return mpz_sizeinbase (nn->z, 2); 156 } 157 133 158 number nlGetDenom(number &n, const coeffs r); 134 159 number nlGetNumerator(number &n, const coeffs r);
Note: See TracChangeset
for help on using the changeset viewer.