digitalmars.D.bugs - dmd or linker bug
- Bob (33/33) Jan 20 2005 // Eratosthenes Sieve - Prime Number Calc
// Eratosthenes Sieve - Prime Number Calc
import std.c.stdio, std.date;
const int nloops=10000;
const int size=8191;
// *********** dmd V0.111 and dmd V0.110 bug: ************
// If the following array is changed to type 'bit', the
// last 'printf()' statement does not display any number.
// This bug reappears even if the array declaration is
// changed to 'D' style and also if '1' and '0' are
// changed to 'true' and 'false' respectively.
//
// Quickfix: If the array is moved inside the 'main()'
// function, the bug does not occur. Linker problem rather
// than dmd problem?
// *******************************************************
char flagarr[size];
int i, j, k, prime, pcount;
d_time tstart, elapsed;
int main() {
printf("\nPerforming %d loops ...\n",nloops);
tstart=getUTCtime();
for (j=0; j<nloops; j++) {
pcount=0; flagarr[]=1;
for (i=0; i<size; i++) {
if (flagarr[i]) {
pcount++; prime=i+i+3; k=i+prime;
while (k<size) { flagarr[k]=0; k+=prime; }
} } }
elapsed=getUTCtime()-tstart;
printf("%g seconds (%d primes)\n",
1.0*elapsed/TicksPerSecond,pcount);
return(0);
}
Jan 20 2005








Bob <Bob_member pathlink.com>