I.e. I would change these two lines to:
```fortran
     real(dp), intent(in)    :: x(0:)
     real(dp), intent(out) :: c(0:, 0:)
```
Notice only using `intent(out)` and the F90 arrays.