首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Fortran中从53位FPU切换到64位FPU

在Fortran中从53位FPU切换到64位FPU
EN

Stack Overflow用户
提问于 2009-10-09 06:31:49
回答 2查看 274关注 0票数 0

我正在将Fortran代码从Fortran PowerStation(4.0版)移植到Fortran 11(2003)编译器。旧的编译器(PowerStation)具有53位精度。当移植到新的编译器时,我没有为我的实型/浮点型变量获得正确或精确的值。我希望新的编译器是64位精度的。所以我认为我需要将FPU (浮点单元)从53位精度更改为64位精度。这是正确的吗?如果是这样,我如何使用新编译器的属性将53位精度更改为64位精度?如果没有,我应该怎么做?

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2009-10-11 15:54:13

在Fortran90/95/2003中请求浮点精度的可移植方法是使用selected_real_kind内部函数。例如,integer, parameter :: DoubleReal_K = selected_real_kind (14)将定义一个整数DoubleReal_K,该整数指定一个至少包含14位十进制数字的浮点变量:real (DoubleReal_K) :: MyFloat。请求14个十进制数通常会产生一个53位的双精度浮点数--但唯一的保证是14个十进制数。

如果需要更高的精度,可以使用大于14的值来指定更长的类型-- 17位十进制数字可能会得到扩展的精度(64位),也可能会得到四极精度,或者什么也不会得到,具体取决于编译器。如果编译器有更大的类型可用,它将提供它...否则,请使用更好的编译器。为什么你要用这么旧的、不受支持的编译器呢?此外,不要期望从浮点计算中得到准确的结果--更改导致结果发生微小变化是正常的。

票数 2
EN

Stack Overflow用户

发布于 2009-10-09 16:01:17

您希望新的编译器是64位精度的吗?我希望您阅读手册并自己弄清楚,但是如果您不能做到这一点,请告诉我们您使用的是哪个编译器,有人可能会帮助您。

旧代码和使用新编译器编译的代码的结果有什么不同?当然,如果精度改变了,结果就不会完全一样--除非你采取特殊措施来确保一致性,否则结果怎么可能是一样的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1542124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档