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
OV@-T:Data -> @value:T -> @overflow:Bool -> Over<T>
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>