summaryrefslogtreecommitdiff
path: root/src/statisticsFunctions/variance/testDoubleVarianceNono.c
blob: 4e1f425a5afd74c9f386b13ef206dadbe37d9986 (plain)
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;
}