2
我已經寫關於IEEE浮點常數的兩個問題,通過Z3的FPA邏輯所接受:浮點文字
首先,在this question,克里斯托夫使用的例子:
((_ asFloat 11 53) roundTowardZero 0.5 0))
我想知道最後的0
意味着什麼?我試過了:
((_ asFloat 11 53) roundTowardZero 0.5))
而且這似乎也適用。 Rummer的paper似乎也不需要最終的0;所以我很好奇它扮演着什麼角色。
其次,當我從Z3得到一個模型,它打印浮點文字就像這樣:
(as +1.0000000000000002220446049250313080847263336181640625p1 (_ FP 11 53))
如何解釋p1
後綴?還有哪些後綴是可能的?
謝謝..
謝謝Christoph,這很有道理。然而,讀Rummer的論文後,我仍然認識到FP數字應該使用有理數寫成,如下:'(/ 2 3)'。這可以用作模型中的輸入和輸入。我喜歡這種方法,因爲它是明確的,並且每個FP編號可以相對容易地轉換爲理性。也許我們可以有一個'pp.print_fpa_as_rational'或類似的選項來指定這個功能,以便爲構建在Z3之上的工具提供一致性? –
是的,Z3在這裏也接受有理數,例如((__float11535)roundTowardZero(/ 2 3))。就個人而言,我更喜歡尾數+指數符號,因爲它通常更簡潔,但其他人當然可以有其他偏好。在爲輸出實現不同的選項之前,我想等一會兒看看SMT社區做出了什麼決定(例如,我們也在輸出中請求了IEEE位向量格式)。 –
對於所有對SMT中的FPA感興趣的人的說明:有一個名爲smt-fp的谷歌組[請參閱http://groups.google.com/forum/#!forum/smt-fp],它用於討論這個話題當然包括輸出格式。反饋和請求是最受歡迎的! –