Ian Smith <smi...@nimnet.asn.au> wrote: > In freebsd-questions Digest, Vol 335, Issue 11, Message: 4 > On Sat, 06 Nov 2010 01:00:34 -0700 per...@pluto.rain.com wrote: > > Julian Fagir <g...@physik.tu-berlin.de> wrote: > > > > Does anyone has a "generate-pi.c" source code? > > ... > > > 1 #include <stdlib.h> > > > 2 #include <string.h> > > > 3 #include <stdio.h> > > > 4 > > > 5 // Change this for a more accurate result. > > > 6 long max = 100000000; > > > 7 double a, b; > > > 8 double pi; > > > 9 long counter; > > > 10 long i; > > > 11 > > > 12 int main() { > > > 13 for (i = 0; i< max; i++) { > > > 14 a = drand48(); > > > 15 b = drand48(); > > > 16 if (a*a + b*b <= 1) > > > 17 counter++; > > > 18 } > > > 19 pi = 4*counter; > > Surely that should be 'pi = 4 * counter / max;' otherwise even if the > integer counter were only 1 (of 100000000), pi would already be 4 :)
The part I snipped out included a note that it was only generating the digits, not trying to show the decimal point placed properly. With that understanding, and as long as max is a (large-ish) power of 10, the division is not needed. (If the division were to be inserted, at least one of its operands would need to be cast to double, or pi would likely be reported as 3.0000 due to truncation.) An approach more in keeping with the original would involve using sprintf, and then inserting the decimal point into the resulting string :) _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"