* Bug #11209 fixed - variance returned wrong results for complex arguments.
[scilab.git] / scilab / modules / statistics / tests / unit_tests / variance.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2008 - INRIA - Michael Baudin
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7
8 // With x as a row vector and 1 argument
9 data = [10 20 30 40 50 60 70 80 90];
10 computed = variance(data);
11 expected = 750;
12 if abs(computed-expected)>%eps then pause,end
13 // With x as a column vector and 1 argument
14 data = [10; 20; 30; 40; 50; 60; 70; 80; 90];
15 computed = variance(data);
16 expected = 750;
17 if abs(computed-expected)>%eps then pause,end
18 // With x as a matrix
19 data = [10 20 30 40;50 60 70 90];
20 computed = variance(data);
21 expected = 712.5;
22 if abs(computed-expected)>%eps then pause,end
23 // With x as a row vector and specified orient
24 data = [10 20 30 40;50 60 70 90];
25 computed = variance(data,1);
26 expected = [800. 800. 800. 1250.];
27 if abs(computed-expected)>%eps then pause,end
28 // With x as a row vector and specified orient
29 data = [10 20 30 40;50 60 70 90];
30 computed = variance(data,"r");
31 expected = [800. 800. 800. 1250.];
32 if abs(computed-expected)>%eps then pause,end
33 // With x as a row vector and specified orient
34 data = [10 20 30 40;50 60 70 90];
35 computed = variance(data,2);
36 expected = [500.;875.]/3.;
37 if abs(computed-expected)>%eps then pause,end
38 // With x as a row vector and specified orient
39 data = [10 20 30 40;50 60 70 90];
40 computed = variance(data,"c");
41 expected = [500.;875.]/3.;
42 if abs(computed-expected)>%eps then pause,end
43
44 // With x as a complex row vector and 1 argument
45 a = [ 0.9, 0.7;
46 0.1, 0.1;
47 0.5, 0.4 ];
48 data = a + a * 2 * %i;
49 computed = variance(data);
50 expected = 0.515;   // must be variance(real(data)) + variance(imag(data))
51 if abs(computed-expected)>%eps then pause,end
52
53 // With x as a complex row vector and computation by column
54 a = [ 0.9, 0.7;
55 0.1, 0.1;
56 0.5, 0.4 ];
57 data = a + a * 2 * %i;
58 computed = variance(data,1);
59 expected = [0.8 0.45];
60 if abs(computed-expected)>%eps then pause,end
61 // With x as a complex row vector and computation by row
62 a = [ 0.9, 0.7;
63 0.1, 0.1;
64 0.5, 0.4 ];
65 data = a + a * 2 * %i;
66 computed = variance(data,2);
67 expected = [0.1    
68     0.     
69     0.025];
70 if abs(computed-expected)>%eps then pause,end
71
72 // Normalization with N-1
73 x = [0.9    0.7  
74     0.1    0.1  
75     0.5    0.4];
76 orien = 1;
77 w = 0;
78 computed = variance(x,orien,w);
79 expected = [0.16 0.09];
80 if abs(computed-expected)>%eps then pause,end
81 // Normalization with N
82 x = [0.9    0.7  
83     0.1    0.1  
84     0.5    0.4];
85 orien = 1;
86 w = 1;
87 computed = variance(x,orien,w);
88 expected = [0.32 0.18] / 3;
89 if abs(computed-expected)>%eps then pause,end
90