diff options
author | Alberto Ruiz <aruiz@um.es> | 2008-03-02 12:48:14 +0000 |
---|---|---|
committer | Alberto Ruiz <aruiz@um.es> | 2008-03-02 12:48:14 +0000 |
commit | a339794105f1e3849ff4f241088450f552eae7f6 (patch) | |
tree | 7cb21ffda8fce287f22d5e8e52a50fc40e2c2805 /examples/experiments/bigtests.hs | |
parent | 2c99bcb1de3fae6e2e075316126cc70658e20ac9 (diff) |
testing modules ok
Diffstat (limited to 'examples/experiments/bigtests.hs')
-rw-r--r-- | examples/experiments/bigtests.hs | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/examples/experiments/bigtests.hs b/examples/experiments/bigtests.hs new file mode 100644 index 0000000..a3dfad2 --- /dev/null +++ b/examples/experiments/bigtests.hs | |||
@@ -0,0 +1,60 @@ | |||
1 | module Main where | ||
2 | |||
3 | import Numeric.LinearAlgebra | ||
4 | import Numeric.LinearAlgebra.Tests | ||
5 | import System.Random(randomRs,mkStdGen) | ||
6 | import Test.HUnit hiding (test) | ||
7 | import System(getArgs) | ||
8 | |||
9 | |||
10 | pseudorandomR seed (n,m) = reshape m $ fromList $ take (n*m) $ randomRs (-100,100) $ mkStdGen seed | ||
11 | |||
12 | pseudorandomC seed (n,m) = toComplex (pseudorandomR seed (n,m), pseudorandomR (seed+1) (n,m)) | ||
13 | |||
14 | bigmat = m + trans m | ||
15 | where m = pseudorandomR 18 (1000,1000) :: Matrix Double | ||
16 | bigmatc = mc + ctrans mc | ||
17 | where mc = pseudorandomC 19 (1000,1000) :: Matrix (Complex Double) | ||
18 | |||
19 | utest str b = TestCase $ assertBool str b | ||
20 | |||
21 | feye n = flipud (ident n) :: Matrix Double | ||
22 | |||
23 | infixl 4 |~| | ||
24 | a |~| b = dist a b < 10^^(-10) | ||
25 | |||
26 | dist a b = r | ||
27 | where norm = pnorm Infinity | ||
28 | na = norm a | ||
29 | nb = norm b | ||
30 | nab = norm (a-b) | ||
31 | mx = max na nb | ||
32 | mn = min na nb | ||
33 | r = if mn < eps | ||
34 | then mx | ||
35 | else nab/mx | ||
36 | |||
37 | square m = rows m == cols m | ||
38 | |||
39 | unitary m = square m && m <> ctrans m |~| ident (rows m) | ||
40 | |||
41 | eigProp m = complex m <> v |~| v <> diag s | ||
42 | where (s, v) = eig m | ||
43 | |||
44 | eigSHProp m = m <> v |~| v <> real (diag s) | ||
45 | && unitary v | ||
46 | && m |~| v <> real (diag s) <> ctrans v | ||
47 | where (s, v) = eigSH m | ||
48 | |||
49 | bigtests = do | ||
50 | putStrLn "--------- big matrices -----" | ||
51 | runTestTT $ TestList | ||
52 | [ utest "eigS" $ eigSHProp bigmat | ||
53 | , utest "eigH" $ eigSHProp bigmatc | ||
54 | , utest "eigR" $ eigProp bigmat | ||
55 | , utest "eigC" $ eigProp bigmatc | ||
56 | , utest "det" $ det (feye 1000) == 1 && det (feye 1002) == -1 | ||
57 | ] | ||
58 | return () | ||
59 | |||
60 | main = bigtests | ||