~/bend-docscommunity

src/math/fixed.bend checks

raw source on the hub · import bend-collections-laws-math@1.0.0.0/src/math/fixed.bend as Fixed

7 imports
import Base
import ./u64.bend as W
import ./w64.bend as X
import ./generic.bend as G
import ./instances.bend as I
import ./number.bend as NB
import ./num.bend as N

Types

type Over source · line 31 · raw

@-T:Data -> Data

Definitions

def opt source · line 36 · raw

@-T:Data -> @bad:Bool -> @+r:T -> Maybe<&2, T>

def pick source · line 43 · raw

@-T:Data -> @c:Bool -> @+a:T -> @+b:T -> T

def res_opt source · line 50 · raw

@-T:Data -> @r:Result<&2, &2, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/num.NumError, T> -> Maybe<&2, T>

def or_top source · line 57 · raw

@-T:Data -> @+top:T -> @r:Maybe<&2, T> -> T

def res_bad source · line 64 · raw

@-T:Data -> @r:Result<&2, &2, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/num.NumError, T> -> Bool

def u32_max source · line 73 · raw

U32

def u32_add_over source · line 76 · raw

@+a:U32 -> @+b:U32 -> Bool

def u32_mul_over source · line 79 · raw

@+a:U32 -> @+b:U32 -> Bool

def u32_checked_add source · line 82 · raw

@+a:U32 -> @+b:U32 -> Maybe<&2, U32>

def u32_wrapping_add source · line 85 · raw

@+a:U32 -> @+b:U32 -> U32

def u32_saturating_add source · line 88 · raw

@+a:U32 -> @+b:U32 -> U32

def u32_overflowing_add source · line 91 · raw

@+a:U32 -> @+b:U32 -> Over<U32>

def u32_checked_sub source · line 94 · raw

@+a:U32 -> @+b:U32 -> Maybe<&2, U32>

def u32_wrapping_sub source · line 97 · raw

@+a:U32 -> @+b:U32 -> U32

def u32_saturating_sub source · line 100 · raw

@+a:U32 -> @+b:U32 -> U32

def u32_overflowing_sub source · line 103 · raw

@+a:U32 -> @+b:U32 -> Over<U32>

def u32_checked_mul source · line 106 · raw

@+a:U32 -> @+b:U32 -> Maybe<&2, U32>

def u32_wrapping_mul source · line 109 · raw

@+a:U32 -> @+b:U32 -> U32

def u32_saturating_mul source · line 112 · raw

@+a:U32 -> @+b:U32 -> U32

def u32_overflowing_mul source · line 115 · raw

@+a:U32 -> @+b:U32 -> Over<U32>

def u32_checked_div source · line 118 · raw

@+a:U32 -> @+b:U32 -> Maybe<&2, U32>

def u32_checked_rem source · line 121 · raw

@+a:U32 -> @+b:U32 -> Maybe<&2, U32>

def u32_checked_pow source · line 124 · raw

@+a:U32 -> @+e:U32 -> Maybe<&2, U32>

def u32_wpow source · line 128 · raw

@fuel:Nat -> @+e:U32 -> @+b:U32 -> @+acc:U32 -> @z:Bool -> U32

binary exponentiation modulo 2^32; e halves every step (32 steps)

def u32_wrapping_pow source · line 137 · raw

@+a:U32 -> @+e:U32 -> U32

def u32_saturating_pow source · line 140 · raw

@+a:U32 -> @+e:U32 -> U32

def u32_overflowing_pow source · line 143 · raw

@+a:U32 -> @+e:U32 -> Over<U32>

def u32_wrapping_shl source · line 148 · raw

@+a:U32 -> @+s:U32 -> U32

shifts by s mod 32 (Rust masks the amount the same way); a left shift is the product with 2^k modulo 2^32

def u32_checked_shl source · line 151 · raw

@+a:U32 -> @+s:U32 -> Maybe<&2, U32>

def u32_overflowing_shl source · line 154 · raw

@+a:U32 -> @+s:U32 -> Over<U32>

def u32_wrapping_shr source · line 157 · raw

@+a:U32 -> @+s:U32 -> U32

def u32_checked_shr source · line 160 · raw

@+a:U32 -> @+s:U32 -> Maybe<&2, U32>

def u32_overflowing_shr source · line 163 · raw

@+a:U32 -> @+s:U32 -> Over<U32>

def ones4 source · line 169 · raw

@+n:Nat -> Nat

the 1 bits of a value below 16

def u32_bc_go source · line 207 · raw

@fuel:Nat -> @+x:U32 -> Nat

the 1 bits of the k low nibbles of x, a nibble at a time

def u32_bit_count source · line 214 · raw

@+x:U32 -> Nat

def u32_is_prime source · line 219 · raw

@+x:U32 -> Bool

def u32_np source · line 224 · raw

@fuel:Nat -> @+m:U32 -> @wrapped:Bool -> @prime:Bool -> Maybe<&2, U32>

the least prime above n below 2^32: the candidates n+1, n+2, ... stop at the first prime or when the next candidate wraps to 0

def u32_next_prime source · line 235 · raw

@+n:U32 -> Maybe<&2, U32>

def byte32 source · line 240 · raw

@+x:U32 -> @+k:Nat -> U32

def u32_to_bytes_le source · line 243 · raw

@+x:U32 -> List<&2, U32>

def u32_to_bytes_be source · line 246 · raw

@+x:U32 -> List<&2, U32>

def is_byte source · line 249 · raw

@+b:U32 -> Bool

def dig32 source · line 253 · raw

@r:Maybe<&2, U32> -> @ok:Bool -> @+b:U32 -> Maybe<&2, U32>

one more base-256 digit below the value so far: b + 256 z

def from4 source · line 264 · raw

@+b0:U32 -> @+b1:U32 -> @+b2:U32 -> @+b3:U32 -> Maybe<&2, U32>

def u32_from_bytes_le source · line 267 · raw

@bs:List<&2, U32> -> Maybe<&2, U32>

def u32_from_bytes_be source · line 274 · raw

@bs:List<&2, U32> -> Maybe<&2, U32>

def u64_max source · line 283 · raw

0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64

def u64_zero source · line 286 · raw

0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64

def u64_checked_add source · line 289 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+b:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> Maybe<&2, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>

def u64_wrapping_add source · line 292 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+b:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64

def u64_saturating_add source · line 295 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+b:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64

def u64_overflowing_add source · line 298 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+b:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> Over<0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>

def u64_wsub source · line 302 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+b:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64

a - b modulo 2^64 for any a, b: a + (2^64 - 1 - b) + 1

def u64_checked_sub source · line 305 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+b:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> Maybe<&2, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>

def u64_wrapping_sub source · line 308 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+b:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64

def u64_saturating_sub source · line 311 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+b:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64

def u64_overflowing_sub source · line 314 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+b:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> Over<0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>

def u64_checked_mul source · line 317 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+b:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> Maybe<&2, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>

def u64_wrapping_mul source · line 320 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+b:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64

def u64_saturating_mul source · line 323 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+b:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64

def u64_overflowing_mul source · line 326 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+b:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> Over<0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>

def u64_cdiv source · line 331 · raw

@z:Bool -> @+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+b:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> Maybe<&2, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>

the quotient is only computed for a nonzero divisor (the two-limb division by zero would build a Nat past the runtime's 2^48 bound)

def u64_crem source · line 338 · raw

@z:Bool -> @+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+b:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> Maybe<&2, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>

def u64_checked_div source · line 345 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+b:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> Maybe<&2, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>

def u64_checked_rem source · line 348 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+b:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> Maybe<&2, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>

def u64_checked_pow source · line 351 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+e:U32 -> Maybe<&2, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>

def u64_wpow source · line 354 · raw

@fuel:Nat -> @+e:U32 -> @+b:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+acc:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @z:Bool -> 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64

def u64_wrapping_pow source · line 363 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+e:U32 -> 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64

def u64_saturating_pow source · line 366 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+e:U32 -> 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64

def u64_overflowing_pow source · line 369 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+e:U32 -> Over<0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>

def u64_checked_shl source · line 372 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+s:U32 -> Maybe<&2, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>

def u64_wrapping_shl source · line 375 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+s:U32 -> 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64

def u64_overflowing_shl source · line 378 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+s:U32 -> Over<0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>

def u64_checked_shr source · line 381 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+s:U32 -> Maybe<&2, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>

def u64_wrapping_shr source · line 384 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+s:U32 -> 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64

def u64_overflowing_shr source · line 387 · raw

@+a:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> @+s:U32 -> Over<0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>

def u64_bit_count source · line 390 · raw

@+x:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> Nat

def u64_to_bytes_le source · line 393 · raw

@+x:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> List<&2, U32>

def u64_to_bytes_be source · line 396 · raw

@+x:0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64 -> List<&2, U32>

def dig64 source · line 399 · raw

@r:Maybe<&2, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64> -> @ok:Bool -> @+b:U32 -> Maybe<&2, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>

def u64_from_bytes_le source · line 410 · raw

@bs:List<&2, U32> -> Maybe<&2, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>

def u64_from_bytes_be source · line 417 · raw

@bs:List<&2, U32> -> Maybe<&2, 0xf86f5f1d9a594d5a5cff999100e01d03/src/math/u64.U64>