@[instance_reducible]
instance Float.Model.UnpackedFloat.Sign.instDecidableForall_batteries {p : Sign → Prop} [(s : Sign) → Decidable (p s)] :
@[simp]
theorem Float.Model.UnpackedFloat.unpackSign_packComponents {spec : Format} (s : Sign) (e : BitVec spec.exponentBits) (m : BitVec spec.mantissaBitsWithoutImplicit) :
theorem Float.Model.UnpackedFloat.packComponents_unpackSign_unpackExponent_unpackMantissa {spec : Format} (b : BitVec spec.numBits) :
@[simp]
@[simp]
@[simp]
theorem Float.Model.UnpackedFloat.beq_iff_ne_notANumber_and_eq (a b : UnpackedFloat) :
a.beq b = true ↔ a ≠ notANumber ∧ b ≠ notANumber ∧ (a = b ∨ a = zero Sign.positive ∧ b = zero Sign.negative ∨ a = zero Sign.negative ∧ b = zero Sign.positive)
theorem Float.Model.UnpackedFloat.unpack_beq_unpack_iff {spec : Format} {b b' : BitVec spec.numBits} (hb : spec.Valid b) (hb' : spec.Valid b') :
(unpack spec b).beq (unpack spec b') = true ↔ b ≠ packedNaN spec ∧ b' ≠ packedNaN spec ∧ (b = b' ∨ b = packedZero spec Sign.positive ∧ b' = packedZero spec Sign.negative ∨ b = packedZero spec Sign.negative ∧ b' = packedZero spec Sign.positive)
@[simp]
This theorem is true for all types but most other types have LawfulBEq where
bne_self_eq_false or bne_iff_ne apply.
@[simp]
This theorem is true for all types but most other types have LawfulBEq where
bne_self_eq_false or bne_iff_ne apply.
Boolean equality on Floats is symmetric and transitive, but not reflexive, as demonstrated
by nan != nan.
Boolean equality on Float32s is symmetric and transitive, but not reflexive, as demonstrated
by nan != nan.