Changeset d322f7 in git
- Timestamp:
- Oct 4, 2010, 11:31:51 AM (14 years ago)
- Branches:
- (u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', '38dfc5131670d387a89455159ed1e071997eec94')
- Children:
- 9257fe4f6b84d0ceb446c0c736dc18646bb92432
- Parents:
- e0cb6c27360dbf0c972201dd6f5136ef5a791f4f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/misc_ip.cc
re0cb6c rd322f7 110 110 } 111 111 112 void setListEntry_ui(lists L, int index, long ui)112 void setListEntry_ui(lists L, int index, unsigned long ui) 113 113 { /* assumes n > 0 */ 114 114 /* try to fit nn into an int: */ 115 if (((ui<<3)>>3)==ui) 116 { 117 L->m[index].rtyp = INT_CMD; L->m[index].data = (void*)ui; 115 int i=(int)ui; 116 if ((((unsigned long)i)==ui) && (((i<<3)>>3)==i)) 117 { 118 L->m[index].rtyp = INT_CMD; L->m[index].data = (void*)i; 118 119 } 119 120 else 120 121 { 121 number nn = nlInit(ui,NULL); 122 number nn = nlRInit(ui); 123 mpz_set_ui(nn->z,ui); 122 124 L->m[index].rtyp = BIGINT_CMD; L->m[index].data = (void*)nn; 123 125 } … … 197 199 if (!nlIsZero(n)) 198 200 { 199 if (!nlGreaterZero(n)) 201 if (!nlGreaterZero(n)) 200 202 { 201 203 positive=-1; … … 219 221 mpz_sqrt(sr, nn); 220 222 if ((mpz_cmp_ui(b, 0) == 0) || (mpz_cmp(pb, sr) > 0)) mpz_set(pb, sr); 221 intlimit=mpz_get_ui(pb);223 unsigned long limit=mpz_get_ui(pb); 222 224 if ((limit==0)||(mpz_cmp_ui(pb,limit)!=0)) limit=1<<31; 223 225 while (p_ui <=limit) … … 230 232 //mpz_sqrt(sr, nn); 231 233 //if ((mpz_cmp_ui(b, 0) == 0) || (mpz_cmp(pb, sr) > 0)) mpz_set(pb, sr); 232 if (mpz_size1(nn)<=2) 234 if (mpz_size1(nn)<=2) 233 235 { 234 236 mpz_sqrt(sr, nn); … … 236 238 unsigned long l=mpz_get_ui(sr); 237 239 if (l<limit) limit=l; 238 239 240 241 242 240 if (mpz_size1(nn)<=1) 241 { 242 unsigned long nn_ui=mpz_get_ui(nn); 243 while ((p_ui <=limit)&&(nn_ui>1)) 244 { 243 245 divTimes_ui_ui(&nn_ui, p_ui, &tt); 244 246 if (tt > 0) … … 246 248 setListEntry_ui(primes, index, p_ui); 247 249 multiplicities[index++] = tt; 248 250 if (nn_ui>(limit/6)) limit=nn_ui/6; 249 251 } 250 252 p_ui +=add; 251 253 add += 2; if (add == 6) add = 2; 252 253 254 255 254 } 255 mpz_set_ui(nn,nn_ui); 256 break; 257 } 256 258 } 257 259 }
Note: See TracChangeset
for help on using the changeset viewer.