在G95中具有四倍精度的'qcos_'和'_g95_qcos_r16'的未定义引用

时间:2013-11-17 21:51:07

标签: fortran precision g95

我尝试在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'

sinabsacosasinsqrt

的问题相同

2 个答案:

答案 0 :(得分:2)

kind=16不一定是四精度。类型值不是由语言标准定义的,并且不能跨编译器移植。十六可能不是编译器中四精度的类型值。

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

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

第一个请求双精度,下一个是中间精度(10个字节),有时可用于英特尔处理器和最后四个。如果编译器不支持请求的小数位数,selected_real_kind函数将返回-1

答案 1 :(得分:1)

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

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