EXP failure with very small negative value

Yeah take a look at this thread for similar issue/explanation https://fortran-lang.discourse.group/t/can-floating-point-literals-be-adapted-by-the-compiler-to-double-precision-variable/