|
|
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 |
|
|
|