      implicit none
      real*8 x1,x2,stepx,x,sum,sum1,sum2,f,y1,y2,pi
      integer nx,ix
      
      pi=datan(1.0d0)*4.0d0
      
      x1=0.0d0
      x2=1.0d0
      nx=100
      stepx=(x2-x1)/dfloat(nx)
      
c     台形法
         sum=0.0d0
         do ix=1,nx-1
          x=x1+dfloat(ix)*stepx
          sum=sum+f(x)
         end do
         y1=((f(x1) + f(x2))/2.0d0 +sum)*stepx
      
c     シンプソン法
         sum1=0.0d0
         do ix=1,nx-1,2
          x=x1+dfloat(ix)*stepx
          sum1=sum1+f(x)
         end do
         
         sum2=0.0d0
         do ix=2,nx-2,2
          x=x1+dfloat(ix)*stepx
          sum2=sum2+f(x)
        end do
        y2=(f(x1) + 4*sum1 + 2*sum2 + f(x2))*stepx/3
        
        
      write(*,*)'分割数　　　　台形法　　　　　　　　　Simpson法'       
      write(*,'(I7,5x,F21.16,3x,F21.16)')int(nx),y1,y2
      write(*,'(12x,F21.16,3x,F21.16)')pi,pi
      
      stop
      end
      
      real*8 function f(x)
      real*8 x
      f=4.0d0*dsqrt(1-x**2)
      return
      end
      