Theory binary_ieeeProps

Parents

Contents

Type operators

(none)

Constants

Definitions

mantissa_def

Theorems

Sign_casesabs_next_hi_EQNfloat_to_real_EQ0_casesfloat_to_real_ulpfloat_value_eq_float_to_realfloat_value_float_to_realis_closest_0_float_to_reallargest_propsmantissa_UBnegative_representablepositive_representablerepresentablesround_representableround_representable_nonzeroround_representable_zerosmaller_floats_representable_lemmathreshold_propsulp_multiples_representable

Definitions

⊢ ∀x. mantissa x =
      if x.Exponent = 0w then w2n x.Significand
      else 2 ** precision (:τ) + w2n x.Significand

Theorems

⊢ ∀f. f.Sign = 0w ∨ f.Sign = 1w
⊢ float_is_finite f ⇒ abs (f2r (next_hi f)) = abs (f2r f) + ulpᶠ f
⊢ f2r f = 0 ⇔ f = POS0 ∨ f = NEG0
⊢ f2r f = sign f * &mantissa f * ulpᶠ f
⊢ float_is_finite f ⇒ float_value f = Float (f2r f)
⊢ float_value f = Float r ⇒ f2r f = r
⊢ is_closest float_is_finite 0 b ⇔ f2r b = 0
⊢ ¬(largest (:α # β) < 0) ∧ largest (:α # β) ≠ 0 ∧ 0 < largest (:α # β) ∧
  0 ≤ largest (:α # β) ∧ ¬(largest (:α # β) ≤ 0)
⊢ mantissa f < 2 * 2 ** precision (:α)
⊢ r = -(2 pow k * &x) / 2 pow (bias (:χ) + precision (:τ)) ∧ 0 < k ∧
  k < 2 ** precision (:χ) − 1 ∧ x < 2 ** (precision (:τ) + 1) ⇒
  ∃f. float_value f = Float r
⊢ r = 2 pow k * &x / 2 pow (bias (:χ) + precision (:τ)) ∧ 0 < k ∧
  k < 2 ** precision (:χ) − 1 ∧ x < 2 ** (precision (:τ) + 1) ⇒
  ∃f. float_value f = Float r
⊢ abs r = 2 pow k * &x / 2 pow (bias (:χ) + precision (:τ)) ∧ 0 < k ∧
  k < 2 ** precision (:χ) − 1 ∧ x < 2 ** (precision (:τ) + 1) ⇒
  ∃f. float_value f = Float r
⊢ 2 ≤ precision (:β) ∧ float_is_finite f ⇒
  ∃f'. float_is_finite f' ∧ round m (f2r f) = f' ∧ f2r f' = f2r f
⊢ 2 ≤ precision (:β) ∧ float_is_finite f ∧ f2r f ≠ 0 ⇒ round m (f2r f) = f
⊢ 2 ≤ precision (:β) ⇒ round m 0 = POS0 ∨ round m 0 = NEG0
⊢ 2 ≤ precision (:τ) ∧ float_value b = Float rb ∧
  rr = real_of_int i * ulpᶠ b ∧ abs rr ≤ abs rb ⇒
  ∃r. float_value r = Float rr
⊢ ¬(threshold (:α # β) < 0) ∧ threshold (:α # β) ≠ 0 ∧
  0 < threshold (:α # β) ∧ 0 ≤ threshold (:α # β) ∧
  ¬(threshold (:α # β) ≤ 0)
⊢ float_is_finite f ∧ 2 ≤ precision (:τ) ∧ abs r = &n * ulpᶠ f ∧
  n ≤ 2 ** precision (:χ) ⇒
  ∃f'. float_value f' = Float r