Section Fcalc_div.
Variable beta : radix.
Notation bpow e := (bpow beta e).
Variable fexp : Z -> Z.
(** Computes a mantissa of precision p, the corresponding exponent, and the position with respect to the real quotient of the input floating-point numbers.  The algorithm performs the following steps: - Shift dividend mantissa so that it has at least p2 + p digits. - Perform the Euclidean division. - Compute the position according to the division remainder.  Complexity is fine as long as p1 <= 2p and p2 <= p. *)
Definition Fdiv_core m1 e1 m2 e2 e :=
let (m1', m2') :=
if Zle_bool e (e1 - e2)%Z
then (m1 * Zpower beta (e1 - e2 - e), m2)%Z
else (m1, m2 * Zpower beta (e - (e1 - e2)))%Z in
let '(q, r) :=  Z.div_eucl m1' m2' in
(q, new_location m2' r loc_Exact).

Theorem Fdiv_core_correct :
forall m1 e1 m2 e2 e,
(0 < m1)%Z -> (0 < m2)%Z ->
let '(m, l) := Fdiv_core m1 e1 m2 e2 e in
inbetween_float beta m e (F2R (Float beta m1 e1) / F2R (Float beta m2 e2)) l.