Поймать целочисленные исключения в Фортран
Есть ли способ отловить целочисленные исключения сgfortran
или жеifort
как есть для ловли исключений с плавающей точкой?
Рассмотрим эту простую программу для расчета факториала:
program factorial
use, intrinsic :: iso_fortran_env
implicit none
integer(8) :: fac
real(REAL64) :: facR
integer,parameter :: maxOrder = 30
integer :: i
fac = 1 ; facR = 1.e0_REAL64
do i=2,maxOrder
fac=fac*i ; facR=facR*real(i,REAL64)
write(*,*) i, fac, facR
enddo ! i
end program
В какой-то момент произойдет переполнение - дляinteger(8)
как показано здесь, это произойдет около 21. Но без расчета с использованием поплавков в качестве справки я не смог быне могу сказать наверняка ...