Fortran中的算术溢出

时间:2019-06-21 14:12:52

标签: fortran

我正在使用REAL之类的4*10**11数字,编译器抱怨数字太大,它说

  

错误:在(1)处算术溢出

我尝试使用REAL*8REAL*16,但这不能解决问题

我该如何解决这个问题?

MWE可能是这样:

  INTEGER nioni
  REAL fg,t,num,c1,minimo,massimo,en0,alpha,func
  fg=0.047214

  t=0.00000015

  num=3688100.
  c1=5.30
  minimo=0.469185*fg*t
  massimo=7.4*10**11*fg*t

  DO nioni=1, 10
   en0=(0.1+(20.-0.1)*rand())
   func=num*(1./(en0+c1)**c2)*en0**c3*fg*t
   alpha=minimo+(massimo-minimo)*rand()
   DO WHILE(alpha.gt.func)
    en0=(0.1+(20.-0.1)*rand())
    func=num*(1./(en0+c1)**c2)*en0**c3*fg*t
    alpha=minimo+(massimo-minimo)*rand()
   WRITE(*,*) en0
   END DO
  END DO

0 个答案:

没有答案