【发布时间】:2018-05-31 23:00:42
【问题描述】:
如何在 Fortran 2008 中获得负无穷和正无穷的常量(或 parameters,我想)?我尝试了以下代码:
program inf
use, intrinsic :: ieee_arithmetic
real(8), parameter :: inf_pos = ieee_value(0d0, ieee_positive_inf)
real(8), parameter :: inf_neg = ieee_value(0d0, ieee_negative_inf)
end program inf
但是,我收到以下错误:
$ gfortran inf.f08
inf.f08:4:22:
real(8) :: inf_pos = ieee_value(0d0, ieee_positive_inf)
1
Error: Function ‘ieee_value’ in initialization expression at (1) must be an intrinsic function
inf.f08:5:22:
real(8) :: inf_neg = ieee_value(0d0, ieee_negative_inf)
1
Error: Function ‘ieee_value’ in initialization expression at (1) must be an intrinsic function
尽管文档另有说明,但 gfortran 似乎认为 ieee_value() 不是内在的。
有什么办法可以得到我想要做的吗?
【问题讨论】:
-
哪个文档说
ieee_value是一个内在函数?不是,如果您指出这一点,我们可以为您解决这部分问题。 -
This question 谈论 NaN。虽然我不会将这些问题与重复问题联系起来,但短期内您可以阅读足够的内容。
-
pleiades.ucsc.edu/doc/intel/composer_xe/14.0/compiler_f/… 这个页面似乎暗示了这一点。但无论如何,这既不是这里也不是那里
-
@francescalus 不会使用
transfer()在大小端架构中不可移植? -
哦,是的。唉,如果你想要命名常量,你没有很多其他选择。不仅是字节顺序,还有表示的所有其他方面)。
标签: floating-point fortran gfortran ieee-754