| Copyright | (c) 2025 Jared Tobin |
|---|---|
| License | MIT |
| Maintainer | Jared Tobin <jared@ppad.tech> |
| Safe Haskell | None |
| Language | Haskell2010 |
Data.Word.Wide
Description
Wide words, consisting of two Limbs.
Synopsis
- data Wide = Wide !(# Limb, Limb #)
- wide :: Word -> Word -> Wide
- to :: Integer -> Wide
- from :: Wide -> Integer
- or :: Wide -> Wide -> Wide
- or# :: Word# -> Word# -> Word#
- and :: Wide -> Wide -> Wide
- and# :: Word# -> Word# -> Word#
- xor :: Wide -> Wide -> Wide
- xor# :: Word# -> Word# -> Word#
- not :: Wide -> Wide
- not# :: Word# -> Word#
- eq_vartime :: Wide -> Wide -> Bool
- add :: Wide -> Wide -> Wide
- add_o :: Wide -> Wide -> (Wide, Word)
- sub :: Wide -> Wide -> Wide
- mul :: Wide -> Wide -> Wide
- neg :: Wide -> Wide
- add_o# :: (# Limb, Limb #) -> (# Limb, Limb #) -> (# (# Limb, Limb #), Limb #)
- add_w# :: (# Limb, Limb #) -> (# Limb, Limb #) -> (# Limb, Limb #)
- sub_b# :: (# Limb, Limb #) -> (# Limb, Limb #) -> (# (# Limb, Limb #), Limb #)
- sub_w# :: (# Limb, Limb #) -> (# Limb, Limb #) -> (# Limb, Limb #)
- mul_w# :: (# Limb, Limb #) -> (# Limb, Limb #) -> (# Limb, Limb #)
- neg# :: (# Limb, Limb #) -> (# Limb, Limb #)
Wide Words
Little-endian wide words.
Construction, Conversion
Bit Manipulation
Comparison
Arithmetic
Overflowing addition on Wide words, computing 'a + b', returning
the sum and carry.
Unboxed Arithmetic
Arguments
| :: (# Limb, Limb #) | augend |
| -> (# Limb, Limb #) | addend |
| -> (# (# Limb, Limb #), Limb #) | (# sum, carry bit #) |
Overflowing addition, computing 'a + b', returning the sum and a carry bit.
Wrapping addition, computing 'a + b'.
Arguments
| :: (# Limb, Limb #) | minuend |
| -> (# Limb, Limb #) | subtrahend |
| -> (# (# Limb, Limb #), Limb #) | (# difference, borrow mask #) |
Borrowing subtraction, computing 'a - b' and returning the difference with a borrow mask.
Wrapping subtraction, computing 'a - b'.
Wrapping multiplication, computing 'a b'.