Source: https://j3-fortran.org/doc/year/18/18-007r1.pdf