我尝试在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
答案 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,内部函数尚未实现四倍精度。因此,您必须更改编译器,或仅使用双精度。