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
