src/float/bin.bend checks
raw source on the hub · import 0x5f97f469d15c04a181dae0e4e64e1d3d/src/float/bin.bend as Bin
1 import
import Base
Types
type Bin source · line 13 · raw
Data
BZBin
B0@r:Bin -> Bin
B1@r:Bin -> Bin
Definitions
def one source · line 18 · raw
Bin
def is_zero source · line 21 · raw
@a:Bin -> Bool
def trim.cons0 source · line 30 · raw
@t:Bin -> Bin
def trim source · line 38 · raw
@a:Bin -> Bin
the same number without high zero bits, so equal numbers are equal terms
def odd source · line 47 · raw
@a:Bin -> Bool
def inc source · line 54 · raw
@a:Bin -> Bin
def cons source · line 63 · raw
@s:Bool -> @r:Bin -> Bin
def adc.one source · line 70 · raw
@a:Bin -> @c:Bool -> Bin
def adc source · line 79 · raw
@a:Bin -> @b:Bin -> @+c:Bool -> Bin
a + b + carry, one bit at a time: bits 0+0 pass the carry through and carry nothing, 0+1 flip it and carry it, 1+1 pass it and carry one
def add source · line 94 · raw
@a:Bin -> @b:Bin -> Bin
def dec source · line 97 · raw
@a:Bin -> Bin
def sbb.one source · line 106 · raw
@a:Bin -> @w:Bool -> Bin
def sbb source · line 114 · raw
@a:Bin -> @b:Bin -> @+w:Bool -> Bin
a - b - borrow, for a >= b (callers order the operands with cmp first)
def sub source · line 129 · raw
@a:Bin -> @b:Bin -> Bin
def mul source · line 132 · raw
@a:Bin -> @+b:Bin -> Bin
def cmp.fin source · line 141 · raw
@p:Bool -> @q:Bool -> @hi:Cmp -> Cmp
def cmp source · line 150 · raw
@a:Bin -> @b:Bin -> Cmp
def shl source · line 172 · raw
@a:Bin -> @n:Nat -> Bin
a * 2^n
def pow2 source · line 179 · raw
@n:Nat -> Bin
def len.up source · line 182 · raw
@l:Nat -> Nat
def len source · line 190 · raw
@a:Bin -> Nat
number of significant bits
def shr source · line 201 · raw
@k:Nat -> @a:Bin -> @r:Bool -> @s:Bool -> Pair(Bin, Pair(Bool, Bool))
a / 2^k, with the last bit shifted out (round) and whether any bit below it was set (sticky); r and s are the bits already shifted out
def of_word source · line 215 · raw
@n:Nat -> @w:Word(n) -> Bin
the n low bits of a word, and back
def to_word source · line 224 · raw
@n:Nat -> @a:Bin -> Word(n)
def to_nat source · line 237 · raw
@a:Bin -> Nat
def of_nat source · line 246 · raw
@n:Nat -> Bin
def low source · line 254 · raw
@k:Nat -> @a:Bin -> Bin
the low k bits of a
def take.cons source · line 267 · raw
@-r:Nat -> @b:Bool -> @p:Pair(Bin, Word(r)) -> Pair(Bin, Word(r))
def take source · line 272 · raw
@k:Nat -> @-r:Nat -> @w:Word(Nat.add(k, r)) -> Pair(Bin, Word(r))
the low k bits of a word as a Bin, and the word that remains