#include #include //#include "mpi.h" #include #include //#include int main(int argc, char** argv) { long n, i; double total; struct timeval tv; struct timezone tz; long starttimeSec, starttimeMicro; long endtimeSec, endtimeMicro; long totalSec, totalMicro; // MPI_Init( &argc, &argv ); if (argc > 1) n = atoi(argv[1]); else n = 1000; gettimeofday(&tv, &tz); starttimeSec = tv.tv_sec; starttimeMicro = tv.tv_usec; printf("Time(0)=%d sec %d microsec\n", starttimeSec, starttimeMicro); // printf("Time(0)=%u\n", time(0)); total = 0.0; for(i = 1; i <= n; i++) { if(i % 4 == 1) { total += 1.0 / i; } else if (i % 4 == 3) { total -= 1.0 / i; } } gettimeofday(&tv, &tz); endtimeSec = tv.tv_sec; endtimeMicro = tv.tv_usec; printf("Time = %d sec %d microsec\n", endtimeSec, endtimeMicro); if (endtimeSec > starttimeSec) { totalSec = endtimeSec-starttimeSec; totalMicro = endtimeMicro + (1000000 - starttimeMicro); } else { totalSec = 0; totalMicro = endtimeMicro - starttimeMicro; } // printf("Time(0)=%u\n", ftime(0)); printf("Pi = %.32f for %d iterations.\n", total * 4, n); printf("Real PI = %.32lf\n", M_PI); printf("Percent error = %.32lf\n", fabs((total*4)-M_PI)/M_PI * 100); printf("Time: %d sec and %d microsec\n", totalSec, totalMicro); // MPI_Finalize(); return 0; } /* gcc -o calculatePi.c ./calculatePi 100000000 Time(0)=1051631280 sec 105197 microsec Time = 1051631287 sec 82038 microsec Pi = 3.14159263359032303597473401168827 for 100000000 iterations. Real PI = 3.14159265358979311599796346854419 Percent error = 0.00000063660290449083210968897776 Time: 7 sec and 976841 microsec */