2017-04-13 164 views
1

當我提出我的包CRAN,它不與下面的警告通過自動傳入檢查:警告:GNU擴展

* checking whether package 'EpiILM' can be installed ... WARNING 
    Found the following significant warnings: 
    Warning: GNU Extension: Different type kinds at (1) 

和相應的日誌文件說

Epimcmc.f95:440.25: 

     psi= min(1.0,exp(ratio)) 
        1 
Warning: GNU Extension: Different type kinds at (1) 

當我測試我的軟件包使用R CMD CHECK和R CMD CHECK --as-cran,都不會產生警告或提示。我正在使用R版本3.3.2(2016-10-31) - 我的MacOS上的「Sincere Pumpkin Patch」,代碼使用Fortran 95編寫。

有什麼建議嗎?

回答

5

您的代碼太短而無法準確診斷,但可以安全地推斷代碼的未顯示部分是什麼。

您的ratio與默認值不同,可能是雙精度。

但是1.0是默認類型(又名單精度)。

min()混合不同種類的Fortran中是不允許的,但你這樣做的:

min(1.0,exp(ratio)) 

要解決這個問題,同種類ratio的使用文字是。所以,如果它是一個double precision,你可以使用:

min(1.0d0, exp(ratio)) 

,如果是一些real(rk)可以使用

min(1.0_rk, exp(ratio)) 

real(.., kind=rk)功能也可以使用。


警告說,GNU Fortran編譯認識到它不是在Fortran語言允許的,但允許它作爲一個非標準擴展。 CRAN編碼標準是否允許使用此擴展是另一個問題。可能不會,如果它被拒絕了。

+0

謝謝。 '比率'和'psi'都是雙精度。將1.0更改爲1.0d0並查看結果如何。 – Vineetha

+0

它的工作和包現在在CRAN上。 – Vineetha