Кажется, это работает для меня.
Определить параметр
double precision,parameter :: inf = 1.d0/0.d0
Затем используйте его в тестах if.
real :: sng
double precision :: dbl1,dbl2
sng = 1.0/0.0
dbl1 = 1.d0/0.d0
dbl2 = -log(0.d0)
if(sng == inf) write(*,*)"sng = inf"
if(dbl1 == inf) write(*,*)"dbl1 = inf"
if(dbl2 == inf) write(*,*)"dbl2 = inf"
read(*,*)
При компиляции с помощью ifort & run я получаю
sng = inf
dbl1 = inf
dbl2 = inf