Fortran 中 real(16) 的指数

exponential of real(16) in fortran

real(16)类型的模型中最大的非无穷数是10^4932。我有 Fortran 90 代码中的 exp(10000) 是 8.806818225×10^4342 通过简单的计算器计算出来的。我使用这个简单的代码:

real(16) :: a
...
a = exp(10000)
...

但它returns无穷大。我能做什么?

首先,谁知道什么是 real(16),种类数字不可移植,可能意味着什么。

但假设您想使用 16 类实数,无论它实际是什么。然后你必须将 16 类的实数放入 exp 函数

  a = exp(10000._16)

在 Fortran 表达式中,表达式从不关心周围环境。 exp(10000) 在所有上下文中以相同的方式独立评估。你在那里放了一个默认整数,你得到了默认实数的答案。对于默认的真实答案来说太大了。

强烈建议使用一些正确的方法来定义你的种类,而不仅仅是 16。

use iso_fortran_env
integer, parameter :: rp = real128
real(rp) :: a

a = exp(10000._rp)

是可能的方法之一。