Changeset 1821d6 in git for kernel/tgb.cc
- Timestamp:
- May 31, 2005, 3:24:50 PM (19 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- e1b6944781656194be38a6eb2169d671cce4b260
- Parents:
- 633c14f4823fb23f2af377f34acabec7a63caa49
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/tgb.cc
r633c14 r1821d6 5 5 * Computer Algebra System SINGULAR * 6 6 ****************************************/ 7 /* $Id: tgb.cc,v 1. 29 2005-05-30 11:44:07bricken Exp $ */7 /* $Id: tgb.cc,v 1.30 2005-05-31 13:24:50 bricken Exp $ */ 8 8 /* 9 9 * ABSTRACT: slimgb and F4 implementation … … 14 14 #include "tgbgauss.h" 15 15 #include "F4.h" 16 #include "longrat.h" 16 17 static const int bundle_size=100; 17 18 #if 1 … … 64 65 #ifdef LEN_VAR3 65 66 // 3.Variante: Laenge: Platz fuer Leitk * Monomanzahl 67 68 int QlogSizeClassic(number bigint){ 69 if(nlIsZero(bigint)) return 0; 70 number absv=nlCopy(bigint); 71 number two=nlInit(2); 72 if(!(nlGreaterZero(absv))) 73 absv=nlNeg(absv); 74 int ls=0; 75 number comp=nlInit(1); 76 BOOLEAN equal=FALSE; 77 while(!(nlGreater(comp,absv))) { 78 ls++; 79 if (nlEqual(comp,absv)){ 80 equal=TRUE; 81 break; 82 } 83 number temp=comp; 84 comp=nlMult(comp,two); 85 nlDelete(&temp, currRing); 86 87 } 88 if(!equal) 89 ls++; 90 nlDelete(&two,currRing); 91 nlDelete(&absv,currRing); 92 nlDelete(&comp,currRing); 93 //Print("%d\n",ls); 94 return ls; 95 } 96 int QlogSize(number bigint){ 97 int size=nlSize(bigint); 98 if(size<=1) return QlogSizeClassic(bigint); 99 else return sizeof(mp_limb_t)*size*8; 100 } 66 101 inline int pSLength(poly p,int l) 67 102 { 68 int c=nSize(pGetCoeff(p)); 103 int c; 104 number coef=pGetCoeff(p); 105 if (rField_is_Q(currRing)){ 106 c=QlogSize(coef); 107 } 108 else 109 c=nSize(coef); 110 69 111 return c*l /*pLength(p)*/; 70 112 } 113 //! TODO CoefBuckets berücksichtigen 71 114 int kSBucketLength(kBucket* b, poly lm=NULL) 72 115 { 73 116 int s=0; 74 117 int c; 118 number coef; 75 119 if(lm==NULL) 76 c=nSize(pGetCoeff(kBucketGetLm(b))); 120 coef=pGetCoeff(kBucketGetLm(b)); 121 //c=nSize(pGetCoeff(kBucketGetLm(b))); 77 122 else 78 c=nSize(pGetCoeff(lm)); 123 coef=pGetCoeff(lm); 124 //c=nSize(pGetCoeff(lm)); 125 if (rField_is_Q(currRing)){ 126 c=QlogSize(coef); 127 } 128 else 129 c=nSize(coef); 130 79 131 int i; 80 132 for (i=b->buckets_used;i>=0;i--) … … 83 135 s+=b->buckets_length[i] /*pLength(b->buckets[i])*/; 84 136 } 137 #ifdef HAVE_COEF_BUCKETS 138 assume(b->buckets[0]==kBucketGetLm(b)); 139 if (b->coef[0]!=NULL){ 140 141 if (rField_is_Q(currRing)){ 142 int modifier=QlogSize(pGetCoeff(b->coef[0])); 143 c+=modifier; 144 } 145 else{ 146 int modifier=nSize(pGetCoeff(b->coef[0])); 147 c*=modifier;} 148 } 149 #endif 85 150 return s*c; 86 151 } … … 178 243 int s=0; 179 244 if (c->is_char0) 180 s=kSBucketLength(bucket,this->p); 245 //s=kSBucketLength(bucket,this->p); 246 s=kSBucketLength(bucket,NULL); 181 247 else 182 248 { … … 2113 2179 } 2114 2180 ideal t_rep_gb(ring r,ideal arg_I, BOOLEAN F4_mode){ 2181 2182 // Print("QlogSize(0) %d, QlogSize(1) %d,QlogSize(-2) %d, QlogSize(5) %d\n", QlogSize(nlInit(0)),QlogSize(nlInit(1)),QlogSize(nlInit(-2)),QlogSize(nlInit(5))); 2183 2184 2185 2115 2186 if (TEST_OPT_PROT) 2116 2187 if (F4_mode)
Note: See TracChangeset
for help on using the changeset viewer.