proposition: Theorem round_round_mult_FTZ : (emin' + prec' <= 2 * emin + prec)%Z -> (2 * prec <= prec')%Z -> forall x y, FTZ_format beta emin prec x -> FTZ_format beta emin prec y -> round beta (FTZ_exp emin prec) rnd (round beta (FTZ_exp emin' prec') rnd (x * y)) = round beta (FTZ_exp emin prec) rnd (x * y).
proof: Proof. intros Hemin Hprec x y Fx Fy. apply round_round_mult; [|now apply generic_format_FTZ|now apply generic_format_FTZ]. unfold round_round_mult_hyp; split; intros ex ey; unfold FTZ_exp; unfold Prec_gt_0 in *; destruct (Z.ltb_spec (ex + ey - prec') emin'); destruct (Z.ltb_spec (ex - prec) emin); destruct (Z.ltb_spec (ey - prec) emin); destruct (Z.ltb_spec (ex + ey - 1 - prec') emin'); lia. Qed.
imports: Coq(ZArith Reals Psatz) Core FTZ