fortran - 使用 fortran PCHIP 库时的错误
问题描述
我对 Fortran 很陌生,知道我的问题可能很愚蠢。任何帮助表示赞赏。
我正在尝试使用 PCHIP 进行保形插值。源代码“pchip.f90”和采样调用程序“pchip_prb.f90”可在https://people.sc.fsu.edu/~jburkardt/f_src/pchip/pchip.html获得。
然后我尝试通过在“pchip_prb.f90”INCLUDE "pchip.f90"
的开头添加一个新行来运行采样调用程序“pchip_prb.f90”。但是出现了很多错误。我真的不知道怎么了。
有人可以帮我吗?非常感谢!
错误:
mkdir -p Build && gfortran -O3 -Werror -Wno-unused -fimplicit-none -Wall -fcheck=bound,do -ffpe-trap=invalid,zero,overflow -I/usr/local/include/ -J"./Build" -c "pchip_prb.f90" -o "Build/pchip_prb.o" (in directory: /Users/yajiewang/Desktop/try_new)
pchip.f90:12969:0:
FUNCTION RAND ( R )
Error: 'rand' declared at (1) is also the name of an intrinsic. It can only be called via an explicit interface or if declared EXTERNAL. [-Werror=intrinsic-shadow]
pchip.f90:245:13:
ITRUE = SIGN (ONE, DELTA)
1
Error: Possible change of value in conversion from REAL(4) to INTEGER(4) at (1) [-Werror=conversion]
pchip.f90:1011:13:
ITRUE = DSIGN (ONE, DELTA)
1
Error: Possible change of value in conversion from REAL(8) to INTEGER(4) at (1) [-Werror=conversion]
pchip.f90:13102:8:
IX1 = MOD(R,1.)*4194304. + 0.5E+00
1
Error: Possible change of value in conversion from REAL(4) to INTEGER(4) at (1) [-Werror=conversion]
pchip.f90:1813:54:
CALL DCHFEV (0.D0, 1.D0, 3.D0, 7.D0, 3.D0, 6.D0, 0, DUM, DUM, NEXT, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:1817:54:
CALL DCHFEV (1.D0, 1.D0, 3.D0, 7.D0, 3.D0, 6.D0, 1, DUM, DUM, NEXT, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:1821:54:
CALL DCHFDV (0.D0, 1.D0, 3.D0, 7.D0, 3.D0, 6.D0, 0, DUM, DUM, DUM, NEXT, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:1825:54:
CALL DCHFDV (1.D0, 1.D0, 3.D0, 7.D0, 3.D0, 6.D0, 1, DUM, DUM, DUM, NEXT, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:1846:39:
CALL DPCHFE (1, X, F, D, 1, SKIP, 0, DUM, DUM, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:1851:39:
CALL DPCHFE (N, X, F, D, 1, SKIP, 0, DUM, DUM, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:1856:39:
CALL DPCHFE (N, X, F, D, 1, SKIP, 0, DUM, DUM, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:1861:39:
CALL DPCHFD (1, X, F, D, 1, SKIP, 0, DUM, DUM, DUM, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:1866:39:
CALL DPCHFD (N, X, F, D, 1, SKIP, 0, DUM, DUM, DUM, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:1871:39:
CALL DPCHFD (N, X, F, D, 1, SKIP, 0, DUM, DUM, DUM, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:7428:53:
CALL CHFEV (0.E0, 1.E0, 3.E0, 7.E0, 3.E0, 6.E0, 0, DUM, DUM, NEXT, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:7432:53:
CALL CHFEV (1.E0, 1.E0, 3.E0, 7.E0, 3.E0, 6.E0, 1, DUM, DUM, NEXT, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:7436:53:
CALL CHFDV (0.E0, 1.E0, 3.E0, 7.E0, 3.E0, 6.E0, 0, DUM, DUM, DUM, NEXT, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:7440:53:
CALL CHFDV (1.E0, 1.E0, 3.E0, 7.E0, 3.E0, 6.E0, 1, DUM, DUM, DUM, NEXT, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:7461:42:
CALL PCHFE (1, X, F, D, 1, SKIP, 0, DUM, DUM, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:7466:42:
CALL PCHFE (N, X, F, D, 1, SKIP, 0, DUM, DUM, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:7471:42:
CALL PCHFE (N, X, F, D, 1, SKIP, 0, DUM, DUM, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:7476:42:
CALL PCHFD (1, X, F, D, 1, SKIP, 0, DUM, DUM, DUM, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:7481:42:
CALL PCHFD (N, X, F, D, 1, SKIP, 0, DUM, DUM, DUM, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
pchip.f90:7486:42:
CALL PCHFD (N, X, F, D, 1, SKIP, 0, DUM, DUM, DUM, IERR)
1
Error: Rank mismatch in argument 'xe' at (1) (rank-1 and scalar) [-Werror=argument-mismatch]
f951: all warnings being treated as errors
Compilation failed.
解决方案
使用-Werror
,警告变成错误。没有它,我可以编译代码。
你有两个选择:
编译没有
-Werror
并允许编译结束。该代码有一些测试可以指导您的信心。修复所有出错的地方的代码。在这里,它意味着检查一些转换(从实数到整数)并修复形状不正确的参数。
推荐阅读
- javascript - 如何在不更改 HTML 文档布局的情况下追加子项
- c++ - CMake:将包添加到 rpath
- unity3d - Unity:让 ProBuilder 窗口可停靠?
- swift - 与 xcode 10.2 中的通用类型比较
- compare-and-swap - 是否由高级语言原子实现比较和交换
- xml - 如何为 xsl:text 设置固定长度?
- spring - bean 'org.springframework.transaction.config.internalTransactionAdvisor' 已经注册
- python - 如何从开始日期结束日期数据创建每日费用?
- typescript - 强制通用类型匹配函数定义
- c# - Task.GetAwaiter().GetResult() 导致 Windows 服务死锁