diff options
Diffstat (limited to 'packages/hmatrix/examples/bool.hs')
-rw-r--r-- | packages/hmatrix/examples/bool.hs | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/packages/hmatrix/examples/bool.hs b/packages/hmatrix/examples/bool.hs deleted file mode 100644 index 679b8bf..0000000 --- a/packages/hmatrix/examples/bool.hs +++ /dev/null | |||
@@ -1,54 +0,0 @@ | |||
1 | -- vectorized boolean operations defined in terms of step or cond | ||
2 | |||
3 | import Numeric.LinearAlgebra | ||
4 | |||
5 | infix 4 .==., ./=., .<., .<=., .>=., .>. | ||
6 | infixr 3 .&&. | ||
7 | infixr 2 .||. | ||
8 | |||
9 | a .<. b = step (b-a) | ||
10 | a .<=. b = cond a b 1 1 0 | ||
11 | a .==. b = cond a b 0 1 0 | ||
12 | a ./=. b = cond a b 1 0 1 | ||
13 | a .>=. b = cond a b 0 1 1 | ||
14 | a .>. b = step (a-b) | ||
15 | |||
16 | a .&&. b = step (a*b) | ||
17 | a .||. b = step (a+b) | ||
18 | no a = 1-a | ||
19 | xor a b = a ./=. b | ||
20 | equiv a b = a .==. b | ||
21 | imp a b = no a .||. b | ||
22 | |||
23 | taut x = minElement x == 1 | ||
24 | |||
25 | minEvery a b = cond a b a a b | ||
26 | maxEvery a b = cond a b b b a | ||
27 | |||
28 | -- examples | ||
29 | |||
30 | clip a b x = cond y b y y b where y = cond x a a x x | ||
31 | |||
32 | disp = putStr . dispf 3 | ||
33 | |||
34 | eye n = ident n :: Matrix Double | ||
35 | row = asRow . fromList :: [Double] -> Matrix Double | ||
36 | col = asColumn . fromList :: [Double] -> Matrix Double | ||
37 | |||
38 | m = (3><4) [1..] :: Matrix Double | ||
39 | |||
40 | p = row [0,0,1,1] | ||
41 | q = row [0,1,0,1] | ||
42 | |||
43 | main = do | ||
44 | print $ find (>6) m | ||
45 | disp $ assoc (6,8) 7 $ zip (find (/=0) (eye 5)) [10..] | ||
46 | disp $ accum (eye 5) (+) [((0,2),3), ((3,1),7), ((1,1),1)] | ||
47 | disp $ m .>=. 10 .||. m .<. 4 | ||
48 | (disp . fromColumns . map flatten) [p, q, p.&&.q, p .||.q, p `xor` q, p `equiv` q, p `imp` q] | ||
49 | print $ taut $ (p `imp` q ) `equiv` (no q `imp` no p) | ||
50 | print $ taut $ (xor p q) `equiv` (p .&&. no q .||. no p .&&. q) | ||
51 | disp $ clip 3 8 m | ||
52 | disp $ col [1..7] .<=. row [1..5] | ||
53 | disp $ cond (col [1..3]) (row [1..4]) m 50 (3*m) | ||
54 | |||