ACSL implementation(Aluminum-20160501版本1.11實施)列出了\NearestEven
作爲舍入模式(第23頁)。但是,它似乎在運行時仍然不可用。使用以下命令Frama-c Aluminum-20160501是否提供「 NearestEven」?
/*@ requires 0x1p-967 <= C <= 0x1p970;
@ ensures \result == \round_double(\NearestEven, (x+y)/2) ;
@ */
double average(double C, double x, double y) {
if (C <= abs(x))
return x/2+y/2;
else
return (x+y)/2;
}
:當我跑到下面的代碼frama-c -wp -wp-rte -wp-prover coq avg.c
,我得到:[wp] user error: Builtin \NearestEven not defined
。沒有其他的舍入模式可用。
有什麼建議嗎?
謝謝!傑西插件仍然支持? Frama-c的鋁合金版本似乎沒有與Jessie一起出現,我一直試圖回到Nitrogen,並沒有看到它。 Jessie [網頁](http://krakatoa.lri.fr/)沒有說清楚它在哪裏得到它。 – queeten
我很確定確切的狀態。 [why3](http://why3.lri.fr/)的源代碼顯示了一個簡單支持C的'jessie3'目錄。我想你必須限制到Why3直接支持的內容,即純引用和數組,沒有任何別名,沒有gotos等等。如果你主要關心浮點精度,那麼這個片段可能就足夠了。但是,jessie3顯然不是由相應的opam軟件包安裝的。我沒有檢查是否可以通過直接編譯why3來輕鬆安裝它。 – Virgile