fact: Definition output_bnd (fmt upp : bool) radix (s : bool) m e := let m := if s then Zneg m else Zpos m in match e with | 0%Z => BInteger m | Zpos p => BInteger (m * Zaux.Zfast_pow_pos (Zaux.radix_val radix) p) | Zneg p => if andb fmt (Zeq_bool (Zaux.radix_val radix) 2) then let e' := Z.to_pos (Zpos p * 3 / 10) in let m' := Z.mul m (Zaux.Zfast_pow_pos 5 e') in let m'' := Z.div_eucl m' (Z.pow 2 (Zpos p - Zpos e')) in let u := if upp then if Zeq_bool (snd m'') 0 then 0%Z else 1%Z else 0%Z in let d := Z.to_pos (Zaux.Zfast_pow_pos 10 e') in BDecimal (QArith_base.Qmake (fst m'' + u) d) else BFraction m (Zaux.Zfast_pow_pos (Zaux.radix_val radix) p) end.
imports: Coq(Bool Reals Psatz) Flocq(Raux) Stdlib Xreal Basic Sig Interval