TorchLean API

FloatLib.Floats.Formats.Flocq.Theory.Rounding.Double

Double Rounding #

Directed rounding through a finer intermediate format gives the same answer as direct rounding to the coarser format. The order-theoretic proof only needs inclusion of representable values, so it applies beyond the standard FIX, FLX, and FLT families.

theorem FloatLib.Floats.Formats.Flocq.roundDownPoint_double {fine coarse : Prop} {x fineValue coarseValue : } (hsubset : ∀ (z : ), coarse zfine z) (hf : RoundDownPoint fine x fineValue) (hc : RoundDownPoint coarse x coarseValue) :
RoundDownPoint coarse fineValue coarseValue

Downward rounding through a containing format collapses to direct downward rounding.

theorem FloatLib.Floats.Formats.Flocq.roundUpPoint_double {fine coarse : Prop} {x fineValue coarseValue : } (hsubset : ∀ (z : ), coarse zfine z) (hf : RoundUpPoint fine x fineValue) (hc : RoundUpPoint coarse x coarseValue) :
RoundUpPoint coarse fineValue coarseValue

Upward rounding through a containing format collapses to direct upward rounding.

theorem FloatLib.Floats.Formats.Flocq.generic_format_FLX_mono {β : Numerics.Radix} {coarsePrec finePrec : } (hcoarse : 0 < coarsePrec) (hfine : 0 < finePrec) (hprec : coarsePrec finePrec) {x : } (hx : genericFormat β (flxExp coarsePrec) x) :
genericFormat β (flxExp finePrec) x

Increasing FLX precision preserves every exactly representable value.

theorem FloatLib.Floats.Formats.Flocq.round_floor_double_FLX {β : Numerics.Radix} {coarsePrec finePrec : } (hcoarse : 0 < coarsePrec) (hfine : 0 < finePrec) (hprec : coarsePrec finePrec) (x : ) :

Downward FLX double rounding equals direct rounding to the coarser precision.

theorem FloatLib.Floats.Formats.Flocq.round_ceil_double_FLX {β : Numerics.Radix} {coarsePrec finePrec : } (hcoarse : 0 < coarsePrec) (hfine : 0 < finePrec) (hprec : coarsePrec finePrec) (x : ) :

Upward FLX double rounding equals direct rounding to the coarser precision.