aboutsummaryrefslogtreecommitdiff
path: root/src/quadratures.f90
blob: 9e6bd3841e7a0dad71c1bbb20a3d56771e7cd3bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
PROGRAM quadratures

  INTERFACE
     FUNCTION integrate(ibeg, iend, myfun, p) result(value)
       IMPLICIT none
       ! beginning of integration interval
       real(kind=8), intent(in) :: ibeg
       ! ending of integration interval
       real(kind=8), intent(in) :: iend
       ! function to be integrated
       procedure(funint) :: myfun
       ! polynomial order
       integer(kind=4), intent(in) :: p
       ! result of integration
       real(kind=8) :: value
     END FUNCTION integrate
  END INTERFACE
  
  INTERFACE
     FUNCTION funint(x) result(y)
       IMPLICIT none
       real(kind=8), intent(in) :: x
       real(kind=8) :: y
     END FUNCTION funint
  END INTERFACE

  procedure(funint), pointer :: ptr

  ptr => my_exp

  write(*,*) my_exp(2.0_8)
  
CONTAINS

  FUNCTION my_exp(x) result(y)
    real(kind=8), intent(in) :: x
    real(kind=8) :: y
    y = exp(x)
  END FUNCTION my_exp
  
END PROGRAM quadratures