Portability | non-portable (MPTC, FD, TH, undecidable instances, missing constructors) |
---|---|
Stability | experimental |
Maintainer | Edward Kmett <ekmett@gmail.com> |
Stage3: Define everything else. The juicier bits are then exposed via Data.Type.Hex
- 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 -> Type
- hexE :: Integral a => a -> Exp
- 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
class TIsPositive n b | n -> bSource
(Trichotomy n s, TEq s Positive b) => TIsPositive n b |
tIsPositive :: TIsPositive n b => n -> bSource
class TIsNegative n b | n -> bSource
(Trichotomy n s, TEq s Negative b) => TIsNegative n b |
tIsNegative :: TIsNegative n b => n -> bSource
hexE :: Integral a => a -> ExpSource
$(hexE n) returns an undefined value of the appropriate THex instance
class TMul a b c | a b -> cSource
A simple peasant multiplier. TODO: exploit 2s complement and reverse the worst cases
TNeg a b => TMul a T b | |
TMul a F F | |
(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 (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' 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' 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' 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' 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' 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' a8 c d) => TMul a1 (D8 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, 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' 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' a4 c d) => TMul a1 (D4 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, TAdd' a2 c d) => TMul a1 (D2 b) d | |
(TMul (D0 a1) b c, TAdd' a1 c d) => TMul a1 (D1 b) d | |
TMul (D0 a1) b c => TMul a1 (D0 b) c |
class THex2Binary' a b | a -> b, b -> aSource
THex2Binary' F F | |
THex2Binary' T T | |
THex2Binary' a b => THex2Binary' (DF a) (I (I (I (I b)))) | |
THex2Binary' a b => THex2Binary' (DE a) (O (I (I (I b)))) | |
THex2Binary' a b => THex2Binary' (DD a) (I (O (I (I b)))) | |
THex2Binary' a b => THex2Binary' (DC a) (O (O (I (I b)))) | |
THex2Binary' a b => THex2Binary' (DB a) (I (I (O (I b)))) | |
THex2Binary' a b => THex2Binary' (DA a) (O (I (O (I b)))) | |
THex2Binary' a b => THex2Binary' (D9 a) (I (O (O (I b)))) | |
THex2Binary' a b => THex2Binary' (D8 a) (O (O (O (I b)))) | |
THex2Binary' a b => THex2Binary' (D7 a) (I (I (I (O b)))) | |
THex2Binary' a b => THex2Binary' (D6 a) (O (I (I (O b)))) | |
THex2Binary' a b => THex2Binary' (D5 a) (I (O (I (O b)))) | |
THex2Binary' a b => THex2Binary' (D4 a) (O (O (I (O b)))) | |
THex2Binary' a b => THex2Binary' (D3 a) (I (I (O (O b)))) | |
THex2Binary' a b => THex2Binary' (D2 a) (O (I (O (O b)))) | |
THex2Binary' a b => THex2Binary' (D1 a) (I (O (O (O b)))) | |
THex2Binary' a b => THex2Binary' (D0 a) (O (O (O (O b)))) |
class THex2Binary a b | a -> bSource
(THex2Binary' a b, TNF b b') => THex2Binary a b' |
tHex2Binary :: THex2Binary a b => a -> bSource
class TBinary2Hex a b | a -> bSource
(THex2Binary' a b, TNF a a') => TBinary2Hex b a' |
tBinary2Hex :: TBinary2Hex a b => a -> bSource
class THexBinary a b | a -> b, b -> aSource
(THex2Binary a b, TBinary2Hex b a) => THexBinary a b |
class TPow a b c | a b -> cSource
peasant exponentiator
(THex2Binary b b', TPow' a b' c) => TPow a b c |