(** Multiplication by 2 is diagonal addition. *)

(* Specifications: *)
Theorem mul2_add:
forall f, add f f = mul f (of_int (Int.repr 2%Z)).
Theorem mul2_add:
forall f, add f f = mul f (of_int (Int.repr 2%Z)).
Theorem Bmult2_Bplus:
forall plus_nan mult_nan mode (f: binary_float),
(forall (x y: binary_float),
is_nan _ _ x = true -> is_finite _ _ y = true -> plus_nan x x = mult_nan x y) ->
Bplus _ _ _ Hmax plus_nan mode f f = Bmult _ _ _ Hmax mult_nan mode f (BofZ 2%Z).
Theorem mul2_add:
forall f, add f f = mul f (of_int (Int.repr 2%Z)).
Theorem mul2_add:
forall f, add f f = mul f (of_int (Int.repr 2%Z)).
Theorem Bmult2_Bplus:
forall plus_nan mult_nan mode (f: binary_float),
(forall (x y: binary_float),
is_nan _ _ x = true -> is_finite _ _ y = true -> plus_nan x x = mult_nan x y) ->
Bplus _ _ _ Hmax plus_nan mode f f = Bmult _ _ _ Hmax mult_nan mode f (BofZ 2%Z).