1 /* statistics/test_int_source.c
3 * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
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.
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.
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.
20 void FUNCTION (test, func) (const size_t stridea, const size_t strideb);
23 FUNCTION (test, func) (const size_t stridea, const size_t strideb)
25 /* sample sets of integers */
27 const size_t ina = 20, inb = 20;
29 const BASE raw1[] = {1, 2, 3, 4, 5, 6} ;
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));
51 for (i = 0 ; i < ina ; i++)
52 igroupa[i * stridea] = irawa[i] ;
54 for (i = 0 ; i < inb ; i++)
55 igroupb[i * strideb] = irawb[i] ;
57 for (i = 0 ; i < 6 ; i++)
58 test1[i * stridea] = raw1[i] ;
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)");
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)");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
143 int max = FUNCTION(gsl_stats,max) (igroupa, stridea, ina);
145 gsl_test (max != expected,
146 NAME(gsl_stats) "_max (%d observed vs %d expected)", max, expected);
150 int min = FUNCTION(gsl_stats,min) (igroupa, stridea, ina);
152 gsl_test (min != expected,
153 NAME(gsl_stats) "_min (%d observed vs %d expected)", min, expected);
158 BASE expected_max = 22;
159 BASE expected_min = 8;
161 FUNCTION(gsl_stats,minmax) (&min, &max, igroupa, stridea, ina);
163 gsl_test (max != expected_max,
164 NAME(gsl_stats) "_minmax max (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)",
166 gsl_test (min != expected_min,
167 NAME(gsl_stats) "_minmax min (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)",
172 int max_index = FUNCTION(gsl_stats,max_index) (igroupa, stridea, ina);
174 gsl_test (max_index != expected,
175 NAME(gsl_stats) "_max_index (%d observed vs %d expected)",
176 max_index, expected);
180 int min_index = FUNCTION(gsl_stats,min_index) (igroupa, stridea, ina);
182 gsl_test (min_index != expected,
183 NAME(gsl_stats) "_min_index (%d observed vs %d expected)",
184 min_index, expected);
188 size_t min_index, max_index;
189 size_t expected_max_index = 9;
190 size_t expected_min_index = 12;
192 FUNCTION(gsl_stats,minmax_index) (&min_index, &max_index, igroupa, stridea, ina);
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);
203 sorted = (BASE *) malloc(stridea * ina * sizeof(BASE)) ;
205 for (i = 0 ; i < ina ; i++)
206 sorted[stridea * i] = igroupa[stridea * i] ;
209 TYPE(gsl_sort)(sorted, stridea, ina) ;
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)");
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)");
227 double zeroth = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted, stridea, ina, 0.0) ;
229 gsl_test_rel (zeroth,expected, rel,
230 NAME(gsl_stats) "_quantile_from_sorted_data (0)");
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)");
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)");
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)");