program main double precision error double precision f double precision f1 double precision f2 integer i integer j integer m integer n integer seed double precision stdev double precision sterr double precision value double precision x(2) m = 2 n = 1000000 seed = 123456789 f1 = 0.0 f2 = 0.0 do i = 1, n call random_number ( harvest = x(1:m) ) value = f ( m, x ) f1 = f1 + value f2 = f2 + value * value end do f1 = f1 / dble ( n ) f2 = f2 / dble ( n - 1 ) stdev = sqrt ( f2 - f1 * f1 ) sterr = stdev / sqrt ( dble ( n ) ) error = abs ( f1 - 1.0D+00 ) write ( *, '(a)' ) ' ' write ( *, '(a)' ) ' N F stdev sterr err' write ( *, '(a)' ) ' ' write ( *, '(i7,2x,g14.6,2x,f10.4,2x,f10.4,2x,g8.2)' ) n, f1, stdev, sterr, error stop end function f ( m, x ) integer m double precision f integer i double precision value double precision x(m) value = 1.0 do i = 1, m value = value * abs ( 4.0 * x(i) - 2.0 ) end do f = value return end