According to https://fortran-lang.org/learn/best_practices/arrays/ assumed-size arrays are the least preferred form of array argument. Also `real(dp) :: dx(n)` is more self-documenting than `real(dp) :: dx(*)`.