Added script front-end for primer-design code
[htsworkflow.git] / htswanalysis / MACS / lib / gsl / gsl-1.11 / statistics / test_int_source.c
1 /* statistics/test_int_source.c
2  * 
3  * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
4  * 
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 3 of the License, or (at
8  * your option) any later version.
9  * 
10  * This program is distributed in the hope that it will be useful, but
11  * WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * General Public License for more details.
14  * 
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18  */
19
20 void FUNCTION (test, func) (const size_t stridea, const size_t strideb);
21
22 void
23 FUNCTION (test, func) (const size_t stridea, const size_t strideb)
24 {
25   /* sample sets of integers */
26   size_t i;
27   const size_t ina = 20, inb = 20;
28
29   const BASE raw1[] = {1, 2, 3, 4, 5, 6} ;
30   
31   const BASE irawa[] =
32   {17, 18, 16, 18, 12,
33    20, 18, 20, 20, 22,
34    20, 10, 8, 12, 16,
35    16, 18, 20, 18, 21};
36
37   const BASE irawb[] =
38   {19, 20, 22, 24, 10,
39    25, 20, 22, 21, 23,
40    20, 10, 12, 14, 12,
41    20, 22, 24, 23, 17};
42
43   BASE * sorted ;
44
45   BASE * test1 = (BASE *) malloc (stridea * 6 * sizeof(BASE));
46   BASE * igroupa = (BASE *) malloc (stridea * ina * sizeof(BASE));
47   BASE * igroupb = (BASE *) malloc (strideb * inb * sizeof(BASE));
48
49   double rel = 1e-10 ;
50
51   for (i = 0 ; i < ina ; i++)
52     igroupa[i * stridea] = irawa[i] ;
53
54   for (i = 0 ; i < inb ; i++)
55     igroupb[i * strideb] = irawb[i] ;
56
57   for (i = 0 ; i < 6 ; i++)
58     test1[i * stridea] = raw1[i] ;
59
60
61
62   {
63     double mean = FUNCTION(gsl_stats,mean) (igroupa, stridea, ina);
64     double expected = 17.0;
65     gsl_test_rel (mean,expected, rel, NAME(gsl_stats) "_mean (integer)");
66   }
67
68   {
69     double mean = FUNCTION(gsl_stats,mean) (test1, stridea, 6);
70     double expected = 3.5;
71     gsl_test_rel (mean,expected, rel, NAME(gsl_stats) "_mean (fractional)");
72   }
73
74   {
75     double mean = FUNCTION(gsl_stats,mean) (igroupa, stridea, ina);
76     double var = FUNCTION(gsl_stats,variance_with_fixed_mean) (igroupa, stridea, ina, mean);
77     double expected = 13.7;
78     gsl_test_rel (var, expected, rel, NAME(gsl_stats) "_variance_with_fixed_mean");
79   }
80
81   {
82     double mean = FUNCTION(gsl_stats,mean) (igroupa, stridea, ina);
83     double sd = FUNCTION(gsl_stats,sd_with_fixed_mean) (igroupa, stridea, ina, mean);
84     double expected = 3.70135110466435;
85     gsl_test_rel (sd, expected, rel, NAME(gsl_stats) "_sd_with_fixed_mean");
86   }
87
88   {
89     double var = FUNCTION(gsl_stats,variance) (igroupa, stridea, ina);
90     double expected = 14.4210526315789;
91     gsl_test_rel (var, expected, rel, NAME(gsl_stats) "_variance");
92   }
93
94   {
95     double sd_est = FUNCTION(gsl_stats,sd) (igroupa, stridea, ina);
96     double expected = 3.79750610685209;
97     gsl_test_rel (sd_est, expected, rel, NAME(gsl_stats) "_sd");
98   }
99
100   {
101     double absdev = FUNCTION(gsl_stats,absdev) (igroupa, stridea, ina);
102     double expected = 2.9;
103     gsl_test_rel (absdev, expected, rel, NAME(gsl_stats) "_absdev");
104   }
105
106   {
107     double skew = FUNCTION(gsl_stats,skew) (igroupa, stridea, ina);
108     double expected = -0.909355923168064;
109     gsl_test_rel (skew, expected, rel, NAME(gsl_stats) "_skew");
110   }
111
112   {
113     double kurt = FUNCTION(gsl_stats,kurtosis) (igroupa, stridea, ina);
114     double expected = -0.233692524908094 ;
115     gsl_test_rel (kurt, expected, rel, NAME(gsl_stats) "_kurtosis");
116   }
117
118   {
119     double c = FUNCTION(gsl_stats,covariance) (igroupa, stridea, igroupb, strideb, inb);
120     double expected = 14.5263157894737;
121     gsl_test_rel (c, expected, rel, NAME(gsl_stats) "_covariance");
122   }
123
124   {
125     double r = FUNCTION(gsl_stats,correlation) (igroupa, stridea, igroupb, strideb, inb);
126     double expected = 0.793090350710101;
127     gsl_test_rel (r, expected, rel, NAME(gsl_stats) "_correlation");
128   }
129
130   {
131     double pv = FUNCTION(gsl_stats,pvariance) (igroupa, stridea, ina, igroupb, strideb, inb);
132     double expected = 18.8421052631579;
133     gsl_test_rel (pv, expected, rel, NAME(gsl_stats) "_pvariance");
134   }
135
136   {
137     double t = FUNCTION(gsl_stats,ttest) (igroupa, stridea, ina, igroupb, strideb, inb);
138     double expected = -1.45701922702927;
139     gsl_test_rel (t, expected, rel, NAME(gsl_stats) "_ttest");
140   }
141
142   {
143     int max = FUNCTION(gsl_stats,max) (igroupa, stridea, ina);
144     int expected = 22;
145     gsl_test (max != expected,
146               NAME(gsl_stats) "_max (%d observed vs %d expected)", max, expected);
147   }
148
149   {
150     int min = FUNCTION(gsl_stats,min) (igroupa, stridea, ina);
151     int expected = 8;
152     gsl_test (min != expected,
153               NAME(gsl_stats) "_min (%d observed vs %d expected)", min, expected);
154   }
155
156   {
157     BASE min, max;
158     BASE expected_max = 22;
159     BASE expected_min = 8;
160     
161     FUNCTION(gsl_stats,minmax) (&min, &max, igroupa, stridea, ina);
162  
163     gsl_test  (max != expected_max,
164                NAME(gsl_stats) "_minmax max (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", 
165                max, expected_max);
166     gsl_test  (min != expected_min,
167                NAME(gsl_stats) "_minmax min (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", 
168                min, expected_min);
169   }
170
171   {
172     int max_index = FUNCTION(gsl_stats,max_index) (igroupa, stridea, ina);
173     int expected = 9 ;
174     gsl_test (max_index != expected,
175               NAME(gsl_stats) "_max_index (%d observed vs %d expected)",
176               max_index, expected);
177   }
178
179   {
180     int min_index = FUNCTION(gsl_stats,min_index) (igroupa, stridea, ina);
181     int expected = 12 ;
182     gsl_test (min_index != expected,
183               NAME(gsl_stats) "_min_index (%d observed vs %d expected)",
184               min_index, expected);
185   }
186
187   {
188     size_t min_index, max_index;
189     size_t expected_max_index = 9;
190     size_t expected_min_index = 12;
191
192     FUNCTION(gsl_stats,minmax_index) (&min_index, &max_index, igroupa, stridea, ina);
193
194     gsl_test  (max_index != expected_max_index,
195                NAME(gsl_stats) "_minmax_index max (%u observed vs %u expected)", 
196                max_index, expected_max_index);
197     gsl_test  (min_index != expected_min_index,
198                NAME(gsl_stats) "_minmax_index min (%u observed vs %u expected)", 
199                min_index, expected_min_index);
200   }
201
202
203   sorted = (BASE *) malloc(stridea * ina * sizeof(BASE)) ;
204
205   for (i = 0 ; i < ina ; i++)
206     sorted[stridea * i] = igroupa[stridea * i] ;
207
208
209   TYPE(gsl_sort)(sorted, stridea, ina) ;
210
211   {
212     double median = FUNCTION(gsl_stats,median_from_sorted_data)(sorted, stridea, ina) ;
213     double expected = 18;
214     gsl_test_rel (median,expected, rel,
215                   NAME(gsl_stats) "_median_from_sorted_data (even)");
216   }
217
218   {
219     double median = FUNCTION(gsl_stats,median_from_sorted_data)(sorted, stridea, ina - 1) ;
220     double expected = 18;
221     gsl_test_rel (median,expected, rel,
222                   NAME(gsl_stats) "_median_from_sorted_data (odd)");
223   }
224
225
226   {
227     double zeroth = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted, stridea, ina, 0.0) ;
228     double expected = 8;
229     gsl_test_rel (zeroth,expected, rel,
230                   NAME(gsl_stats) "_quantile_from_sorted_data (0)");
231   }
232
233   {
234     double top = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted, stridea, ina, 1.0) ;
235     double expected = 22;
236     gsl_test_rel (top,expected, rel,
237                   NAME(gsl_stats) "_quantile_from_sorted_data (100)");
238   }
239
240   {
241     double median = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted, stridea, ina, 0.5) ;
242     double expected = 18;
243     gsl_test_rel (median,expected, rel,
244                   NAME(gsl_stats) "_quantile_from_sorted_data (50, even)");
245   }
246
247   {
248     double median = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted, stridea, ina - 1, 0.5);
249     double expected = 18;
250     gsl_test_rel (median,expected, rel,
251                   NAME(gsl_stats) "_quantile_from_sorted_data (50, odd)");
252   }
253
254   free (sorted);
255   free (igroupa);
256   free (igroupb);
257   free (test1);
258 }