diff --git a/intro_lab/pi.c b/intro_lab/pi.c index 4307c6afa22777edeba4e37ee6b85b0469fdd26b..59a6b6d2b726c10300dbca9c1763df4fe6065fe7 100644 --- a/intro_lab/pi.c +++ b/intro_lab/pi.c @@ -2,6 +2,8 @@ #include <math.h> #include <omp.h> +#define NSTEPS 134217728 + /* * This program computes pi as * \pi = 4 arctan(1) @@ -9,24 +11,23 @@ */ int main(int argc, char** argv) { - unsigned long nsteps = 100000000; - double dx = 1.0 / nsteps; - + long i; + double dx = 1.0 / NSTEPS; double pi = 0.0; + double start_time = omp_get_wtime(); - unsigned long i; - for (i = 0; i < nsteps; i++) + for (i = 0; i < NSTEPS; i++) { double x = (i + 0.5) * dx; pi += 1.0 / (1.0 + x * x); } - pi *= 4.0 * dx; + pi *= 4.0 * dx; double run_time = omp_get_wtime() - start_time; double ref_pi = 4.0 * atan(1.0); printf("pi with %ld steps is %.10f in %.6f seconds (error=%e)\n", - nsteps, pi, run_time, fabs(ref_pi - pi)); + NSTEPS, pi, run_time, fabs(ref_pi - pi)); return 0; } diff --git a/intro_lab/pi.f90 b/intro_lab/pi.f90 index c04529230f241c88e9ff69176e61ef4371f31d0c..127a5fe6c9b2703f9cbb2dc624f6a08e90b5ff57 100644 --- a/intro_lab/pi.f90 +++ b/intro_lab/pi.f90 @@ -8,25 +8,25 @@ use omp_lib implicit none -integer(kind=8) :: nsteps, i +integer(kind=8), parameter :: NSTEPS = 134217728 + +integer(kind=8) :: i real(kind=8) :: dx, x, pi, ref_pi real(kind=8) start_time, run_time -nsteps = 100000000 -dx = 1.0D0 / nsteps +dx = 1.0D0 / NSTEPS pi = 0.0D0 start_time = OMP_GET_WTIME() -do i = 1, nsteps +do i = 1, NSTEPS x = (i - 0.5D0) * dx pi = pi + 1.0D0 / (1.0D0 + x * x) enddo pi = pi * 4.0D0 * dx - run_time = OMP_GET_WTIME() - start_time ref_pi = 4.0D0 * atan(1.0D0) -print '("pi with ", i0, " steps is ", f16.10, " in ", f12.6, " seconds (error=", e12.6, ")")', nsteps, pi, run_time, abs(ref_pi - pi) +print '("pi with ", i0, " steps is ", f16.10, " in ", f12.6, " seconds (error=", e12.6, ")")', NSTEPS, pi, run_time, abs(ref_pi - pi) end program