Functions for computing the number of digits of integers and related theorems.
Require Import Fcore_Raux.
Require Import Fcore_defs.
Require Import Fcore_float_prop.
Require Import Fcore_digits.
Section Fcalc_digits.
Variable beta :
radix.
Notation bpow e := (
bpow beta e).
Theorem Zdigits_ln_beta :
forall n,
n <>
Z0 ->
Zdigits beta n =
ln_beta beta (
Z2R n).
Proof.
Theorem ln_beta_F2R_Zdigits :
forall m e,
m <>
Z0 ->
(
ln_beta beta (
F2R (
Float beta m e)) =
Zdigits beta m +
e :>
Z)%
Z.
Proof.
Theorem Zdigits_mult_Zpower :
forall m e,
m <>
Z0 -> (0 <=
e)%
Z ->
Zdigits beta (
m *
Zpower beta e) = (
Zdigits beta m +
e)%
Z.
Proof.
Theorem Zdigits_Zpower :
forall e,
(0 <=
e)%
Z ->
Zdigits beta (
Zpower beta e) = (
e + 1)%
Z.
Proof.
Theorem Zdigits_le :
forall x y,
(0 <=
x)%
Z -> (
x <=
y)%
Z ->
(
Zdigits beta x <=
Zdigits beta y)%
Z.
Proof.
Theorem lt_Zdigits :
forall x y,
(0 <=
y)%
Z ->
(
Zdigits beta x <
Zdigits beta y)%
Z ->
(
x <
y)%
Z.
Proof.
Theorem Zpower_le_Zdigits :
forall e x,
(
e <
Zdigits beta x)%
Z ->
(
Zpower beta e <=
Zabs x)%
Z.
Proof.
Theorem Zdigits_le_Zpower :
forall e x,
(
Zabs x <
Zpower beta e)%
Z ->
(
Zdigits beta x <=
e)%
Z.
Proof.
Theorem Zpower_gt_Zdigits :
forall e x,
(
Zdigits beta x <=
e)%
Z ->
(
Zabs x <
Zpower beta e)%
Z.
Proof.
Theorem Zdigits_gt_Zpower :
forall e x,
(
Zpower beta e <=
Zabs x)%
Z ->
(
e <
Zdigits beta x)%
Z.
Proof.
Characterizes the number digits of a product.
This strong version is needed for proofs of division and square root
algorithms, since they involve operation remainders.
Theorem Zdigits_mult_strong :
forall x y,
(0 <=
x)%
Z -> (0 <=
y)%
Z ->
(
Zdigits beta (
x +
y +
x *
y) <=
Zdigits beta x +
Zdigits beta y)%
Z.
Proof.
Theorem Zdigits_mult :
forall x y,
(
Zdigits beta (
x *
y) <=
Zdigits beta x +
Zdigits beta y)%
Z.
Proof.
Theorem Zdigits_mult_ge :
forall x y,
(
x <> 0)%
Z -> (
y <> 0)%
Z ->
(
Zdigits beta x +
Zdigits beta y - 1 <=
Zdigits beta (
x *
y))%
Z.
Proof.
Theorem Zdigits_div_Zpower :
forall m e,
(0 <=
m)%
Z ->
(0 <=
e <=
Zdigits beta m)%
Z ->
Zdigits beta (
m /
Zpower beta e) = (
Zdigits beta m -
e)%
Z.
Proof.
End Fcalc_digits.
Definition radix2 :=
Build_radix 2 (
refl_equal _).
Theorem Z_of_nat_S_digits2_Pnat :
forall m :
positive,
Z_of_nat (
S (
digits2_Pnat m)) =
Zdigits radix2 (
Zpos m).
Proof.