Bug about the semantics of fsucc and fpred. In short, for any float number x, the relationship fpred(x) < x < fsucc(x) should hold. while in the following Primus Lisp script, when x is negative it breaks the relationship:
it shows ppred < pos < psucc which is correct, and npred > neg > nsucc which is confused.
Bug about the semantic of cast_float. cast_float interprets the given bitvector as an unsigned one, so cast_float x always return a non-negative float. cast-float -1234567 == cast-float 18446744073708317049 and finally got a float 0x43EFFFFFFFFFFDA5. But cast_float -1234567 and cast_sfloat -1234567 have the following output:
This issue records some bugs found in bap fbasic, plan to fix them in a pull request.
A mismatched description in http://binaryanalysisplatform.github.io/bap/api/master/bap-core-theory/Bap_core_theory/Theory/module-type-Float/index.html#val-fsucc. looks like rounding is no more need in these two operations.
Bug about the semantics of
fsucc
andfpred
. In short, for any float number x, the relationship fpred(x) < x < fsucc(x) should hold. while in the following Primus Lisp script, when x is negative it breaks the relationship:output:
it shows ppred < pos < psucc which is correct, and npred > neg > nsucc which is confused.
Bug about the semantic of
cast_float
.cast_float
interprets the given bitvector as an unsigned one, socast_float x
always return a non-negative float.cast-float -1234567 == cast-float 18446744073708317049
and finally got a float0x43EFFFFFFFFFFDA5
. Butcast_float -1234567
andcast_sfloat -1234567
have the following output: