summaryrefslogtreecommitdiff
path: root/gsl-1.9/statistics/test_int_source.c
diff options
context:
space:
mode:
Diffstat (limited to 'gsl-1.9/statistics/test_int_source.c')
-rw-r--r--gsl-1.9/statistics/test_int_source.c253
1 files changed, 253 insertions, 0 deletions
diff --git a/gsl-1.9/statistics/test_int_source.c b/gsl-1.9/statistics/test_int_source.c
new file mode 100644
index 0000000..1441f0b
--- /dev/null
+++ b/gsl-1.9/statistics/test_int_source.c
@@ -0,0 +1,253 @@
+/* statistics/test_int_source.c
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Jim Davies, Brian Gough
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+void FUNCTION (test, func) (const size_t stridea, const size_t strideb);
+
+void
+FUNCTION (test, func) (const size_t stridea, const size_t strideb)
+{
+ /* sample sets of integers */
+ size_t i;
+ const size_t ina = 20, inb = 20;
+
+ const BASE raw1[] = {1, 2, 3, 4, 5, 6} ;
+
+ const BASE irawa[] =
+ {17, 18, 16, 18, 12,
+ 20, 18, 20, 20, 22,
+ 20, 10, 8, 12, 16,
+ 16, 18, 20, 18, 21};
+
+ const BASE irawb[] =
+ {19, 20, 22, 24, 10,
+ 25, 20, 22, 21, 23,
+ 20, 10, 12, 14, 12,
+ 20, 22, 24, 23, 17};
+
+ BASE * sorted ;
+
+ BASE * test1 = (BASE *) malloc (stridea * 6 * sizeof(BASE));
+ BASE * igroupa = (BASE *) malloc (stridea * ina * sizeof(BASE));
+ BASE * igroupb = (BASE *) malloc (strideb * inb * sizeof(BASE));
+
+ double rel = 1e-10 ;
+
+ for (i = 0 ; i < ina ; i++)
+ igroupa[i * stridea] = irawa[i] ;
+
+ for (i = 0 ; i < inb ; i++)
+ igroupb[i * strideb] = irawb[i] ;
+
+ for (i = 0 ; i < 6 ; i++)
+ test1[i * stridea] = raw1[i] ;
+
+
+
+ {
+ double mean = FUNCTION(gsl_stats,mean) (igroupa, stridea, ina);
+ double expected = 17.0;
+ gsl_test_rel (mean,expected, rel, NAME(gsl_stats) "_mean (integer)");
+ }
+
+ {
+ double mean = FUNCTION(gsl_stats,mean) (test1, stridea, 6);
+ double expected = 3.5;
+ gsl_test_rel (mean,expected, rel, NAME(gsl_stats) "_mean (fractional)");
+ }
+
+ {
+ double mean = FUNCTION(gsl_stats,mean) (igroupa, stridea, ina);
+ double var = FUNCTION(gsl_stats,variance_with_fixed_mean) (igroupa, stridea, ina, mean);
+ double expected = 13.7;
+ gsl_test_rel (var, expected, rel, NAME(gsl_stats) "_variance_with_fixed_mean");
+ }
+
+ {
+ double mean = FUNCTION(gsl_stats,mean) (igroupa, stridea, ina);
+ double sd = FUNCTION(gsl_stats,sd_with_fixed_mean) (igroupa, stridea, ina, mean);
+ double expected = 3.70135110466435;
+ gsl_test_rel (sd, expected, rel, NAME(gsl_stats) "_sd_with_fixed_mean");
+ }
+
+ {
+ double var = FUNCTION(gsl_stats,variance) (igroupa, stridea, ina);
+ double expected = 14.4210526315789;
+ gsl_test_rel (var, expected, rel, NAME(gsl_stats) "_variance");
+ }
+
+ {
+ double sd_est = FUNCTION(gsl_stats,sd) (igroupa, stridea, ina);
+ double expected = 3.79750610685209;
+ gsl_test_rel (sd_est, expected, rel, NAME(gsl_stats) "_sd");
+ }
+
+ {
+ double absdev = FUNCTION(gsl_stats,absdev) (igroupa, stridea, ina);
+ double expected = 2.9;
+ gsl_test_rel (absdev, expected, rel, NAME(gsl_stats) "_absdev");
+ }
+
+ {
+ double skew = FUNCTION(gsl_stats,skew) (igroupa, stridea, ina);
+ double expected = -0.909355923168064;
+ gsl_test_rel (skew, expected, rel, NAME(gsl_stats) "_skew");
+ }
+
+ {
+ double kurt = FUNCTION(gsl_stats,kurtosis) (igroupa, stridea, ina);
+ double expected = -0.233692524908094 ;
+ gsl_test_rel (kurt, expected, rel, NAME(gsl_stats) "_kurtosis");
+ }
+
+ {
+ double c = FUNCTION(gsl_stats,covariance) (igroupa, stridea, igroupb, strideb, inb);
+ double expected = 14.5263157894737;
+ gsl_test_rel (c, expected, rel, NAME(gsl_stats) "_covariance");
+ }
+
+
+ {
+ double pv = FUNCTION(gsl_stats,pvariance) (igroupa, stridea, ina, igroupb, strideb, inb);
+ double expected = 18.8421052631579;
+ gsl_test_rel (pv, expected, rel, NAME(gsl_stats) "_pvariance");
+ }
+
+ {
+ double t = FUNCTION(gsl_stats,ttest) (igroupa, stridea, ina, igroupb, strideb, inb);
+ double expected = -1.45701922702927;
+ gsl_test_rel (t, expected, rel, NAME(gsl_stats) "_ttest");
+ }
+
+ {
+ int max = FUNCTION(gsl_stats,max) (igroupa, stridea, ina);
+ int expected = 22;
+ gsl_test (max != expected,
+ NAME(gsl_stats) "_max (%d observed vs %d expected)", max, expected);
+ }
+
+ {
+ int min = FUNCTION(gsl_stats,min) (igroupa, stridea, ina);
+ int expected = 8;
+ gsl_test (min != expected,
+ NAME(gsl_stats) "_min (%d observed vs %d expected)", min, expected);
+ }
+
+ {
+ BASE min, max;
+ BASE expected_max = 22;
+ BASE expected_min = 8;
+
+ FUNCTION(gsl_stats,minmax) (&min, &max, igroupa, stridea, ina);
+
+ gsl_test (max != expected_max,
+ NAME(gsl_stats) "_minmax max (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)",
+ max, expected_max);
+ gsl_test (min != expected_min,
+ NAME(gsl_stats) "_minmax min (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)",
+ min, expected_min);
+ }
+
+ {
+ int max_index = FUNCTION(gsl_stats,max_index) (igroupa, stridea, ina);
+ int expected = 9 ;
+ gsl_test (max_index != expected,
+ NAME(gsl_stats) "_max_index (%d observed vs %d expected)",
+ max_index, expected);
+ }
+
+ {
+ int min_index = FUNCTION(gsl_stats,min_index) (igroupa, stridea, ina);
+ int expected = 12 ;
+ gsl_test (min_index != expected,
+ NAME(gsl_stats) "_min_index (%d observed vs %d expected)",
+ min_index, expected);
+ }
+
+ {
+ size_t min_index, max_index;
+ size_t expected_max_index = 9;
+ size_t expected_min_index = 12;
+
+ FUNCTION(gsl_stats,minmax_index) (&min_index, &max_index, igroupa, stridea, ina);
+
+ gsl_test (max_index != expected_max_index,
+ NAME(gsl_stats) "_minmax_index max (%u observed vs %u expected)",
+ max_index, expected_max_index);
+ gsl_test (min_index != expected_min_index,
+ NAME(gsl_stats) "_minmax_index min (%u observed vs %u expected)",
+ min_index, expected_min_index);
+ }
+
+
+ sorted = (BASE *) malloc(stridea * ina * sizeof(BASE)) ;
+
+ for (i = 0 ; i < ina ; i++)
+ sorted[stridea * i] = igroupa[stridea * i] ;
+
+
+ TYPE(gsl_sort)(sorted, stridea, ina) ;
+
+ {
+ double median = FUNCTION(gsl_stats,median_from_sorted_data)(sorted, stridea, ina) ;
+ double expected = 18;
+ gsl_test_rel (median,expected, rel,
+ NAME(gsl_stats) "_median_from_sorted_data (even)");
+ }
+
+ {
+ double median = FUNCTION(gsl_stats,median_from_sorted_data)(sorted, stridea, ina - 1) ;
+ double expected = 18;
+ gsl_test_rel (median,expected, rel,
+ NAME(gsl_stats) "_median_from_sorted_data (odd)");
+ }
+
+
+ {
+ double zeroth = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted, stridea, ina, 0.0) ;
+ double expected = 8;
+ gsl_test_rel (zeroth,expected, rel,
+ NAME(gsl_stats) "_quantile_from_sorted_data (0)");
+ }
+
+ {
+ double top = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted, stridea, ina, 1.0) ;
+ double expected = 22;
+ gsl_test_rel (top,expected, rel,
+ NAME(gsl_stats) "_quantile_from_sorted_data (100)");
+ }
+
+ {
+ double median = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted, stridea, ina, 0.5) ;
+ double expected = 18;
+ gsl_test_rel (median,expected, rel,
+ NAME(gsl_stats) "_quantile_from_sorted_data (50, even)");
+ }
+
+ {
+ double median = FUNCTION(gsl_stats,quantile_from_sorted_data)(sorted, stridea, ina - 1, 0.5);
+ double expected = 18;
+ gsl_test_rel (median,expected, rel,
+ NAME(gsl_stats) "_quantile_from_sorted_data (50, odd)");
+ }
+
+ free (sorted);
+ free (igroupa);
+ free (igroupb);
+ free (test1);
+}