type-int-0.4: Type Level 2s- and 16s- Complement IntegersContentsIndex
Data.Type.Hex.Stage3
Portabilitynon-portable (MPTC, FD, TH, undecidable instances, missing constructors)
Stabilityexperimental
MaintainerEdward Kmett <ekmett@gmail.com>
Description
Stage3: Define everything else. The juicier bits are then exposed via Data.Type.Hex
Synopsis
tSucc :: TSucc n m => n -> m
tPred :: TSucc n m => m -> n
class TNeg a b | a -> b, b -> a
tNeg :: TNeg a b => a -> b
class TIsPositive n b | n -> b
tIsPositive :: TIsPositive n b => n -> b
class TIsNegative n b | n -> b
tIsNegative :: TIsNegative n b => n -> b
class TIsZero n b | n -> b
tIsZero :: TIsZero n b => n -> b
tAddC' :: TAddC' a b c d => a -> b -> c -> d
tAddF' :: TAddC' a b F d => a -> b -> d
class TNF a b | a -> b
tNF :: TNF a b => a -> b
class TAdd' a b c | a b -> c
tAdd' :: TAdd' a b c => a -> b -> c
class TSub' a b c | a b -> c
tSub' :: TSub' a b c => a -> b -> c
class TAdd a b c | a b -> c, a c -> b, b c -> a
tAdd :: TAdd a b c => a -> b -> c
tSub :: TAdd a b c => c -> a -> b
hexT :: Integral a => a -> TypeQ
hexE :: Integral a => a -> ExpQ
class TMul a b c | a b -> c
tMul :: TMul a b c => a -> b -> c
class THex2Binary' a b | a -> b, b -> a
class THex2Binary a b | a -> b
tHex2Binary :: THex2Binary a b => a -> b
class TBinary2Hex a b | a -> b
tBinary2Hex :: TBinary2Hex a b => a -> b
class THexBinary a b | a -> b, b -> a
class TPow' a b c | a b -> c
class TPow a b c | a b -> c
tPow :: TPow a b c => a -> b -> c
Documentation
tSucc :: TSucc n m => n -> m
tPred :: TSucc n m => m -> n
class TNeg a b | a -> b, b -> a
show/hide Instances
(TNot a b, TSucc b c) => TNeg a c
tNeg :: TNeg a b => a -> b
class TIsPositive n b | n -> b
show/hide Instances
tIsPositive :: TIsPositive n b => n -> b
class TIsNegative n b | n -> b
show/hide Instances
tIsNegative :: TIsNegative n b => n -> b
class TIsZero n b | n -> b
show/hide Instances
(Trichotomy n s, TEq s SignZero b) => TIsZero n b
tIsZero :: TIsZero n b => n -> b
tAddC' :: TAddC' a b c d => a -> b -> c -> d
tAddF' :: TAddC' a b F d => a -> b -> d
class TNF a b | a -> b
show/hide Instances
TNF' a b c => TNF a b
tNF :: TNF a b => a -> b
class TAdd' a b c | a b -> c
show/hide Instances
(TAddC' a b F d, TNF d d') => TAdd' a b d'
tAdd' :: TAdd' a b c => a -> b -> c
class TSub' a b c | a b -> c
show/hide Instances
(TNeg b b', TAdd' a b' c) => TSub' a b c
tSub' :: TSub' a b c => a -> b -> c
class TAdd a b c | a b -> c, a c -> b, b c -> a
show/hide Instances
(TAdd' a b c, TNeg b b', TAdd' c b' a, TNeg a a', TAdd' c a' b) => TAdd a b c
tAdd :: TAdd a b c => a -> b -> c
tSub :: TAdd a b c => c -> a -> b
hexT :: Integral a => a -> TypeQ
$(hexT n) returns the appropriate THex instance
hexE :: Integral a => a -> ExpQ
$(hexE n) returns an undefined value of the appropriate THex instance
class TMul a b c | a b -> c
A simple peasant multiplier. TODO: exploit 2s complement and reverse the worst cases
show/hide Instances
TMul a F F
TNeg a b => TMul a T b
TMul (D0 a1) b c => TMul a1 (D0 b) c
(TMul (D0 a1) b c, TAdd' a1 c d) => TMul a1 (D1 b) d
(TMul (D0 a1) b c, SHR1 H0 a1 a2, TAdd' a2 c d) => TMul a1 (D2 b) d
(TMul (D0 a1) b c, SHR1 H0 a1 a2, TAdd' a1 a2 a3, TAdd' a3 c d) => TMul a1 (D3 b) d
(TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, TAdd' a4 c d) => TMul a1 (D4 b) d
(TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, TAdd' a1 a4 a5, TAdd' a5 c d) => TMul a1 (D5 b) d
(TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, TAdd' a2 a4 a6, TAdd' a6 c d) => TMul a1 (D6 b) d
(TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, TAdd' a2 a4 a6, TAdd' a1 a6 a7, TAdd' a7 c d) => TMul a1 (D7 b) d
(TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, SHR1 H0 a4 a8, TAdd' a8 c d) => TMul a1 (D8 b) d
(TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, SHR1 H0 a4 a8, TAdd' a1 a8 a9, TAdd' a9 c d) => TMul a1 (D9 b) d
(TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, SHR1 H0 a4 a8, TAdd' a2 a8 aA, TAdd' aA c d) => TMul a1 (DA b) d
(TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, SHR1 H0 a4 a8, TAdd' a2 a8 a0, TAdd' a1 a0 aB, TAdd' aB c d) => TMul a1 (DB b) d
(TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, SHR1 H0 a4 a8, TAdd' a4 a8 aC, TAdd' aC c d) => TMul a1 (DC b) d
(TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, SHR1 H0 a4 a8, TAdd' a4 a8 aC, TAdd' a1 aC aD, TAdd' aD c d) => TMul a1 (DD b) d
(TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, SHR1 H0 a4 a8, TAdd' a4 a8 aC, TAdd' a2 aC aE, TAdd' aE c d) => TMul a1 (DE b) d
(TMul (D0 a1) b c, SHR1 H0 a1 a2, SHR1 H0 a2 a4, SHR1 H0 a4 a8, TAdd' a4 a8 aC, TAdd' a2 aC aE, TAdd' a1 aE aF, TAdd' aF c d) => TMul a1 (DF b) d
tMul :: TMul a b c => a -> b -> c
class THex2Binary' a b | a -> b, b -> a
show/hide Instances
THex2Binary' F F
THex2Binary' T T
THex2Binary' a b => THex2Binary' (D0 a) (O (O (O (O b))))
THex2Binary' a b => THex2Binary' (D1 a) (I (O (O (O b))))
THex2Binary' a b => THex2Binary' (D2 a) (O (I (O (O b))))
THex2Binary' a b => THex2Binary' (D3 a) (I (I (O (O b))))
THex2Binary' a b => THex2Binary' (D4 a) (O (O (I (O b))))
THex2Binary' a b => THex2Binary' (D5 a) (I (O (I (O b))))
THex2Binary' a b => THex2Binary' (D6 a) (O (I (I (O b))))
THex2Binary' a b => THex2Binary' (D7 a) (I (I (I (O b))))
THex2Binary' a b => THex2Binary' (D8 a) (O (O (O (I b))))
THex2Binary' a b => THex2Binary' (D9 a) (I (O (O (I b))))
THex2Binary' a b => THex2Binary' (DA a) (O (I (O (I b))))
THex2Binary' a b => THex2Binary' (DB a) (I (I (O (I b))))
THex2Binary' a b => THex2Binary' (DC a) (O (O (I (I b))))
THex2Binary' a b => THex2Binary' (DD a) (I (O (I (I b))))
THex2Binary' a b => THex2Binary' (DE a) (O (I (I (I b))))
THex2Binary' a b => THex2Binary' (DF a) (I (I (I (I b))))
class THex2Binary a b | a -> b
show/hide Instances
(THex2Binary' a b, TNF b b') => THex2Binary a b'
tHex2Binary :: THex2Binary a b => a -> b
class TBinary2Hex a b | a -> b
show/hide Instances
(THex2Binary' a b, TNF a a') => TBinary2Hex b a'
tBinary2Hex :: TBinary2Hex a b => a -> b
class THexBinary a b | a -> b, b -> a
show/hide Instances
class TPow' a b c | a b -> c
peasant exponentiator with explicit binary exponent
show/hide Instances
TPow' a F (D1 F)
(TPow' a k c, TMul c c d, TMul a d e) => TPow' a (I k) e
(TPow' a k c, TMul c c d) => TPow' a (O k) d
class TPow a b c | a b -> c
peasant exponentiator
show/hide Instances
(THex2Binary b b', TPow' a b' c) => TPow a b c
tPow :: TPow a b c => a -> b -> c
Produced by Haddock version 0.8