diff options
Diffstat (limited to 'packages/base/src/Internal/Modular.hs')
-rw-r--r-- | packages/base/src/Internal/Modular.hs | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/packages/base/src/Internal/Modular.hs b/packages/base/src/Internal/Modular.hs index 5af038b..a211dd3 100644 --- a/packages/base/src/Internal/Modular.hs +++ b/packages/base/src/Internal/Modular.hs | |||
@@ -60,14 +60,6 @@ import Prelude hiding ((<>)) | |||
60 | 60 | ||
61 | 61 | ||
62 | 62 | ||
63 | -- | Wrapper with a phantom integer for statically checked modular arithmetic. | ||
64 | newtype Mod (n :: Nat) t = Mod {unMod:: t} | ||
65 | deriving (Storable) | ||
66 | |||
67 | instance (NFData t) => NFData (Mod n t) | ||
68 | where | ||
69 | rnf (Mod x) = rnf x | ||
70 | |||
71 | infixr 5 ./. | 63 | infixr 5 ./. |
72 | type (./.) x n = Mod n x | 64 | type (./.) x n = Mod n x |
73 | 65 | ||
@@ -136,40 +128,6 @@ instance (Integral t, KnownNat n) => Num (Mod n t) | |||
136 | fromInteger = l0 (\m x -> fromInteger x `mod` (fromIntegral m)) | 128 | fromInteger = l0 (\m x -> fromInteger x `mod` (fromIntegral m)) |
137 | 129 | ||
138 | 130 | ||
139 | instance KnownNat m => Element (Mod m I) | ||
140 | where | ||
141 | constantD x n = i2f (constantD (unMod x) n) | ||
142 | extractR ord m mi is mj js = i2fM <$> extractR ord (f2iM m) mi is mj js | ||
143 | setRect i j m x = setRect i j (f2iM m) (f2iM x) | ||
144 | sortI = sortI . f2i | ||
145 | sortV = i2f . sortV . f2i | ||
146 | compareV u v = compareV (f2i u) (f2i v) | ||
147 | selectV c l e g = i2f (selectV c (f2i l) (f2i e) (f2i g)) | ||
148 | remapM i j m = i2fM (remap i j (f2iM m)) | ||
149 | rowOp c a i1 i2 j1 j2 x = rowOpAux (c_rowOpMI m') c (unMod a) i1 i2 j1 j2 (f2iM x) | ||
150 | where | ||
151 | m' = fromIntegral . natVal $ (undefined :: Proxy m) | ||
152 | gemm u a b c = gemmg (c_gemmMI m') (f2i u) (f2iM a) (f2iM b) (f2iM c) | ||
153 | where | ||
154 | m' = fromIntegral . natVal $ (undefined :: Proxy m) | ||
155 | |||
156 | instance KnownNat m => Element (Mod m Z) | ||
157 | where | ||
158 | constantD x n = i2f (constantD (unMod x) n) | ||
159 | extractR ord m mi is mj js = i2fM <$> extractR ord (f2iM m) mi is mj js | ||
160 | setRect i j m x = setRect i j (f2iM m) (f2iM x) | ||
161 | sortI = sortI . f2i | ||
162 | sortV = i2f . sortV . f2i | ||
163 | compareV u v = compareV (f2i u) (f2i v) | ||
164 | selectV c l e g = i2f (selectV c (f2i l) (f2i e) (f2i g)) | ||
165 | remapM i j m = i2fM (remap i j (f2iM m)) | ||
166 | rowOp c a i1 i2 j1 j2 x = rowOpAux (c_rowOpML m') c (unMod a) i1 i2 j1 j2 (f2iM x) | ||
167 | where | ||
168 | m' = fromIntegral . natVal $ (undefined :: Proxy m) | ||
169 | gemm u a b c = gemmg (c_gemmML m') (f2i u) (f2iM a) (f2iM b) (f2iM c) | ||
170 | where | ||
171 | m' = fromIntegral . natVal $ (undefined :: Proxy m) | ||
172 | |||
173 | 131 | ||
174 | instance KnownNat m => CTrans (Mod m I) | 132 | instance KnownNat m => CTrans (Mod m I) |
175 | instance KnownNat m => CTrans (Mod m Z) | 133 | instance KnownNat m => CTrans (Mod m Z) |
@@ -299,10 +257,6 @@ instance KnownNat m => Normed (Vector (Mod m Z)) | |||
299 | instance KnownNat m => Numeric (Mod m I) | 257 | instance KnownNat m => Numeric (Mod m I) |
300 | instance KnownNat m => Numeric (Mod m Z) | 258 | instance KnownNat m => Numeric (Mod m Z) |
301 | 259 | ||
302 | i2f :: Storable t => Vector t -> Vector (Mod n t) | ||
303 | i2f v = unsafeFromForeignPtr (castForeignPtr fp) (i) (n) | ||
304 | where (fp,i,n) = unsafeToForeignPtr v | ||
305 | |||
306 | f2i :: Storable t => Vector (Mod n t) -> Vector t | 260 | f2i :: Storable t => Vector (Mod n t) -> Vector t |
307 | f2i v = unsafeFromForeignPtr (castForeignPtr fp) (i) (n) | 261 | f2i v = unsafeFromForeignPtr (castForeignPtr fp) (i) (n) |
308 | where (fp,i,n) = unsafeToForeignPtr v | 262 | where (fp,i,n) = unsafeToForeignPtr v |