|
|
module coddity
|
|
|
use iso_c_binding, only: c_double, c_int, c_int64_t
|
|
|
implicit none
|
|
|
contains
|
|
|
subroutine c_add(a, b, c) bind(c, name="c_add")
|
|
|
real(c_double), intent(in) :: a, b
|
|
|
real(c_double), intent(out) :: c
|
|
|
c = a + b
|
|
|
end subroutine c_add
|
|
|
|
|
|
function wat(x, y) result(z) bind(c)
|
|
|
integer(c_int), intent(in) :: x, y
|
|
|
integer(c_int) :: z
|
|
|
|
|
|
z = x + 7
|
|
|
end function wat
|
|
|
|
|
|
subroutine c_add_int64(a, b, c) bind(c)
|
|
|
integer(c_int64_t), intent(in) :: a, b
|
|
|
integer(c_int64_t), intent(out) :: c
|
|
|
c = a + b
|
|
|
end subroutine c_add_int64
|
|
|
|
|
|
subroutine add_arr(A, B, C)
|
|
|
integer(c_int64_t), intent(in) :: A(3)
|
|
|
integer(c_int64_t), intent(in) :: B(3)
|
|
|
integer(c_int64_t), intent(out) :: C(3)
|
|
|
integer :: j
|
|
|
|
|
|
do j = 1, 3
|
|
|
C(j) = A(j)+B(j)
|
|
|
end do
|
|
|
end subroutine
|
|
|
end module coddity
|
|
|
|