~/bend-docscommunity

src/float/sf32.bend checks

raw source on the hub · import 0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/sf32.bend as Sf32

4 imports
import Base
import ./bin.bend as Bin
import ./format.bend as Fmt
import ./num.bend as Num

Definitions

def bits source · line 22 · raw

@x:F32 -> U32

def of_bits source · line 27 · raw

@x:U32 -> F32

def decode.go source · line 38 · raw

@neg:Bool -> @e:Nat -> @f:0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/bin.Bin -> @top:Bool -> @low:Bool -> @fz:Bool -> 0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/format.Val

def decode.cls source · line 51 · raw

@neg:Bool -> @+e:Nat -> @+f:0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/bin.Bin -> 0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/format.Val

def decode.sign source · line 54 · raw

@f:0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/bin.Bin -> @e:0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/bin.Bin -> @w:Word(1n) -> 0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/format.Val

def decode.exp source · line 59 · raw

@f:0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/bin.Bin -> @p:Pair(0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/bin.Bin, Word(1n)) -> 0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/format.Val

def decode.man source · line 63 · raw

@p:Pair(0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/bin.Bin, Word(9n)) -> 0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/format.Val

def decode source · line 68 · raw

@x:F32 -> 0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/format.Val

the exact value of a float

def sign source · line 77 · raw

@neg:Bool -> 0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/bin.Bin

the sign bit, as it sits above the 8 exponent bits

def word source · line 85 · raw

@frac:0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/bin.Bin -> @exp:0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/bin.Bin -> @neg:Bool -> F32

a word from its fields: 23 mantissa bits, then exponent and sign above

def first source · line 88 · raw

@r:Pair(0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/bin.Bin, Pair(Bool, Bool)) -> 0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/bin.Bin

def align source · line 93 · raw

@m:0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/bin.Bin -> @+e:Nat -> @+t:Nat -> @right:Bool -> 0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/bin.Bin

m moved to have its last bit at exponent t

def field source · line 100 · raw

@+t:Nat -> @normal:Bool -> 0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/bin.Bin

def put source · line 107 · raw

@neg:Bool -> @t:Nat -> @+m:0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/bin.Bin -> F32

def encode.fin source · line 112 · raw

@neg:Bool -> @+m:0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/bin.Bin -> @+e:Nat -> F32

a finite value that fits binary32, as bits: 24 mantissa bits when normal, fewer at the smallest exponent when subnormal

def encode source · line 116 · raw

@v:0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/format.Val -> F32

def add source · line 130 · raw

@a:F32 -> @b:F32 -> F32

def sub source · line 133 · raw

@a:F32 -> @b:F32 -> F32

def mul source · line 136 · raw

@a:F32 -> @b:F32 -> F32

def soft source · line 142 · raw

0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/num.Impl<F32>

def hard source · line 145 · raw

0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/num.Impl<F32>

def HardOk source · line 149 · raw

Type

the hardware assumption: Base's F32.add and F32.mul are correctly rounded