在fortran中实数(16)的指数

时间:2016-10-07 08:21:58

标签: fortran infinity

real(16)类型模型中不是无穷大的最大数字是10 ^ 4932。 Fortran 90代码中exp(10000)为8.806818225×10 ^ 4342,由简单计算器计算得出。我使用这个简单的代码:

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

但它会返回无穷大。我该怎么办?

1 个答案:

答案 0 :(得分:1)

首先,谁知道什么是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)

是可能的方法之一。