Vin*_*tha 1 fortran r gfortran cran fortran95
当我将我的包提交给CRAN时,它不会通过自动传入检查并发出以下警告:
* checking whether package 'EpiILM' can be installed ... WARNING
Found the following significant warnings:
Warning: GNU Extension: Different type kinds at (1)
Run Code Online (Sandbox Code Playgroud)
和相应的日志文件说
Epimcmc.f95:440.25:
psi= min(1.0,exp(ratio))
1
Warning: GNU Extension: Different type kinds at (1)
Run Code Online (Sandbox Code Playgroud)
当我使用R CMD CHECK和R CMD CHECK --as-cran测试我的包装时,都不会产生任何警告或注释.我正在使用R版本3.3.2(2016-10-31) - 我的MacOS上的"真诚的南瓜补丁"和代码是用Fortran 95编写的.
有什么建议?
您的代码太短而无法准确诊断,但可以安全地推断出代码中未显示的部分是什么.
你ratio的类型与默认类型不同,可能是"双精度".
但是1.0是默认类型(也就是单精度).
min()在Fortran中不允许混合使用不同种类,但是您可以在以下位置执行此操作:
min(1.0,exp(ratio))
Run Code Online (Sandbox Code Playgroud)
要解决此问题,请使用相同类型的文字ratio.所以,如果它是double precision,你可以使用:
min(1.0d0, exp(ratio))
Run Code Online (Sandbox Code Playgroud)
如果它是一些 real(rk)你可以使用
min(1.0_rk, exp(ratio))
Run Code Online (Sandbox Code Playgroud)
real(.., kind=rk)也可以使用该功能.
警告说GNU Fortran编译器认为它在Fortran中是不允许的,但允许它作为非标准扩展.CRAN编码标准是否允许使用此扩展是一个不同的问题.可能不会,如果它被拒绝了.