program reduce ! modified from Mattson, Sanders and McGill's book ! Patterns for Parallel Programming integer :: i, num_steps double precision :: x, pi, step, sum sum =0.0d0 nsteps = 1000000000 step = 1.0d0 / dble(nsteps) !$OMP PARALLEL DO PRIVATE(X) REDUCTION(+:SUM) do i = 1, nsteps x = (dble(i) + 0.5d0) * step sum = sum + 4.0d0 /(1.0d0 + x*x) enddo !$OMP END PARALLEL DO pi = step * sum print *, "estimate of Pi with is ",pi end program reduce