未定义对g95中具有四精度的'qcos_'和'_g95_qcos_r16'的引用
题
我试图在FORTRAN[real(kind=16)]上进行四精度,但我一直得到错误
C:\User\User\AppData\Local\Temp/ccUMY6b.0:forcefunction.f95:(.text+0x437):
undefined reference to 'qcos_'
我试着改变 qcos
到 cos
但是,
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 内部函数还没有实现四精度.因此,您必须更改编译器,或者仅使用双精度。
不隶属于 StackOverflow