Hello, Fortran Community! I am currently writing a subroutine in Fortran that works with arrays. Among other dummy variables, there is an input array y0
and an output one y1
. Part of the header of my subroutine looks like this:
integer, parameter :: rp = kind(1.0d0)
real(kind = rp), intent(in) :: x0, y0(:), h, smin, smax
real(kind = rp), intent(out) :: y1(size(y0))
I am wondering, in the spirit of good programming practices/preferred programming styles, is it preferred to declare the arrays y0
and y1
with the dimension
attribute? Like this:
integer, parameter :: rp = kind(1.0d0)
real(kind = rp), intent(in) :: x0, h, smin, smax
real(kind = rp), dimension(:), intent(in) :: y0
real(kind = rp), dimension(size(y0)), intent(out) :: y1
The first one seems shorter and more elegant to me, but the latter seems more clear.
On a second related matter, considering that y1
has the same shape as y0
, would it be considered correct to declare it as follows?
real(kind = rp), intent(out) :: y1(:)
Or should I use the y1(size(y0))
version?
Thank you very much in advance for your answers!