123456789101112131415161718192021 |
- program scaltest
- use iso_c_binding
- implicit none
- interface
- subroutine scalprod(n, x_p, y_p, res) bind(c)
- use iso_c_binding
- integer(c_int), value :: n
- type(c_ptr), value :: x_p, y_p
- real(c_double) :: res
- end subroutine scalprod
- end interface
- type(c_ptr) :: x_pt, y_pt
- real(c_double), dimension(5), target :: a = (/ 1, 2, 3, 4, 5 /)
- real(c_double), dimension(5), target :: b = (/ 2, 3, 4, 5, 6 /)
- integer(c_int) :: n = size(a)
- real(c_double) :: res
- x_pt = c_loc(a)
- y_pt = c_loc(b)
- call scalprod(n, x_pt, y_pt, res)
- print *, res
- end program scaltest
|