1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
/*
* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
* Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
*
* This file must be used under the terms of the CeCILL.
* This source file is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at
* http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
*
*/
#include "variance.h"
#include "assert.h"
static int test(void){
double matrice[20]={1,5,9,4,8,2,6,1,5,9,3,7,2,6,1,4,8,3,7,2};
double out, *outColumns, *outRows;
double out2, *outColumns2, *outRows2;
double result= 7.5026315789473692063893;
double resultColumns[5]= {1.6666666666666667406815 ,1.6666666666666667406815 ,12.916666666666666074548 ,1.6666666666666667406815 ,16.666666666666667850905};
double resultRows[4]={10.300000000000000710543 , 10.300000000000000710543 , 6.7000000000000001776357 , 6.7000000000000001776357};
int i;
double mtovar[70]={0.2113248654641211032867,0.7560438541695475578308,0.0002211346291005611420,
0.3303270917385816574097,0.6653811042197048664093,0.6283917883411049842835,
0.8497452358715236186981,
0.6857310198247432708740,0.8782164813019335269928,0.0683740368112921714783,
0.5608486062847077846527,0.6623569373041391372681,0.7263506767340004444122,
0.1985143842175602912903,
0.5442573162727057933807,0.2320747897028923034668,0.2312237196601927280426,
0.2164632631465792655945,0.8833887814544141292572,0.6525134947150945663452,
0.3076090742833912372589,
0.9329616213217377662659,0.2146007861010730266571,0.3126419968903064727783,
0.3616361008025705814362,0.2922266637906432151794,0.5664248815737664699554,
0.4826471973210573196411,
0.3321718913502991199493,0.5935094701126217842102,0.5015341597609221935272,
0.4368587583303451538086,0.2693124809302389621735,0.6325744865462183952332,
0.4051954015158116817474,
0.9184707831591367721558,0.0437334333546459674835,0.4818508932366967201233,
0.2639556000940501689911,0.4148103706538677215576,0.2806498021818697452545,
0.1280058464035391807556,
0.7783128595910966396332,0.2119030449539422988892,0.1121354666538536548615,
0.6856895955279469490051,0.1531216683797538280487,0.6970850601792335510254,
0.8415518426336348056793,
0.4062024755403399467468,0.4094825475476682186127,0.8784125801175832748413,
0.1138359685428440570831,0.1998337740078568458557,0.5618660743348300457001,
0.5896177329123020172119,
0.6853979662992060184479,0.8906224733218550682068,0.5042212805710732936859,
0.3493615407496690750122,0.3873778772540390491486,0.9222898678854107856751,
0.9488184261135756969452,
0.3435337245464324951172,0.3760118731297552585602,0.7340940563008189201355,
0.2615761472843587398529,0.4993493836373090744019,0.2638578419573605060577,
0.5253563085570931434631};
double result2= 0.0651863337585355667736 ;
double resultColumns2[7]= {0.0650391675869589902526 ,
0.0913789208052724344356 ,
0.0837863718398224738282 ,
0.0281545517812518443501 ,
0.0549594706400152802073 ,
0.0389978730537587012228 ,
0.0796657637071630925218 ,
};
double resultRows2[10]={0.0988544518240001696130 , 0.0874673050908554156058 , 0.0678199050579095519264, 0.0591380787668954188696 , 0.0175386373980947855855 ,0.0831815708684833926556 , 0.1035239817400336881370 , 0.0657802543744439444096 , 0.0667446022405332184402 , 0.0287884625084994134891};
outColumns= malloc((uint)5*sizeof(double));
outRows= malloc((uint)4*sizeof(double));
outColumns2= malloc((uint)7*sizeof(double));
outRows2= malloc((uint)10*sizeof(double));
out = dvariancea(matrice,20);
drowvariancea(matrice,5,4,outRows);
dcolumnvariancea(matrice,5,4,outColumns);
printf("Variance \n");
printf("%f\n",out);
printf("Row Variance \n");
for (i=0;i<4;i++) printf("%f\n",outRows[i]);
printf("Column Variance \n");
for (i=0;i<5;i++) printf("%f\n",outColumns[i]);
assert(fabs(out-result)/fabs(out) <1e-16);
for (i=0;i<4;i++)assert(fabs(outRows[i]-resultRows[i])/fabs(outRows[i]) <1e-16);
for (i=0;i<5;i++)assert(fabs(outColumns[i]-resultColumns[i])/fabs(outColumns[i]) <1e-16);
out2 = dvariancea(mtovar,70);
drowvariancea(mtovar,7,10,outRows2);
dcolumnvariancea(mtovar,7,10,outColumns2);
printf("Variance 2 \n");
printf("%f\n",out2);
printf("Row Variance 2 \n");
for (i=0;i<10;i++) printf("%f\n",outRows2[i]);
printf("Column Variance 2 \n");
for (i=0;i<7;i++) printf("%f\n",outColumns2[i]);
assert(fabs(out2-result2)/fabs(out2) <1e-16);
for (i=0;i<10;i++)assert(fabs(outRows2[i]-resultRows2[i])/fabs(outRows2[i]) <1e-16);
for (i=0;i<7;i++)assert(fabs(outColumns2[i]-resultColumns2[i])/fabs(outColumns2[i]) <1e-16);
return 0;
}
static int testDoubleVariance (void) {
printf("\n\n\n\n*********************\n");
printf("***** Double Tests Nono****\n");
printf("*********************\n");
assert(test()==0);
return 0;
}
int main(void) {
assert(testDoubleVariance () == 0);
return 0;
}
|