我上传了一个 2F1 超几何函数,但结果发现它无法在我的计算机上编译。是出自这篇文章。我用
GNU Fortran (Built by Jeroen for the R-project) 8.3.0
Run Code Online (Sandbox Code Playgroud)
随 RTools 4.0 一起提供。你能找出为什么它不能编译以及如何解决这个问题吗?在下面的代码中,我只保留了生成错误的一行。接下来给出错误。
MODULE HYP_2F1_MODULE
!--------------------------------------------------------------------
IMPLICIT NONE
INTEGER, PARAMETER :: PR=KIND(1.0D0)
REAL(PR) :: ONE=1.0D0
CONTAINS
!
END MODULE HYP_2F1_MODULE
!
!----------------------------------------------------------------------
RECURSIVE FUNCTION LOG_GAMMA(Z) RESULT(RES)
USE HYP_2F1_MODULE
IMPLICIT NONE
COMPLEX(PR),INTENT(IN) :: Z
COMPLEX(PR) :: RES
!
RES = LOG_GAMMA( ONE -z);
!
END FUNCTION LOG_GAMMA
Run Code Online (Sandbox Code Playgroud)
这是错误消息
testZ.f90:18:22:
RES = LOG_GAMMA( ONE - Z);
1
Error: 'x' argument of 'log_gamma' intrinsic at (1) must be REAL
Run Code Online (Sandbox Code Playgroud)
有一个同名的 Fortran 2008+ 内在函数
16.9.119 LOG_GAMMA (X)
1 描述。伽马函数绝对值的对数。
2 类。基本功能。
3 论证。X 应为实数类型。它的值不能是负整数或零。
这里存在某种我不完全理解的冲突。明显的解决方法是重命名您的函数。我能说的是,如果没有结果子句(由于递归属性,您需要它),内在函数将被隐藏。这可能是一个编译器错误。
还要考虑,同名的内在函数是否也不能满足您的函数的需要。
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |