accelerate-bignum-0.1.0.0: Fixed-length large integer arithmetic for Accelerate

Copyright[2016] Trevor L. McDonell
LicenseBSD3
MaintainerTrevor L. McDonell <tmcdonell@cse.unsw.edu.au>
Stabilityexperimental
Portabilitynon-portable (GHC extensions)
Safe HaskellNone
LanguageHaskell2010

Data.Array.Accelerate.Data.BigWord

Contents

Description

Fixed length unsigned word types

Synopsis

Documentation

Internals

data BigWord hi lo Source #

Large word of fixed size represented as separate high and low (unsigned) words.

Constructors

W2 !hi !lo 

Instances

(Bounded a, Bounded b) => Bounded (BigWord a b) Source # 

Methods

minBound :: BigWord a b #

maxBound :: BigWord a b #

(Num a, Enum a, Bits a, Num b, Enum b, Bounded b, Eq b) => Enum (BigWord a b) Source # 

Methods

succ :: BigWord a b -> BigWord a b #

pred :: BigWord a b -> BigWord a b #

toEnum :: Int -> BigWord a b #

fromEnum :: BigWord a b -> Int #

enumFrom :: BigWord a b -> [BigWord a b] #

enumFromThen :: BigWord a b -> BigWord a b -> [BigWord a b] #

enumFromTo :: BigWord a b -> BigWord a b -> [BigWord a b] #

enumFromThenTo :: BigWord a b -> BigWord a b -> BigWord a b -> [BigWord a b] #

(Eq a, Eq b) => Eq (BigWord a b) Source # 

Methods

(==) :: BigWord a b -> BigWord a b -> Bool #

(/=) :: BigWord a b -> BigWord a b -> Bool #

(Integral a, FiniteBits a, Num2 a, Bounded a, Integral b, FiniteBits b, Num2 b, Bounded b, BigWordCtx a b) => Integral (BigWord a b) Source # 

Methods

quot :: BigWord a b -> BigWord a b -> BigWord a b #

rem :: BigWord a b -> BigWord a b -> BigWord a b #

div :: BigWord a b -> BigWord a b -> BigWord a b #

mod :: BigWord a b -> BigWord a b -> BigWord a b #

quotRem :: BigWord a b -> BigWord a b -> (BigWord a b, BigWord a b) #

divMod :: BigWord a b -> BigWord a b -> (BigWord a b, BigWord a b) #

toInteger :: BigWord a b -> Integer #

(Num a, Eq a, Integral b, Bounded b, Num2 b, BigWordCtx a b) => Num (BigWord a b) Source # 

Methods

(+) :: BigWord a b -> BigWord a b -> BigWord a b #

(-) :: BigWord a b -> BigWord a b -> BigWord a b #

(*) :: BigWord a b -> BigWord a b -> BigWord a b #

negate :: BigWord a b -> BigWord a b #

abs :: BigWord a b -> BigWord a b #

signum :: BigWord a b -> BigWord a b #

fromInteger :: Integer -> BigWord a b #

(Ord a, Ord b) => Ord (BigWord a b) Source # 

Methods

compare :: BigWord a b -> BigWord a b -> Ordering #

(<) :: BigWord a b -> BigWord a b -> Bool #

(<=) :: BigWord a b -> BigWord a b -> Bool #

(>) :: BigWord a b -> BigWord a b -> Bool #

(>=) :: BigWord a b -> BigWord a b -> Bool #

max :: BigWord a b -> BigWord a b -> BigWord a b #

min :: BigWord a b -> BigWord a b -> BigWord a b #

(Integral (BigWord a b), Num (BigWord a b), Ord (BigWord a b)) => Real (BigWord a b) Source # 

Methods

toRational :: BigWord a b -> Rational #

Integral (BigWord a b) => Show (BigWord a b) Source # 

Methods

showsPrec :: Int -> BigWord a b -> ShowS #

show :: BigWord a b -> String #

showList :: [BigWord a b] -> ShowS #

(Integral a, FiniteBits a, Integral b, FiniteBits b, BigWordCtx a b) => Bits (BigWord a b) Source # 

Methods

(.&.) :: BigWord a b -> BigWord a b -> BigWord a b #

(.|.) :: BigWord a b -> BigWord a b -> BigWord a b #

xor :: BigWord a b -> BigWord a b -> BigWord a b #

complement :: BigWord a b -> BigWord a b #

shift :: BigWord a b -> Int -> BigWord a b #

rotate :: BigWord a b -> Int -> BigWord a b #

zeroBits :: BigWord a b #

bit :: Int -> BigWord a b #

setBit :: BigWord a b -> Int -> BigWord a b #

clearBit :: BigWord a b -> Int -> BigWord a b #

complementBit :: BigWord a b -> Int -> BigWord a b #

testBit :: BigWord a b -> Int -> Bool #

bitSizeMaybe :: BigWord a b -> Maybe Int #

bitSize :: BigWord a b -> Int #

isSigned :: BigWord a b -> Bool #

shiftL :: BigWord a b -> Int -> BigWord a b #

unsafeShiftL :: BigWord a b -> Int -> BigWord a b #

shiftR :: BigWord a b -> Int -> BigWord a b #

unsafeShiftR :: BigWord a b -> Int -> BigWord a b #

rotateL :: BigWord a b -> Int -> BigWord a b #

rotateR :: BigWord a b -> Int -> BigWord a b #

popCount :: BigWord a b -> Int #

(Integral a, FiniteBits a, Integral b, FiniteBits b, BigWordCtx a b) => FiniteBits (BigWord a b) Source # 
(Integral a, FiniteBits a, Num2 a, Integral b, FiniteBits b, Num2 b, BigWordCtx a b) => Num2 (BigWord a b) Source # 

Associated Types

type Signed (BigWord a b) :: * Source #

type Unsigned (BigWord a b) :: * Source #

Methods

signed :: BigWord a b -> Signed (BigWord a b) Source #

unsigned :: BigWord a b -> Unsigned (BigWord a b) Source #

addWithCarry :: BigWord a b -> BigWord a b -> (BigWord a b, Unsigned (BigWord a b)) Source #

mulWithCarry :: BigWord a b -> BigWord a b -> (BigWord a b, Unsigned (BigWord a b)) Source #

type Signed (Exp (BigWord a b)) Source # 
type Signed (Exp (BigWord a b)) = Exp (BigInt (Signed a) b)
type Unsigned (Exp (BigWord a b)) Source # 
type Unsigned (Exp (BigWord a b)) = Exp (BigWord a b)
type EltRepr (BigWord a b) 
type EltRepr (BigWord a b) = EltRepr (a, b)
type ProdRepr (BigWord a b) 
type ProdRepr (BigWord a b) = ProdRepr (a, b)
type Plain (BigWord a b) # 
type Plain (BigWord a b) = BigWord (Plain a) (Plain b)
type Signed (BigWord a b) Source # 
type Signed (BigWord a b) = BigInt (Signed a) b
type Unsigned (BigWord a b) Source # 
type Unsigned (BigWord a b) = BigWord (Unsigned a) b

class Num2 w where Source #

Addition and multiplication with carry

Minimal complete definition

signed, unsigned, addWithCarry, mulWithCarry

Associated Types

type Signed w Source #

type Unsigned w Source #

Methods

signed :: w -> Signed w Source #

unsigned :: w -> Unsigned w Source #

addWithCarry :: w -> w -> (w, Unsigned w) Source #

mulWithCarry :: w -> w -> (w, Unsigned w) Source #

Instances

Num2 Int8 Source # 
Num2 Int16 Source # 
Num2 Int32 Source # 
Num2 Int64 Source # 
Num2 Word8 Source # 
Num2 Word16 Source # 
Num2 Word32 Source # 
Num2 Word64 Source # 
(Ord a, Num a, Num2 a, Num (BigInt a b), Ord (BigInt a b), Num2 (BigInt a b), Bits (BigInt a b), Num (BigWord (Unsigned a) b), Num2 (BigWord (Unsigned a) b), Bounded (BigWord (Unsigned a) b), BigIntCtx a b, (~) * (Unsigned (Unsigned a)) (Unsigned a)) => Num2 (BigInt a b) Source # 

Associated Types

type Signed (BigInt a b) :: * Source #

type Unsigned (BigInt a b) :: * Source #

Methods

signed :: BigInt a b -> Signed (BigInt a b) Source #

unsigned :: BigInt a b -> Unsigned (BigInt a b) Source #

addWithCarry :: BigInt a b -> BigInt a b -> (BigInt a b, Unsigned (BigInt a b)) Source #

mulWithCarry :: BigInt a b -> BigInt a b -> (BigInt a b, Unsigned (BigInt a b)) Source #

(Integral a, FiniteBits a, Num2 a, Integral b, FiniteBits b, Num2 b, BigWordCtx a b) => Num2 (BigWord a b) Source # 

Associated Types

type Signed (BigWord a b) :: * Source #

type Unsigned (BigWord a b) :: * Source #

Methods

signed :: BigWord a b -> Signed (BigWord a b) Source #

unsigned :: BigWord a b -> Unsigned (BigWord a b) Source #

addWithCarry :: BigWord a b -> BigWord a b -> (BigWord a b, Unsigned (BigWord a b)) Source #

mulWithCarry :: BigWord a b -> BigWord a b -> (BigWord a b, Unsigned (BigWord a b)) Source #