Modern Fortran Explained: Incorporating Fortran 2018 (Numerical Mathematics