Есть ли способ поймать целочисленные исключения с gfortran
или ifort
как есть для ловли исключений с плавающей запятой?Исключение целых целых чисел в Fortran
Рассмотрим эту простую программу для вычисления факториала:
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. Но без расчета с использованием поплавков в качестве ссылка я не мог точно сказать ...