diff options
-rw-r--r-- | lib/Numeric/Container.hs | 65 | ||||
-rw-r--r-- | lib/Numeric/Matrix.hs | 15 | ||||
-rw-r--r-- | lib/Numeric/Vector.hs | 8 |
3 files changed, 0 insertions, 88 deletions
diff --git a/lib/Numeric/Container.hs b/lib/Numeric/Container.hs index a0e489b..d6b1342 100644 --- a/lib/Numeric/Container.hs +++ b/lib/Numeric/Container.hs | |||
@@ -21,7 +21,6 @@ | |||
21 | module Numeric.Container ( | 21 | module Numeric.Container ( |
22 | Linear(..), | 22 | Linear(..), |
23 | Container(..), RealElement, Precision(..), NumericContainer(..), comp, | 23 | Container(..), RealElement, Precision(..), NumericContainer(..), comp, |
24 | -- Complexable(..), Precisionable(..), | ||
25 | Convert(..), --AutoReal(..), | 24 | Convert(..), --AutoReal(..), |
26 | RealOf, ComplexOf, SingleOf, DoubleOf, | 25 | RealOf, ComplexOf, SingleOf, DoubleOf, |
27 | 26 | ||
@@ -123,70 +122,6 @@ type instance IndexOf Vector = Int | |||
123 | type instance IndexOf Matrix = (Int,Int) | 122 | type instance IndexOf Matrix = (Int,Int) |
124 | 123 | ||
125 | ------------------------------------------------------------------- | 124 | ------------------------------------------------------------------- |
126 | {- | ||
127 | -- | Supported single-double precision type pairs | ||
128 | class (Element e) => V_Precision e where | ||
129 | v_double2FloatG :: Vector e -> Vector (SingleOf e) | ||
130 | v_float2DoubleG :: Vector (SingleOf e) -> Vector e | ||
131 | {- | ||
132 | instance V_Precision Float where | ||
133 | v_double2FloatG = double2FloatV | ||
134 | v_float2DoubleG = float2DoubleV | ||
135 | -} | ||
136 | instance V_Precision Double where | ||
137 | v_double2FloatG = double2FloatV | ||
138 | v_float2DoubleG = float2DoubleV | ||
139 | {- | ||
140 | instance V_Precision (Complex Float) where | ||
141 | v_double2FloatG = asComplex . double2FloatV . asReal | ||
142 | v_float2DoubleG = asComplex . float2DoubleV . asReal | ||
143 | -} | ||
144 | instance V_Precision (Complex Double) where | ||
145 | v_double2FloatG = asComplex . double2FloatV . asReal | ||
146 | v_float2DoubleG = asComplex . float2DoubleV . asReal | ||
147 | -} | ||
148 | ------------------------------------------------------------------- | ||
149 | {- | ||
150 | -- | converting to/from complex containers | ||
151 | class RealElement t => Complexable c t where | ||
152 | v_toComplex :: (c t, c t) -> c (Complex t) | ||
153 | v_fromComplex :: c (Complex t) -> (c t, c t) | ||
154 | v_complex' :: c t -> c (Complex t) | ||
155 | v_conj :: c (Complex t) -> c (Complex t) | ||
156 | |||
157 | -- | converting to/from single/double precision numbers | ||
158 | class (Element (SingleOf t), Element t, RealElement (RealOf t)) => Precisionable c t where | ||
159 | v_single' :: (V_Precision (DoubleOf t)) => c t -> c (SingleOf t) | ||
160 | v_double' :: (V_Precision (DoubleOf t)) => c t -> c (DoubleOf t) | ||
161 | |||
162 | -- | generic conversion functions | ||
163 | class (Element t, RealElement (RealOf t)) => V_Convert t where | ||
164 | -- | real/complex | ||
165 | v_real :: Complexable c (RealOf t) => c (RealOf t) -> c t -- from the instances, this looks like it turns a real object into a complex object WHEN the context is a complex object | ||
166 | v_complex :: Complexable c (RealOf t) => c t -> c (ComplexOf t) | ||
167 | -- | single/double | ||
168 | v_single :: Precisionable c t => c t -> c (SingleOf t) | ||
169 | v_double :: Precisionable c t => c t -> c (DoubleOf t) | ||
170 | -} | ||
171 | ------------------------------------------------------------------- | ||
172 | {- | ||
173 | instance Precisionable Vector Float where | ||
174 | v_single' = id | ||
175 | v_double' = float2DoubleG | ||
176 | |||
177 | instance Precisionable Vector Double where | ||
178 | v_single' = double2FloatG | ||
179 | v_double' = id | ||
180 | |||
181 | instance Precisionable Vector (Complex Float) where | ||
182 | v_single' = id | ||
183 | v_double' = float2DoubleG | ||
184 | |||
185 | instance Precisionable Vector (Complex Double) where | ||
186 | v_single' = double2FloatG | ||
187 | v_double' = id | ||
188 | -} | ||
189 | ------------------------------------------------------------------- | ||
190 | 125 | ||
191 | class (Element t, Element (RealOf t)) => Convert t where | 126 | class (Element t, Element (RealOf t)) => Convert t where |
192 | real :: NumericContainer c => c (RealOf t) -> c t | 127 | real :: NumericContainer c => c (RealOf t) -> c t |
diff --git a/lib/Numeric/Matrix.hs b/lib/Numeric/Matrix.hs index 73515c1..fa3f94a 100644 --- a/lib/Numeric/Matrix.hs +++ b/lib/Numeric/Matrix.hs | |||
@@ -88,21 +88,6 @@ instance NumericContainer Matrix where | |||
88 | double' = liftMatrix double' | 88 | double' = liftMatrix double' |
89 | 89 | ||
90 | --------------------------------------------------------------- | 90 | --------------------------------------------------------------- |
91 | {- | ||
92 | instance (RealElement e, Complexable Vector e) => Complexable Matrix e where | ||
93 | v_toComplex = uncurry $ liftMatrix2 $ curry toComplex | ||
94 | v_fromComplex z = (reshape c *** reshape c) . fromComplex . flatten $ z | ||
95 | where c = cols z | ||
96 | v_conj = liftMatrix conj | ||
97 | v_complex' = liftMatrix complex' | ||
98 | |||
99 | --------------------------------------------------------------- | ||
100 | |||
101 | instance (Precisionable Vector e) => Precisionable Matrix e where | ||
102 | v_single' = liftMatrix single' | ||
103 | v_double' = liftMatrix double' | ||
104 | -} | ||
105 | --------------------------------------------------------------- | ||
106 | 91 | ||
107 | instance (Linear Vector a, Container Matrix a) => Linear Matrix a where | 92 | instance (Linear Vector a, Container Matrix a) => Linear Matrix a where |
108 | scale x = liftMatrix (scale x) | 93 | scale x = liftMatrix (scale x) |
diff --git a/lib/Numeric/Vector.hs b/lib/Numeric/Vector.hs index 5cc51ac..55d645a 100644 --- a/lib/Numeric/Vector.hs +++ b/lib/Numeric/Vector.hs | |||
@@ -281,14 +281,6 @@ instance NumericContainer Vector where | |||
281 | double' = float2DoubleG | 281 | double' = float2DoubleG |
282 | 282 | ||
283 | -------------------------------------------------------------------------- | 283 | -------------------------------------------------------------------------- |
284 | {- | ||
285 | instance RealElement e => Complexable Vector e where | ||
286 | v_toComplex = toComplexV | ||
287 | v_fromComplex = fromComplexV | ||
288 | v_conj = conjV | ||
289 | v_complex' v = toComplex (v,constantD 0 (dim v)) | ||
290 | -} | ||
291 | ------------------------------------------------------------------- | ||
292 | 284 | ||
293 | instance Linear Vector Float where | 285 | instance Linear Vector Float where |
294 | scale = vectorMapValF Scale | 286 | scale = vectorMapValF Scale |