我试图在FORTRAN[real(kind=16)]上进行四精度,但我一直得到错误

C:\User\User\AppData\Local\Temp/ccUMY6b.0:forcefunction.f95:(.text+0x437):
undefined reference to 'qcos_'

我试着改变 qcoscos 但是,

C:\User\User\AppData\Local\Temp/ccM5CBUM.0:forcefunction.f95:(.text+0x2fd1):
undefined reference to '_g95_qcos_r16'

同样的问题 sin, abs, acos, asin, sqrt

有帮助吗?

解决方案

kind=16 不一定是四精度。类型值不是由语言标准定义的,也不是在编译器之间可移植的。十六可能不是编译器上四精度的类型值。

并非所有编译器都支持所有体系结构上的四精度。您可以通过打印以下值进行检查:

selected_real_kind (14)
selected_real_kind (17)
selected_real_kind (32)

第一个请求双精度,下一个请求中间精度(10字节),有时在英特尔处理器上可用,最后一个请求四边形。如果编译器不支持所请求的十进制位数,则 selected_real_kind 函数将返回 -1.

其他提示

我可以用g95 4.0.3在我的系统上确认您的问题。

根据这个线程 http://coding.derkeiler.com/Archive/Fortran/comp.lang.fortran/2009-02/msg00668.html 内部函数还没有实现四精度.因此,您必须更改编译器,或者仅使用双精度。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top