(define to_fp_ieee_bv (# x mpz (# y mpz (# z term (apply (f_to_fp_ieee_bv x y) z)))))
(declare f_to_fp_bv (! i mpz (! j mpz term)))
(define to_fp_bv (# x mpz (# y mpz (# z term (apply (f_to_fp_bv x y) z)))))
+(declare f_fp.to_ubv_total (! i mpz term))
+(define fp.to_ubv_total (# x mpz (# z term (# w term (# u term (apply (apply (apply (f_fp.to_ubv_total x) z) w) u))))))
+(declare f_fp.to_sbv_total (! i mpz term))
+(define fp.to_sbv_total (# x mpz (# z term (# w term (# u term (apply (apply (apply (f_fp.to_sbv_total x) z) w) u))))))
; rounding modes
(declare roundNearestTiesToEven term)
(declare roundNearestTiesToAway term)
|| k == FLOATINGPOINT_TO_FP_FROM_FP
|| k == FLOATINGPOINT_TO_FP_FROM_IEEE_BV
|| k == FLOATINGPOINT_TO_FP_FROM_SBV
- || k == FLOATINGPOINT_TO_FP_FROM_REAL || k == APPLY_UPDATER
+ || k == FLOATINGPOINT_TO_FP_FROM_REAL || k == FLOATINGPOINT_TO_SBV
+ || k == FLOATINGPOINT_TO_UBV || k == FLOATINGPOINT_TO_SBV_TOTAL
+ || k == FLOATINGPOINT_TO_UBV_TOTAL || k == APPLY_UPDATER
|| k == APPLY_TESTER;
}
indices.push_back(nm->mkConstInt(fr.getSize().significandWidth()));
}
break;
+ case FLOATINGPOINT_TO_SBV:
+ {
+ const FloatingPointToSBV& fsbv = n.getConst<FloatingPointToSBV>();
+ indices.push_back(nm->mkConstInt(Rational(fsbv)));
+ }
+ break;
+ case FLOATINGPOINT_TO_UBV:
+ {
+ const FloatingPointToUBV& fubv = n.getConst<FloatingPointToUBV>();
+ indices.push_back(nm->mkConstInt(Rational(fubv)));
+ }
+ break;
+ case FLOATINGPOINT_TO_SBV_TOTAL:
+ {
+ const FloatingPointToSBVTotal& fsbv =
+ n.getConst<FloatingPointToSBVTotal>();
+ indices.push_back(nm->mkConstInt(Rational(fsbv)));
+ }
+ break;
+ case FLOATINGPOINT_TO_UBV_TOTAL:
+ {
+ const FloatingPointToUBVTotal& fubv =
+ n.getConst<FloatingPointToUBVTotal>();
+ indices.push_back(nm->mkConstInt(Rational(fubv)));
+ }
+ break;
case APPLY_TESTER:
{
unsigned index = DType::indexOf(n);