This is an archived version pinned as of the submission of my master's thesis. An up-to-date version may be found online.
Floats
module primitives.floats where
Imports
open import elementary-number-theory.natural-numbers open import foundation.booleans open import foundation.maybe open import foundation.universe-levels open import primitives.machine-integers open import primitives.strings
Idea
The Float type represents IEEE754 floats. Agda provides primitive functions to
manipulate them. Floats can be written as usual, using dots as separators, e.g.
3.14.
Definitions
postulate Float : UU lzero {-# BUILTIN FLOAT Float #-} primitive -- Relations primFloatInequality : Float → Float → bool primFloatEquality : Float → Float → bool primFloatLess : Float → Float → bool primFloatIsInfinite : Float → bool primFloatIsNaN : Float → bool primFloatIsNegativeZero : Float → bool primFloatIsSafeInteger : Float → bool -- Conversions primFloatToWord64 : Float → Maybe' Word64 primNatToFloat : ℕ → Float -- primIntToFloat : Int → Float -- primFloatRound : Float → Maybe' Int -- primFloatFloor : Float → Maybe' Int -- primFloatCeiling : Float → Maybe' Int -- primFloatToRatio : Float → (Σ Int λ _ → Int) -- primRatioToFloat : Int → Int → Float -- primFloatDecode : Float → Maybe' (Σ Int λ _ → Int) -- primFloatEncode : Int → Int → Maybe' Float primShowFloat : Float → String -- Operations primFloatPlus : Float → Float → Float primFloatMinus : Float → Float → Float primFloatTimes : Float → Float → Float primFloatDiv : Float → Float → Float primFloatPow : Float → Float → Float primFloatNegate : Float → Float primFloatSqrt : Float → Float primFloatExp : Float → Float primFloatLog : Float → Float primFloatSin : Float → Float primFloatCos : Float → Float primFloatTan : Float → Float primFloatASin : Float → Float primFloatACos : Float → Float primFloatATan : Float → Float primFloatATan2 : Float → Float → Float primFloatSinh : Float → Float primFloatCosh : Float → Float primFloatTanh : Float → Float primFloatASinh : Float → Float primFloatACosh : Float → Float primFloatATanh : Float → Float