20#ifndef CCGSL_STATISTICS_DOUBLE_HPP
21#define CCGSL_STATISTICS_DOUBLE_HPP
22#include<gsl/gsl_statistics_double.h>
35 inline double mean(
double const data[],
size_t const stride,
size_t const n ){
36 return gsl_stats_mean( data, stride,
n ); }
44 inline double variance(
double const data[],
size_t const stride,
size_t const n ){
45 return gsl_stats_variance( data, stride,
n ); }
53 inline double sd(
double const data[],
size_t const stride,
size_t const n ){
54 return gsl_stats_sd( data, stride,
n ); }
64 size_t const n,
double const mean ){
65 return gsl_stats_variance_with_fixed_mean( data, stride,
n,
mean ); }
75 size_t const n,
double const mean ){
76 return gsl_stats_sd_with_fixed_mean( data, stride,
n,
mean ); }
84 inline double tss(
double const data[],
size_t const stride,
size_t const n ){
85 return gsl_stats_tss( data, stride,
n ); }
94 inline double tss_m(
double const data[],
size_t const stride,
95 size_t const n,
double const mean ){
96 return gsl_stats_tss_m( data, stride,
n,
mean ); }
104 inline double absdev(
double const data[],
size_t const stride,
size_t const n ){
105 return gsl_stats_absdev( data, stride,
n ); }
113 inline double skew(
double const data[],
size_t const stride,
size_t const n ){
114 return gsl_stats_skew( data, stride,
n ); }
122 inline double kurtosis(
double const data[],
size_t const stride,
size_t const n ){
123 return gsl_stats_kurtosis( data, stride,
n ); }
132 return gsl_stats_lag1_autocorrelation( data, stride,
n ); }
142 inline double covariance(
double const data1[],
size_t const stride1,
143 double const data2[],
size_t const stride2,
145 return gsl_stats_covariance( data1, stride1, data2, stride2,
n ); }
155 inline double correlation(
double const data1[],
size_t const stride1,
double const data2[],
156 size_t const stride2,
size_t const n ){
157 return gsl_stats_correlation( data1, stride1, data2, stride2,
n ); }
166 inline double variance_m(
double const data[],
size_t const stride,
size_t const n,
168 return gsl_stats_variance_m( data, stride,
n,
mean ); }
177 inline double sd_m(
double const data[],
size_t const stride,
size_t const n,
179 return gsl_stats_sd_m( data, stride,
n,
mean ); }
188 inline double absdev_m(
double const data[],
size_t const stride,
size_t const n,
190 return gsl_stats_absdev_m( data, stride,
n,
mean ); }
200 inline double skew_m_sd(
double const data[],
size_t const stride,
size_t const n,
201 double const mean,
double const sd ){
202 return gsl_stats_skew_m_sd( data, stride,
n,
mean,
sd ); }
212 inline double kurtosis_m_sd(
double const data[],
size_t const stride,
size_t const n,
213 double const mean,
double const sd ){
214 return gsl_stats_kurtosis_m_sd( data, stride,
n,
mean,
sd ); }
224 size_t const n,
double const mean ){
225 return gsl_stats_lag1_autocorrelation_m( data, stride,
n,
mean ); }
237 inline double covariance_m(
double const data1[],
size_t const stride1,
238 double const data2[],
size_t const stride2,
239 size_t const n,
double const mean1,
double const mean2 ){
240 return gsl_stats_covariance_m( data1, stride1, data2, stride2,
n, mean1, mean2 ); }
251 inline double pvariance(
double const data1[],
size_t const stride1,
size_t const n1,
252 double const data2[],
size_t const stride2,
size_t const n2 ){
253 return gsl_stats_pvariance( data1, stride1, n1, data2, stride2, n2 ); }
265 inline double ttest(
double const data1[],
size_t const stride1,
size_t const n1,
266 double const data2[],
size_t const stride2,
size_t const n2 ){
267 return gsl_stats_ttest( data1, stride1, n1, data2, stride2, n2 ); }
275 inline double max(
double const data[],
size_t const stride,
size_t const n ){
276 return gsl_stats_max( data, stride,
n ); }
284 inline double min(
double const data[],
size_t const stride,
size_t const n ){
285 return gsl_stats_min( data, stride,
n ); }
294 inline void minmax(
double*
min,
double*
max,
double const data[],
size_t const stride,
296 gsl_stats_minmax(
min,
max, data, stride,
n ); }
304 inline size_t max_index(
double const data[],
size_t const stride,
size_t const n ){
305 return gsl_stats_max_index( data, stride,
n ); }
313 inline size_t min_index(
double const data[],
size_t const stride,
size_t const n ){
314 return gsl_stats_min_index( data, stride,
n ); }
324 size_t const stride,
size_t const n ){
334 size_t const stride,
size_t const n ){
335 return gsl_stats_median_from_sorted_data( sorted_data, stride,
n ); }
345 size_t const n,
double const f ){
346 return gsl_stats_quantile_from_sorted_data( sorted_data, stride,
n, f ); }
356 inline double mean(
double const data[],
size_t const n ){
357 return gsl_stats_mean( data, 1,
n ); }
364 inline double variance(
double const data[],
size_t const n ){
365 return gsl_stats_variance( data, 1,
n ); }
372 inline double sd(
double const data[],
size_t const n ){
373 return gsl_stats_sd( data, 1,
n ); }
382 size_t const n,
double const mean ){
383 return gsl_stats_variance_with_fixed_mean( data, 1,
n,
mean ); }
392 size_t const n,
double const mean ){
393 return gsl_stats_sd_with_fixed_mean( data, 1,
n,
mean ); }
400 inline double tss(
double const data[],
size_t const n ){
401 return gsl_stats_tss( data, 1,
n ); }
409 inline double tss_m(
double const data[],
410 size_t const n,
double const mean ){
411 return gsl_stats_tss_m( data, 1,
n,
mean ); }
418 inline double absdev(
double const data[],
size_t const n ){
419 return gsl_stats_absdev( data, 1,
n ); }
426 inline double skew(
double const data[],
size_t const n ){
427 return gsl_stats_skew( data, 1,
n ); }
434 inline double kurtosis(
double const data[],
size_t const n ){
435 return gsl_stats_kurtosis( data, 1,
n ); }
443 return gsl_stats_lag1_autocorrelation( data, 1,
n ); }
451 inline double covariance(
double const data1[],
double const data2[],
size_t const n ){
452 return gsl_stats_covariance( data1, 1, data2, 1,
n ); }
460 inline double correlation(
double const data1[],
double const data2[],
size_t const n ){
461 return gsl_stats_correlation( data1, 1, data2, 1,
n ); }
469 inline double variance_m(
double const data[],
size_t const n,
double const mean ){
470 return gsl_stats_variance_m( data, 1,
n,
mean ); }
478 inline double sd_m(
double const data[],
size_t const n,
double const mean ){
479 return gsl_stats_sd_m( data, 1,
n,
mean ); }
487 inline double absdev_m(
double const data[],
size_t const n,
double const mean ){
488 return gsl_stats_absdev_m( data, 1,
n,
mean ); }
497 inline double skew_m_sd(
double const data[],
size_t const n,
498 double const mean,
double const sd ){
499 return gsl_stats_skew_m_sd( data, 1,
n,
mean,
sd ); }
509 double const mean,
double const sd ){
510 return gsl_stats_kurtosis_m_sd( data, 1,
n,
mean,
sd ); }
519 size_t const n,
double const mean ){
520 return gsl_stats_lag1_autocorrelation_m( data, 1,
n,
mean ); }
530 inline double covariance_m(
double const data1[],
double const data2[],
531 size_t const n,
double const mean1,
double const mean2 ){
532 return gsl_stats_covariance_m( data1, 1, data2, 1,
n, mean1, mean2 ); }
542 inline double wmean(
double const w[],
size_t const wstride,
double const data[],
543 size_t const stride,
size_t const n ){
544 return gsl_stats_wmean( w, wstride, data, stride,
n ); }
554 inline double wvariance(
double const w[],
size_t const wstride,
double const data[],
555 size_t const stride,
size_t const n ){
556 return gsl_stats_wvariance( w, wstride, data, stride,
n ); }
566 inline double wsd(
double const w[],
size_t const wstride,
double const data[],
567 size_t const stride,
size_t const n ){
568 return gsl_stats_wsd( w, wstride, data, stride,
n ); }
580 double const data[],
size_t const stride,
581 size_t const n,
double const mean ){
582 return gsl_stats_wvariance_with_fixed_mean( w, wstride, data, stride,
n,
mean ); }
593 inline double wsd_with_fixed_mean(
double const w[],
size_t const wstride,
double const data[],
594 size_t const stride,
size_t const n,
double const mean ){
595 return gsl_stats_wsd_with_fixed_mean( w, wstride, data, stride,
n,
mean ); }
605 inline double wtss(
double const w[],
size_t const wstride,
double const data[],
606 size_t const stride,
size_t const n ){
607 return gsl_stats_wtss( w, wstride, data, stride,
n ); }
618 inline double wtss_m(
double const w[],
size_t const wstride,
double const data[],
619 size_t const stride,
size_t const n,
double const wmean ){
620 return gsl_stats_wtss_m( w, wstride, data, stride,
n,
wmean ); }
630 inline double wabsdev(
double const w[],
size_t const wstride,
double const data[],
631 size_t const stride,
size_t const n ){
632 return gsl_stats_wabsdev( w, wstride, data, stride,
n ); }
642 inline double wskew(
double const w[],
size_t const wstride,
double const data[],
643 size_t const stride,
size_t const n ){
644 return gsl_stats_wskew( w, wstride, data, stride,
n ); }
654 inline double wkurtosis(
double const w[],
size_t const wstride,
double const data[],
655 size_t const stride,
size_t const n ){
656 return gsl_stats_wkurtosis( w, wstride, data, stride,
n ); }
667 inline double wvariance_m(
double const w[],
size_t const wstride,
double const data[],
668 size_t const stride,
size_t const n,
double const wmean ){
669 return gsl_stats_wvariance_m( w, wstride, data, stride,
n,
wmean ); }
680 inline double wsd_m(
double const w[],
size_t const wstride,
double const data[],
681 size_t const stride,
size_t const n,
double const wmean ){
682 return gsl_stats_wsd_m( w, wstride, data, stride,
n,
wmean ); }
693 inline double wabsdev_m(
double const w[],
size_t const wstride,
double const data[],
694 size_t const stride,
size_t const n,
double const wmean ){
695 return gsl_stats_wabsdev_m( w, wstride, data, stride,
n,
wmean ); }
707 inline double wskew_m_sd(
double const w[],
size_t const wstride,
double const data[],
708 size_t const stride,
size_t const n,
double const wmean,
710 return gsl_stats_wskew_m_sd( w, wstride, data, stride,
n,
wmean,
wsd ); }
722 inline double wkurtosis_m_sd(
double const w[],
size_t const wstride,
double const data[],
723 size_t const stride,
size_t const n,
double const wmean,
725 return gsl_stats_wkurtosis_m_sd( w, wstride, data, stride,
n,
wmean,
wsd ); }
735 inline double wmean(
double const w[],
double const data[],
737 return gsl_stats_wmean( w, 1, data, 1,
n ); }
745 inline double wvariance(
double const w[],
double const data[],
747 return gsl_stats_wvariance( w, 1, data, 1,
n ); }
755 inline double wsd(
double const w[],
double const data[],
757 return gsl_stats_wsd( w, 1, data, 1,
n ); }
768 size_t const n,
double const mean ){
769 return gsl_stats_wvariance_with_fixed_mean( w, 1, data, 1,
n,
mean ); }
779 size_t const n,
double const mean ){
780 return gsl_stats_wsd_with_fixed_mean( w, 1, data, 1,
n,
mean ); }
788 inline double wtss(
double const w[],
double const data[],
790 return gsl_stats_wtss( w, 1, data, 1,
n ); }
799 inline double wtss_m(
double const w[],
double const data[],
800 size_t const n,
double const wmean ){
801 return gsl_stats_wtss_m( w, 1, data, 1,
n,
wmean ); }
809 inline double wabsdev(
double const w[],
double const data[],
811 return gsl_stats_wabsdev( w, 1, data, 1,
n ); }
819 inline double wskew(
double const w[],
double const data[],
821 return gsl_stats_wskew( w, 1, data, 1,
n ); }
829 inline double wkurtosis(
double const w[],
double const data[],
831 return gsl_stats_wkurtosis( w, 1, data, 1,
n ); }
840 inline double wvariance_m(
double const w[],
double const data[],
841 size_t const n,
double const wmean ){
842 return gsl_stats_wvariance_m( w, 1, data, 1,
n,
wmean ); }
851 inline double wsd_m(
double const w[],
double const data[],
852 size_t const n,
double const wmean ){
853 return gsl_stats_wsd_m( w, 1, data, 1,
n,
wmean ); }
862 inline double wabsdev_m(
double const w[],
double const data[],
863 size_t const n,
double const wmean ){
864 return gsl_stats_wabsdev_m( w, 1, data, 1,
n,
wmean ); }
874 inline double wskew_m_sd(
double const w[],
double const data[],
875 size_t const n,
double const wmean,
877 return gsl_stats_wskew_m_sd( w, 1, data, 1,
n,
wmean,
wsd ); }
887 inline double wkurtosis_m_sd(
double const w[],
double const data[],
888 size_t const n,
double const wmean,
890 return gsl_stats_wkurtosis_m_sd( w, 1, data, 1,
n,
wmean,
wsd ); }
899 inline double pvariance(
double const data1[],
size_t const n1,
900 double const data2[],
size_t const n2 ){
901 return gsl_stats_pvariance( data1, 1, n1, data2, 1, n2 ); }
911 inline double ttest(
double const data1[],
size_t const n1,
912 double const data2[],
size_t const n2 ){
913 return gsl_stats_ttest( data1, 1, n1, data2, 1, n2 ); }
920 inline double max(
double const data[],
size_t const n ){
921 return gsl_stats_max( data, 1,
n ); }
928 inline double min(
double const data[],
size_t const n ){
929 return gsl_stats_min( data, 1,
n ); }
937 inline void minmax(
double*
min,
double*
max,
double const data[],
939 gsl_stats_minmax(
min,
max, data, 1,
n ); }
946 inline size_t max_index(
double const data[],
size_t const n ){
947 return gsl_stats_max_index( data, 1,
n ); }
954 inline size_t min_index(
double const data[],
size_t const n ){
955 return gsl_stats_min_index( data, 1,
n ); }
974 return gsl_stats_median_from_sorted_data( sorted_data, 1,
n ); }
983 size_t const n,
double const f ){
984 return gsl_stats_quantile_from_sorted_data( sorted_data, 1,
n, f ); }
996 inline double mean( T
const& data,
size_t const stride = 1 ){
997 return gsl_stats_mean( data.data(), stride, data.size() / stride ); }
1004 template<
typename T>
1005 inline double variance( T
const& data,
size_t const stride = 1 ){
1006 return gsl_stats_variance( data.data(), stride, data.size() / stride ); }
1013 template<
typename T>
1014 inline double sd( T
const& data,
size_t const stride = 1 ){
1015 return gsl_stats_sd( data.data(), stride, data.size() / stride ); }
1023 template<
typename T>
1025 double const mean ){
1026 return gsl_stats_variance_with_fixed_mean( data.data(), stride, data.size() / stride,
mean ); }
1033 template<
typename T>
1035 return gsl_stats_variance_with_fixed_mean( data.data(), 1, data.size(),
mean ); }
1043 template<
typename T>
1045 double const mean ){
1046 return gsl_stats_sd_with_fixed_mean( data.data(), stride, data.size() / stride,
mean ); }
1053 template<
typename T>
1055 return gsl_stats_sd_with_fixed_mean( data.data(), 1, data.size(),
mean ); }
1062 template<
typename T>
1063 inline double tss( T
const& data,
size_t const stride = 1 ){
1064 return gsl_stats_tss( data.data(), stride, data.size() / stride ); }
1072 template<
typename T>
1073 inline double tss_m( T
const& data,
size_t const stride,
double const mean ){
1074 return gsl_stats_tss_m( data.data(), stride, data.size() / stride,
mean ); }
1081 template<
typename T>
1083 return gsl_stats_tss_m( data.data(), 1, data.size(),
mean ); }
1090 template<
typename T>
1091 inline double absdev( T
const& data,
size_t const stride = 1 ){
1092 return gsl_stats_absdev( data.data(), stride, data.size() / stride ); }
1099 template<
typename T>
1100 inline double skew( T
const& data,
size_t const stride = 1 ){
1101 return gsl_stats_skew( data.data(), stride, data.size() / stride ); }
1108 template<
typename T>
1109 inline double kurtosis( T
const& data,
size_t const stride = 1 ){
1110 return gsl_stats_kurtosis( data.data(), stride, data.size() / stride ); }
1117 template<
typename T>
1119 return gsl_stats_lag1_autocorrelation( data.data(), stride, data.size() / stride ); }
1128 template<
typename T,
typename U>
1130 U
const& data2,
size_t const stride2 ){
1131 return gsl_stats_covariance( data1.data(), stride1, data2.data(), stride2, data1.size() / stride1 ); }
1138 template<
typename T,
typename U>
1140 return gsl_stats_covariance( data1.data(), 1, data2.data(), 1, data1.size() ); }
1150 template<
typename U,
typename T>
1151 inline double wmean( U
const& w,
size_t const wstride, T
const& data,
1152 size_t const stride ){
1153 return gsl_stats_wmean( w.data(), wstride, data.data(), stride, data.size() / stride ); }
1162 template<
typename U,
typename T>
1163 inline double wvariance( U
const& w,
size_t const wstride, T
const& data,
1164 size_t const stride ){
1165 return gsl_stats_wvariance( w.data(), wstride, data.data(), stride, data.size() / stride ); }
1174 template<
typename U,
typename T>
1175 inline double wsd( U
const& w,
size_t const wstride, T
const& data,
1176 size_t const stride ){
1177 return gsl_stats_wsd( w.data(), wstride, data.data(), stride, data.size() / stride ); }
1187 template<
typename U,
typename T>
1189 T
const& data,
size_t const stride,
1190 double const mean ){
1191 return gsl_stats_wvariance_with_fixed_mean( w.data(), wstride, data.data(), stride,
1192 data.size() / stride,
mean ); }
1202 template<
typename U,
typename T>
1204 size_t const stride,
double const mean ){
1205 return gsl_stats_wsd_with_fixed_mean( w.data(), wstride, data.data(), stride,
1206 data.size() / stride,
mean ); }
1215 template<
typename U,
typename T>
1216 inline double wtss( U
const& w,
size_t const wstride, T
const& data,
1217 size_t const stride ){
1218 return gsl_stats_wtss( w.data(), wstride, data.data(), stride, data.size() / stride ); }
1228 template<
typename U,
typename T>
1229 inline double wtss_m( U
const& w,
size_t const wstride, T
const& data,
1230 size_t const stride,
double const wmean ){
1231 return gsl_stats_wtss_m( w.data(), wstride, data.data(), stride, data.size() / stride,
wmean ); }
1240 template<
typename U,
typename T>
1241 inline double wabsdev( U
const& w,
size_t const wstride, T
const& data,
1242 size_t const stride ){
1243 return gsl_stats_wabsdev( w.data(), wstride, data.data(), stride, data.size() / stride ); }
1252 template<
typename U,
typename T>
1253 inline double wskew( U
const& w,
size_t const wstride, T
const& data,
1254 size_t const stride ){
1255 return gsl_stats_wskew( w.data(), wstride, data.data(), stride, data.size() / stride ); }
1264 template<
typename U,
typename T>
1265 inline double wkurtosis( U
const& w,
size_t const wstride, T
const& data,
1266 size_t const stride ){
1267 return gsl_stats_wkurtosis( w.data(), wstride, data.data(), stride, data.size() / stride ); }
1277 template<
typename U,
typename T>
1278 inline double wvariance_m( U
const& w,
size_t const wstride, T
const& data,
1279 size_t const stride,
double const wmean ){
1280 return gsl_stats_wvariance_m( w.data(), wstride, data.data(), stride, data.size() / stride,
wmean ); }
1290 template<
typename U,
typename T>
1291 inline double wsd_m( U
const& w,
size_t const wstride, T
const& data,
1292 size_t const stride,
double const wmean ){
1293 return gsl_stats_wsd_m( w.data(), wstride, data.data(), stride, data.size() / stride,
wmean ); }
1303 template<
typename U,
typename T>
1304 inline double wabsdev_m( U
const& w,
size_t const wstride, T
const& data,
1305 size_t const stride,
double const wmean ){
1306 return gsl_stats_wabsdev_m( w.data(), wstride, data.data(), stride, data.size() / stride,
wmean ); }
1317 template<
typename U,
typename T>
1318 inline double wskew_m_sd( U
const& w,
size_t const wstride, T
const& data,
1319 size_t const stride,
double const wmean,
1321 return gsl_stats_wskew_m_sd( w.data(), wstride, data.data(), stride,
1322 data.size() / stride,
wmean,
wsd ); }
1333 template<
typename U,
typename T>
1335 size_t const stride,
double const wmean,
1337 return gsl_stats_wkurtosis_m_sd( w.data(), wstride, data.data(), stride,
1338 data.size() / stride,
wmean,
wsd ); }
1346 template<
typename U,
typename T>
1347 inline double wmean( U
const& w, T
const& data ){
1348 return gsl_stats_wmean( w.data(), 1, data.data(), 1, data.size() ); }
1355 template<
typename U,
typename T>
1357 return gsl_stats_wvariance( w.data(), 1, data.data(), 1, data.size() ); }
1364 template<
typename U,
typename T>
1365 inline double wsd( U
const& w, T
const& data ){
1366 return gsl_stats_wsd( w.data(), 1, data.data(), 1, data.size() ); }
1374 template<
typename U,
typename T>
1376 return gsl_stats_wvariance_with_fixed_mean( w.data(), 1, data.data(), 1,
1377 data.size(),
mean ); }
1385 template<
typename U,
typename T>
1387 return gsl_stats_wsd_with_fixed_mean( w.data(), 1, data.data(), 1,
1388 data.size(),
mean ); }
1395 template<
typename U,
typename T>
1396 inline double wtss( U
const& w, T
const& data ){
1397 return gsl_stats_wtss( w.data(), 1, data.data(), 1, data.size() ); }
1405 template<
typename U,
typename T>
1406 inline double wtss_m( U
const& w, T
const& data,
double const wmean ){
1407 return gsl_stats_wtss_m( w.data(), 1, data.data(), 1, data.size(),
wmean ); }
1414 template<
typename U,
typename T>
1415 inline double wabsdev( U
const& w, T
const& data ){
1416 return gsl_stats_wabsdev( w.data(), 1, data.data(), 1, data.size() ); }
1423 template<
typename U,
typename T>
1424 inline double wskew( U
const& w, T
const& data ){
1425 return gsl_stats_wskew( w.data(), 1, data.data(), 1, data.size() ); }
1432 template<
typename U,
typename T>
1434 return gsl_stats_wkurtosis( w.data(), 1, data.data(), 1, data.size() ); }
1442 template<
typename U,
typename T>
1444 return gsl_stats_wvariance_m( w.data(), 1, data.data(), 1, data.size(),
wmean ); }
1452 template<
typename U,
typename T>
1453 inline double wsd_m( U
const& w, T
const& data,
double const wmean ){
1454 return gsl_stats_wsd_m( w.data(), 1, data.data(), 1, data.size(),
wmean ); }
1462 template<
typename U,
typename T>
1464 return gsl_stats_wabsdev_m( w.data(), 1, data.data(), 1, data.size(),
wmean ); }
1473 template<
typename U,
typename T>
1475 return gsl_stats_wskew_m_sd( w.data(), 1, data.data(), 1, data.size(),
wmean,
wsd ); }
1484 template<
typename U,
typename T>
1486 return gsl_stats_wkurtosis_m_sd( w.data(), 1, data.data(), 1, data.size(),
wmean,
wsd ); }
1497 template<
typename T,
typename U>
1498 inline double correlation( T
const& data1,
size_t const stride1, U
const& data2,
1499 size_t const stride2 ){
1500 return gsl_stats_correlation( data1.data(), stride1, data2.data(), stride2, data1.size() / stride1 ); }
1507 template<
typename T,
typename U>
1509 return gsl_stats_correlation( data1.data(), 1, data2.data(), 1, data1.size() ); }
1517 template<
typename T>
1519 return gsl_stats_variance_m( data.data(), stride, data.size() / stride,
mean ); }
1526 template<
typename T>
1528 return gsl_stats_variance_m( data.data(), 1, data.size(),
mean ); }
1536 template<
typename T>
1537 inline double sd_m( T
const& data,
size_t const stride,
double const mean ){
1538 return gsl_stats_sd_m( data.data(), stride, data.size() / stride,
mean ); }
1545 template<
typename T>
1546 inline double sd_m( T
const& data,
double const mean ){
1547 return gsl_stats_sd_m( data.data(), 1, data.size(),
mean ); }
1555 template<
typename T>
1556 inline double absdev_m( T
const& data,
size_t const stride,
double const mean ){
1557 return gsl_stats_absdev_m( data.data(), stride, data.size() / stride,
mean ); }
1564 template<
typename T>
1566 return gsl_stats_absdev_m( data.data(), 1, data.size(),
mean ); }
1575 template<
typename T>
1576 inline double skew_m_sd( T
const& data,
size_t const stride,
1577 double const mean,
double const sd ){
1578 return gsl_stats_skew_m_sd( data.data(), stride, data.size() / stride,
mean,
sd ); }
1586 template<
typename T>
1588 return gsl_stats_skew_m_sd( data.data(), 1, data.size(),
mean,
sd ); }
1597 template<
typename T>
1599 double const mean,
double const sd ){
1600 return gsl_stats_kurtosis_m_sd( data.data(), stride, data.size() / stride,
mean,
sd ); }
1608 template<
typename T>
1610 return gsl_stats_kurtosis_m_sd( data.data(), 1, data.size(),
mean,
sd ); }
1618 template<
typename T>
1620 double const mean ){
1621 return gsl_stats_lag1_autocorrelation_m( data.data(), stride, data.size() / stride,
mean ); }
1628 template<
typename T>
1630 return gsl_stats_lag1_autocorrelation_m( data.data(), 1, data.size(),
mean ); }
1641 template<
typename T,
typename U>
1643 U
const& data2,
size_t const stride2,
1644 double const mean1,
double const mean2 ){
1645 return gsl_stats_covariance_m( data1.data(), stride1, data2.data(), stride2, data1.size() / stride1,
1655 template<
typename T>
1657 double const mean1,
double const mean2 ){
1658 return gsl_stats_covariance_m( data1.data(), 1, data2.data(), 1, data1.size(),
1668 template<
typename T,
typename U>
1669 inline double pvariance( T
const& data1,
size_t const stride1,
1670 U
const& data2,
size_t const stride2 ){
1671 return gsl_stats_pvariance( data1.data(), stride1, data1.size() / stride1, data2.data(),
1672 stride2, data2.size() / stride2 ); }
1682 template<
typename T,
typename U>
1683 inline double ttest( T
const& data1,
size_t const stride1,
1684 U
const& data2,
size_t const stride2 ){
1685 return gsl_stats_ttest( data1.data(), stride1, data1.size() / stride1,
1686 data2.data(), stride2, data2.size() / stride2 ); }
1693 template<
typename T>
1694 inline double max( T
const& data,
size_t const stride = 1 ){
1695 return gsl_stats_max( data.data(), stride, data.size() / stride ); }
1702 template<
typename T>
1703 inline double min( T
const& data,
size_t const stride = 1 ){
1704 return gsl_stats_min( data.data(), stride, data.size() / stride ); }
1712 template<
typename T>
1713 inline void minmax(
double&
min,
double&
max, T
const& data,
size_t const stride = 1 ){
1714 gsl_stats_minmax( &
min, &
max, data.data(), stride, data.size() / stride ); }
1721 template<
typename T>
1722 inline size_t max_index( T
const& data,
size_t const stride = 1 ){
1723 return gsl_stats_max_index( data.data(), stride, data.size() / stride ); }
1730 template<
typename T>
1731 inline size_t min_index( T
const& data,
size_t const stride = 1 ){
1732 return gsl_stats_min_index( data.data(), stride, data.size() / stride ); }
1740 template<
typename T>
1742 size_t const stride = 1 ){
1743 gsl_stats_minmax_index( &
min_index, &
max_index, data.data(), stride, data.size() / stride ); }
1750 template<
typename T>
1752 return gsl_stats_median_from_sorted_data( sorted_data.data(), stride, sorted_data.size() / stride ); }
1760 template<
typename T>
1763 return gsl_stats_quantile_from_sorted_data( sorted_data.data(), stride,
1764 sorted_data.size() / stride, f ); }
1772 template<
typename T,
typename U>
1774 return gsl_stats_pvariance( data1.data(), 1, data1.size(), data2.data(), 1, data1.size() ); }
1782 template<
typename T,
typename U>
1783 inline double ttest( T
const& data1, U
const& data2 ){
1784 return gsl_stats_ttest( data1.data(), 1, data1.size(), data2.data(), 1, data1.size() ); }
1791 template<
typename T>
1793 return gsl_stats_quantile_from_sorted_data( sorted_data.data(), 1, sorted_data.size(), f ); }
1807 inline double spearman(
double const data1[],
size_t const stride1,
1808 double const data2[],
size_t const stride2,
1809 size_t const n,
double work[] ){
1811 return gsl_stats_spearman( data1, stride1, data2, stride2,
n, work );
1813 double* workspace =
new double[2 *
n];
1814 double result = gsl_stats_spearman( data1, stride1, data2, stride2,
n, workspace );
1828 inline double spearman(
double const data1[],
double const data2[],
1829 size_t const n,
double work[] ){
1831 return gsl_stats_spearman( data1, 1, data2, 1,
n, work );
1833 double* workspace =
new double[2 *
n];
1834 double result = gsl_stats_spearman( data1, 1, data2, 1,
n, workspace );
1850 template<typename T, typename U>
1851 inline double spearman( T
const& data1,
size_t const stride1,
1852 U
const& data2,
size_t const stride2,
1855 return gsl_stats_spearman( data1.data(), stride1, data2.data(), stride2,
1856 data1.size() / stride1, work );
1858 double* workspace =
new double[2 * data1.size() / stride1];
1859 double result = gsl_stats_spearman( data1.data(), stride1, data2.data(), stride2,
1860 data1.size() / stride1, workspace );
1873 template<
typename T,
typename U>
1874 inline double spearman( T
const& data1, U
const& data2,
double work[] ){
1876 return gsl_stats_spearman( data1, 1, data2, 1, data1.size(), work );
1878 double* workspace =
new double[2 * data1.size()];
1879 double result = gsl_stats_spearman( data1, 1, data2, 1, data1.size(), workspace );
1890 template<
typename T>
1891 inline double median( T& data,
size_t const stride=1 ){
1892 return gsl_stats_median( data.data(), stride, data.size() ); }
1900 template<
typename T>
1902 size_t const stride=1 ){
1903 return gsl_stats_trmean_from_sorted_data( trim, sorted_data.data(), stride,
1904 sorted_data.size() ); }
1911 template<
typename T>
1913 return gsl_stats_gastwirth_from_sorted_data( sorted_data.data(), stride,
1914 sorted_data.size() ); }
1922 template<
typename T,
typename U>
1923 double mad0( T
const& data,
size_t const stride, U& work ){
1924 size_t const n = data.size();
1925 if( work.size() !=
n ){
1926 gsl::exception e(
"work and data must have same length", __FILE__, __LINE__,
1930 return gsl_stats_mad0( data.data(), stride,
n, work.data() ); }
1938 template<
typename T,
typename U>
1939 double mad( T
const& data,
size_t const stride, U& work ){
1940 size_t const n = data.size();
1941 if( work.size() !=
n ){
1942 gsl::exception e(
"work and data must have same length", __FILE__, __LINE__,
1946 return gsl_stats_mad( data.data(), stride,
n, work.data() );
1955 template<
typename T,
typename U>
1957 size_t const n = sorted_data.size();
1958 if( work.size() !=
n ){
1959 gsl::exception e(
"work and data must have same length", __FILE__, __LINE__,
1963 return gsl_stats_Sn0_from_sorted_data( sorted_data.data(), stride,
n, work.data() ); }
1971 template<
typename T,
typename U>
1973 size_t const n = sorted_data.size();
1974 if( work.size() !=
n ){
1975 gsl::exception e(
"work and data must have same length", __FILE__, __LINE__,
1979 return gsl_stats_Sn_from_sorted_data( sorted_data.data(), stride,
n, work.data() ); }
1988 template<
typename T,
typename U,
typename V>
1990 U& work, V& work_int ){
1991 size_t const n = sorted_data.size();
1992 if( work.size() != 3*
n ){
1993 gsl::exception e(
"work must be 3 × length of data", __FILE__, __LINE__,
1997 if( work_int.size() != 5*
n ){
1998 gsl::exception e(
"work_int must be 5 × length of data", __FILE__, __LINE__,
2002 return gsl_stats_Qn0_from_sorted_data( sorted_data.data(), stride,
n, work.data(),
2003 work_int.data() ); }
2012 template<
typename T,
typename U,
typename V>
2014 U& work, V& work_int ){
2015 size_t const n = sorted_data.size();
2016 if( work.size() != 3*
n ){
2017 gsl::exception e(
"work must be 3 × length of data", __FILE__, __LINE__,
2021 if( work_int.size() != 5*
n ){
2022 gsl::exception e(
"work_int must be 5 × length of data", __FILE__, __LINE__,
2026 return gsl_stats_Qn_from_sorted_data( sorted_data.data(), stride,
n, work.data(),
2027 work_int.data() ); }
2035 template<
typename T,
typename U>
2036 double mad0( T
const& data, U& work ){
2037 size_t const n = data.size();
2038 if( work.size() !=
n ){
2039 gsl::exception e(
"work and data must have same length", __FILE__, __LINE__,
2043 return gsl_stats_mad0( data.data(), 1,
n, work.data() ); }
2050 template<
typename T,
typename U>
2051 double mad( T
const& data, U& work ){
2052 size_t const n = data.size();
2053 if( work.size() !=
n ){
2054 gsl::exception e(
"work and data must have same length", __FILE__, __LINE__,
2058 return gsl_stats_mad( data.data(), 1,
n, work.data() );
2066 template<
typename T,
typename U>
2068 size_t const n = sorted_data.size();
2069 if( work.size() !=
n ){
2070 gsl::exception e(
"work and data must have same length", __FILE__, __LINE__,
2074 return gsl_stats_Sn0_from_sorted_data( sorted_data.data(), 1,
n, work.data() ); }
2081 template<
typename T,
typename U>
2083 size_t const n = sorted_data.size();
2084 if( work.size() !=
n ){
2085 gsl::exception e(
"work and data must have same length", __FILE__, __LINE__,
2089 return gsl_stats_Sn_from_sorted_data( sorted_data.data(), 1,
n, work.data() ); }
2097 template<
typename T,
typename U,
typename V>
2099 size_t const n = sorted_data.size();
2100 if( work.size() != 3*
n ){
2101 gsl::exception e(
"work must be 3 × length of data", __FILE__, __LINE__,
2105 if( work_int.size() != 5*
n ){
2106 gsl::exception e(
"work_int must be 5 × length of data", __FILE__, __LINE__,
2110 return gsl_stats_Qn0_from_sorted_data( sorted_data.data(), 1,
n, work.data(),
2111 work_int.data() ); }
2119 template<
typename T,
typename U,
typename V>
2121 size_t const n = sorted_data.size();
2122 if( work.size() != 3*
n ){
2123 gsl::exception e(
"work must be 3 × length of data", __FILE__, __LINE__,
2127 if( work_int.size() != 5*
n ){
2128 gsl::exception e(
"work_int must be 5 × length of data", __FILE__, __LINE__,
2132 return gsl_stats_Qn_from_sorted_data( sorted_data.data(), 1,
n, work.data(),
2133 work_int.data() ); }
This class is used to handle gsl exceptions so that gsl can use these rather than the GSL error handl...
@ GSL_EBADLEN
matrix, vector lengths are not conformant
size_t n(workspace const &w)
C++ version of gsl_rstat_n().
gsl_sf_result result
Typedef for gsl_sf_result.
double min(T const &data, size_t const stride=1)
C++ version of gsl_stats_min().
double trmean_from_sorted_data(double const trim, T const &sorted_data, size_t const stride=1)
C++ version of gsl_stats_double_trmean_from_sorted_data().
double wabsdev_m(U const &w, size_t const wstride, T const &data, size_t const stride, double const wmean)
C++ version of gsl_stats_wabsdev_m().
double max(T const &data, size_t const stride=1)
C++ version of gsl_stats_max().
double wmean(U const &w, size_t const wstride, T const &data, size_t const stride)
C++ version of gsl_stats_wmean().
double Sn_from_sorted_data(T const &sorted_data, size_t const stride, U &work)
C++ version of gsl_stats_Sn_from_sorted_data().
double wtss_m(U const &w, size_t const wstride, T const &data, size_t const stride, double const wmean)
C++ version of gsl_stats_wtss_m().
double skew_m_sd(T const &data, size_t const stride, double const mean, double const sd)
C++ version of gsl_stats_skew_m_sd().
double wvariance(U const &w, size_t const wstride, T const &data, size_t const stride)
C++ version of gsl_stats_wvariance().
double tss_m(T const &data, size_t const stride, double const mean)
C++ version of gsl_stats_tss_m().
double lag1_autocorrelation_m(T const &data, size_t const stride, double const mean)
C++ version of gsl_stats_lag1_autocorrelation_m().
double wsd(U const &w, size_t const wstride, T const &data, size_t const stride)
C++ version of gsl_stats_wsd().
double pvariance(T const &data1, size_t const stride1, U const &data2, size_t const stride2)
C++ version of gsl_stats_pvariance().
double wvariance_m(U const &w, size_t const wstride, T const &data, size_t const stride, double const wmean)
C++ version of gsl_stats_wvariance_m().
double wskew(U const &w, size_t const wstride, T const &data, size_t const stride)
C++ version of gsl_stats_wskew().
double variance(T const &data, size_t const stride=1)
C++ version of gsl_stats_variance().
double quantile_from_sorted_data(T const &sorted_data, size_t const stride, double const f)
C++ version of gsl_stats_quantile_from_sorted_data().
double Sn0_from_sorted_data(T const &sorted_data, size_t const stride, U &work)
C++ version of gsl_stats_Sn0_from_sorted_data().
double wtss(U const &w, size_t const wstride, T const &data, size_t const stride)
C++ version of gsl_stats_wtss().
double sd_m(T const &data, size_t const stride, double const mean)
C++ version of gsl_stats_sd_m().
double Qn0_from_sorted_data(T const &sorted_data, size_t const stride, U &work, V &work_int)
C++ version of gsl_stats_Qn0_from_sorted_data().
double lag1_autocorrelation(T const &data, size_t const stride=1)
C++ version of gsl_stats_lag1_autocorrelation().
double wkurtosis_m_sd(U const &w, size_t const wstride, T const &data, size_t const stride, double const wmean, double const wsd)
C++ version of gsl_stats_wkurtosis_m_sd().
double median(T &data, size_t const stride=1)
C++ version of gsl_stats_double_median().
double kurtosis_m_sd(T const &data, size_t const stride, double const mean, double const sd)
C++ version of gsl_stats_kurtosis_m_sd().
double wsd_with_fixed_mean(U const &w, size_t const wstride, T const &data, size_t const stride, double const mean)
C++ version of gsl_stats_wsd_with_fixed_mean().
double mad(T const &data, size_t const stride, U &work)
C++ version of gsl_stats_mad().
double wskew_m_sd(U const &w, size_t const wstride, T const &data, size_t const stride, double const wmean, double const wsd)
C++ version of gsl_stats_wskew_m_sd().
double covariance_m(T const &data1, size_t const stride1, U const &data2, size_t const stride2, double const mean1, double const mean2)
C++ version of gsl_stats_covariance_m().
double skew(T const &data, size_t const stride=1)
C++ version of gsl_stats_skew().
double Qn_from_sorted_data(T const &sorted_data, size_t const stride, U &work, V &work_int)
C++ version of gsl_stats_Qn_from_sorted_data().
double variance_m(T const &data, size_t const stride, double const mean)
C++ version of gsl_stats_variance_m().
double wsd_m(U const &w, size_t const wstride, T const &data, size_t const stride, double const wmean)
C++ version of gsl_stats_wsd_m().
double tss(T const &data, size_t const stride=1)
C++ version of gsl_stats_tss().
double wvariance_with_fixed_mean(U const &w, size_t const wstride, T const &data, size_t const stride, double const mean)
C++ version of gsl_stats_wvariance_with_fixed_mean().
double kurtosis(T const &data, size_t const stride=1)
C++ version of gsl_stats_kurtosis().
double spearman(T const &data1, size_t const stride1, U const &data2, size_t const stride2, double work[])
C++ version of gsl_stats_spearman().
double covariance(T const &data1, size_t const stride1, U const &data2, size_t const stride2)
C++ version of gsl_stats_covariance().
double correlation(T const &data1, size_t const stride1, U const &data2, size_t const stride2)
C++ version of gsl_stats_correlation().
double absdev_m(T const &data, size_t const stride, double const mean)
C++ version of gsl_stats_absdev_m().
double mad0(T const &data, size_t const stride, U &work)
C++ version of gsl_stats_mad0().
double mean(T const &data, size_t const stride=1)
C++ version of gsl_stats_mean().
void minmax(double &min, double &max, T const &data, size_t const stride=1)
C++ version of gsl_stats_minmax().
double absdev(T const &data, size_t const stride=1)
C++ version of gsl_stats_absdev().
double gastwirth_from_sorted_data(T const &sorted_data, size_t const stride=1)
C++ version of gsl_stats_gastwirth_from_sorted_data().
void minmax_index(size_t &min_index, size_t &max_index, T const &data, size_t const stride=1)
C++ version of gsl_stats_minmax_index().
double wabsdev(U const &w, size_t const wstride, T const &data, size_t const stride)
C++ version of gsl_stats_wabsdev().
double ttest(T const &data1, size_t const stride1, U const &data2, size_t const stride2)
C++ version of gsl_stats_ttest().
double sd_with_fixed_mean(T const &data, size_t const stride, double const mean)
C++ version of gsl_stats_sd_with_fixed_mean().
double sd(T const &data, size_t const stride=1)
C++ version of gsl_stats_sd().
size_t min_index(T const &data, size_t const stride=1)
C++ version of gsl_stats_min_index().
double wkurtosis(U const &w, size_t const wstride, T const &data, size_t const stride)
C++ version of gsl_stats_wkurtosis().
size_t max_index(T const &data, size_t const stride=1)
C++ version of gsl_stats_max_index().
double median_from_sorted_data(T const &sorted_data, size_t const stride=1)
C++ version of gsl_stats_median_from_sorted_data().
double variance_with_fixed_mean(T const &data, size_t const stride, double const mean)
C++ version of gsl_stats_variance_with_fixed_mean().
The gsl package creates an interface to the GNU Scientific Library for C++.