ccgsl 2.7.2
C++wrappersforGnuScientificLibrary
statistics_char.hpp
Go to the documentation of this file.
1/*
2 * $Id: statistics_char.hpp 303 2013-10-28 07:48:23Z jdl3 $
3 * Copyright (C) 2012, 2019, 2020 John D Lamb
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 2 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., 675 Mass Ave, Cambridge, MA 02139, USA.
18 */
19
20#ifndef CCGSL_STATISTICS_CHAR_HPP
21#define CCGSL_STATISTICS_CHAR_HPP
22#include<gsl/gsl_statistics_char.h>
23
24namespace gsl {
25 namespace stats {
26#ifndef DOXYGEN_SKIP
34 inline double char_mean( char const data[], size_t const stride, size_t const n ){
35 return gsl_stats_char_mean( data, stride, n ); }
43 inline double char_variance( char const data[], size_t const stride, size_t const n ){
44 return gsl_stats_char_variance( data, stride, n ); }
52 inline double char_sd( char const data[], size_t const stride, size_t const n ){
53 return gsl_stats_char_sd( data, stride, n ); }
62 inline double char_variance_with_fixed_mean( char const data[], size_t const stride,
63 size_t const n, double const mean ){
64 return gsl_stats_char_variance_with_fixed_mean( data, stride, n, mean ); }
73 inline double char_sd_with_fixed_mean( char const data[], size_t const stride,
74 size_t const n, double const mean ){
75 return gsl_stats_char_sd_with_fixed_mean( data, stride, n, mean ); }
83 inline double char_tss( char const data[], size_t const stride, size_t const n ){
84 return gsl_stats_char_tss( data, stride, n ); }
93 inline double char_tss_m( char const data[], size_t const stride,
94 size_t const n, double const mean ){
95 return gsl_stats_char_tss_m( data, stride, n, mean ); }
103 inline double char_absdev( char const data[], size_t const stride, size_t const n ){
104 return gsl_stats_char_absdev( data, stride, n ); }
112 inline double char_skew( char const data[], size_t const stride, size_t const n ){
113 return gsl_stats_char_skew( data, stride, n ); }
121 inline double char_kurtosis( char const data[], size_t const stride, size_t const n ){
122 return gsl_stats_char_kurtosis( data, stride, n ); }
130 inline double char_lag1_autocorrelation( char const data[], size_t const stride, size_t const n ){
131 return gsl_stats_char_lag1_autocorrelation( data, stride, n ); }
141 inline double char_covariance( char const data1[], size_t const stride1,
142 char const data2[], size_t const stride2,
143 size_t const n ){
144 return gsl_stats_char_covariance( data1, stride1, data2, stride2, n ); }
154 inline double char_correlation( char const data1[], size_t const stride1, char const data2[],
155 size_t const stride2, size_t const n ){
156 return gsl_stats_char_correlation( data1, stride1, data2, stride2, n ); }
165 inline double char_variance_m( char const data[], size_t const stride, size_t const n,
166 double const mean ){
167 return gsl_stats_char_variance_m( data, stride, n, mean ); }
176 inline double char_sd_m( char const data[], size_t const stride, size_t const n,
177 double const mean ){
178 return gsl_stats_char_sd_m( data, stride, n, mean ); }
187 inline double char_absdev_m( char const data[], size_t const stride, size_t const n,
188 double const mean ){
189 return gsl_stats_char_absdev_m( data, stride, n, mean ); }
199 inline double char_skew_m_sd( char const data[], size_t const stride, size_t const n,
200 double const mean, double const sd ){
201 return gsl_stats_char_skew_m_sd( data, stride, n, mean, sd ); }
211 inline double char_kurtosis_m_sd( char const data[], size_t const stride, size_t const n,
212 double const mean, double const sd ){
213 return gsl_stats_char_kurtosis_m_sd( data, stride, n, mean, sd ); }
222 inline double char_lag1_autocorrelation_m( char const data[], size_t const stride,
223 size_t const n, double const mean ){
224 return gsl_stats_char_lag1_autocorrelation_m( data, stride, n, mean ); }
236 inline double char_covariance_m( char const data1[], size_t const stride1,
237 char const data2[], size_t const stride2,
238 size_t const n, double const mean1, double const mean2 ){
239 return gsl_stats_char_covariance_m( data1, stride1, data2, stride2, n, mean1, mean2 ); }
250 inline double char_pvariance( char const data1[], size_t const stride1, size_t const n1,
251 char const data2[], size_t const stride2, size_t const n2 ){
252 return gsl_stats_char_pvariance( data1, stride1, n1, data2, stride2, n2 ); }
264 inline double char_ttest( char const data1[], size_t const stride1, size_t const n1,
265 char const data2[], size_t const stride2, size_t const n2 ){
266 return gsl_stats_char_ttest( data1, stride1, n1, data2, stride2, n2 ); }
274 inline double char_max( char const data[], size_t const stride, size_t const n ){
275 return gsl_stats_char_max( data, stride, n ); }
283 inline double char_min( char const data[], size_t const stride, size_t const n ){
284 return gsl_stats_char_min( data, stride, n ); }
293 inline void char_minmax( char* min, char* max, char const data[], size_t const stride,
294 size_t const n ){
295 gsl_stats_char_minmax( min, max, data, stride, n ); }
303 inline size_t char_max_index( char const data[], size_t const stride, size_t const n ){
304 return gsl_stats_char_max_index( data, stride, n ); }
312 inline size_t char_min_index( char const data[], size_t const stride, size_t const n ){
313 return gsl_stats_char_min_index( data, stride, n ); }
322 inline void char_minmax_index( size_t* min_index, size_t* max_index, char const data[],
323 size_t const stride, size_t const n ){
324 gsl_stats_char_minmax_index( min_index, max_index, data, stride, n ); }
332 inline double char_median_from_sorted_data( char const sorted_data[],
333 size_t const stride, size_t const n ){
334 return gsl_stats_char_median_from_sorted_data( sorted_data, stride, n ); }
343 inline double char_quantile_from_sorted_data( char const sorted_data[], size_t const stride,
344 size_t const n, double const f ){
345 return gsl_stats_char_quantile_from_sorted_data( sorted_data, stride, n, f ); }
346
347 // Same functions but without stride parameters
348
355 inline double char_mean( char const data[], size_t const n ){
356 return gsl_stats_char_mean( data, 1, n ); }
363 inline double char_variance( char const data[], size_t const n ){
364 return gsl_stats_char_variance( data, 1, n ); }
371 inline double char_sd( char const data[], size_t const n ){
372 return gsl_stats_char_sd( data, 1, n ); }
380 inline double char_variance_with_fixed_mean( char const data[],
381 size_t const n, double const mean ){
382 return gsl_stats_char_variance_with_fixed_mean( data, 1, n, mean ); }
390 inline double char_sd_with_fixed_mean( char const data[],
391 size_t const n, double const mean ){
392 return gsl_stats_char_sd_with_fixed_mean( data, 1, n, mean ); }
399 inline double char_tss( char const data[], size_t const n ){
400 return gsl_stats_char_tss( data, 1, n ); }
408 inline double char_tss_m( char const data[],
409 size_t const n, double const mean ){
410 return gsl_stats_char_tss_m( data, 1, n, mean ); }
417 inline double char_absdev( char const data[], size_t const n ){
418 return gsl_stats_char_absdev( data, 1, n ); }
425 inline double char_skew( char const data[], size_t const n ){
426 return gsl_stats_char_skew( data, 1, n ); }
433 inline double char_kurtosis( char const data[], size_t const n ){
434 return gsl_stats_char_kurtosis( data, 1, n ); }
441 inline double char_lag1_autocorrelation( char const data[], size_t const n ){
442 return gsl_stats_char_lag1_autocorrelation( data, 1, n ); }
450 inline double char_covariance( char const data1[], char const data2[], size_t const n ){
451 return gsl_stats_char_covariance( data1, 1, data2, 1, n ); }
459 inline double char_correlation( char const data1[], char const data2[], size_t const n ){
460 return gsl_stats_char_correlation( data1, 1, data2, 1, n ); }
468 inline double char_variance_m( char const data[], size_t const n, double const mean ){
469 return gsl_stats_char_variance_m( data, 1, n, mean ); }
477 inline double char_sd_m( char const data[], size_t const n, double const mean ){
478 return gsl_stats_char_sd_m( data, 1, n, mean ); }
486 inline double char_absdev_m( char const data[], size_t const n, double const mean ){
487 return gsl_stats_char_absdev_m( data, 1, n, mean ); }
496 inline double char_skew_m_sd( char const data[], size_t const n,
497 double const mean, double const sd ){
498 return gsl_stats_char_skew_m_sd( data, 1, n, mean, sd ); }
507 inline double char_kurtosis_m_sd( char const data[], size_t const n,
508 double const mean, double const sd ){
509 return gsl_stats_char_kurtosis_m_sd( data, 1, n, mean, sd ); }
517 inline double char_lag1_autocorrelation_m( char const data[],
518 size_t const n, double const mean ){
519 return gsl_stats_char_lag1_autocorrelation_m( data, 1, n, mean ); }
529 inline double char_covariance_m( char const data1[], char const data2[],
530 size_t const n, double const mean1, double const mean2 ){
531 return gsl_stats_char_covariance_m( data1, 1, data2, 1, n, mean1, mean2 ); }
540 inline double char_pvariance( char const data1[], size_t const n1,
541 char const data2[], size_t const n2 ){
542 return gsl_stats_char_pvariance( data1, 1, n1, data2, 1, n2 ); }
552 inline double char_ttest( char const data1[], size_t const n1,
553 char const data2[], size_t const n2 ){
554 return gsl_stats_char_ttest( data1, 1, n1, data2, 1, n2 ); }
561 inline double char_max( char const data[], size_t const n ){
562 return gsl_stats_char_max( data, 1, n ); }
569 inline double char_min( char const data[], size_t const n ){
570 return gsl_stats_char_min( data, 1, n ); }
578 inline void char_minmax( char* min, char* max, char const data[],
579 size_t const n ){
580 gsl_stats_char_minmax( min, max, data, 1, n ); }
587 inline size_t char_max_index( char const data[], size_t const n ){
588 return gsl_stats_char_max_index( data, 1, n ); }
595 inline size_t char_min_index( char const data[], size_t const n ){
596 return gsl_stats_char_min_index( data, 1, n ); }
604 inline void char_minmax_index( size_t* min_index, size_t* max_index, char const data[],
605 size_t const n ){
606 gsl_stats_char_minmax_index( min_index, max_index, data, 1, n ); }
613 inline double char_median_from_sorted_data( char const sorted_data[],
614 size_t const n ){
615 return gsl_stats_char_median_from_sorted_data( sorted_data, 1, n ); }
623 inline double char_quantile_from_sorted_data( char const sorted_data[],
624 size_t const n, double const f ){
625 return gsl_stats_char_quantile_from_sorted_data( sorted_data, 1, n, f ); }
626#endif // DOXYGEN_SKIP
627
628 // Generic versions of the same functions
629
636 template<typename T>
637 inline double char_mean( T const& data, size_t const stride = 1 ){
638 return gsl_stats_char_mean( data.data(), stride, data.size() / stride ); }
645 template<typename T>
646 inline double char_variance( T const& data, size_t const stride = 1 ){
647 return gsl_stats_char_variance( data.data(), stride, data.size() / stride ); }
654 template<typename T>
655 inline double char_sd( T const& data, size_t const stride = 1 ){
656 return gsl_stats_char_sd( data.data(), stride, data.size() / stride ); }
664 template<typename T>
665 inline double char_variance_with_fixed_mean( T const& data, size_t const stride,
666 double const mean ){
667 return gsl_stats_char_variance_with_fixed_mean( data.data(), stride, data.size() / stride, mean ); }
674 template<typename T>
675 inline double char_variance_with_fixed_mean( T const& data, double const mean ){
676 return gsl_stats_char_variance_with_fixed_mean( data.data(), 1, data.size(), mean ); }
684 template<typename T>
685 inline double char_sd_with_fixed_mean( T const& data, size_t const stride,
686 double const mean ){
687 return gsl_stats_char_sd_with_fixed_mean( data.data(), stride, data.size() / stride, mean ); }
694 template<typename T>
695 inline double char_sd_with_fixed_mean( T const& data, double const mean ){
696 return gsl_stats_char_sd_with_fixed_mean( data.data(), 1, data.size(), mean ); }
703 template<typename T>
704 inline double char_tss( T const& data, size_t const stride = 1 ){
705 return gsl_stats_char_tss( data.data(), stride, data.size() / stride ); }
713 template<typename T>
714 inline double char_tss_m( T const& data, size_t const stride, double const mean ){
715 return gsl_stats_char_tss_m( data.data(), stride, data.size() / stride, mean ); }
722 template<typename T>
723 inline double char_tss_m( T const& data, double const mean ){
724 return gsl_stats_char_tss_m( data.data(), 1, data.size(), mean ); }
731 template<typename T>
732 inline double char_absdev( T const& data, size_t const stride = 1 ){
733 return gsl_stats_char_absdev( data.data(), stride, data.size() / stride ); }
740 template<typename T>
741 inline double char_skew( T const& data, size_t const stride = 1 ){
742 return gsl_stats_char_skew( data.data(), stride, data.size() / stride ); }
749 template<typename T>
750 inline double char_kurtosis( T const& data, size_t const stride = 1 ){
751 return gsl_stats_char_kurtosis( data.data(), stride, data.size() / stride ); }
758 template<typename T>
759 inline double char_lag1_autocorrelation( T const& data, size_t const stride = 1 ){
760 return gsl_stats_char_lag1_autocorrelation( data.data(), stride, data.size() / stride ); }
769 template<typename T, typename U>
770 inline double char_covariance( T const& data1, size_t const stride1,
771 U const& data2, size_t const stride2 ){
772 return gsl_stats_char_covariance( data1.data(), stride1, data2.data(), stride2, data1.size() / stride1 ); }
779 template<typename T, typename U>
780 inline double char_covariance( T const& data1, U const& data2 ){
781 return gsl_stats_char_covariance( data1.data(), 1, data2.data(), 1, data1.size() ); }
790 template<typename T, typename U>
791 inline double char_correlation( T const& data1, size_t const stride1, U const& data2,
792 size_t const stride2 ){
793 return gsl_stats_char_correlation( data1.data(), stride1, data2.data(), stride2, data1.size() / stride1 ); }
800 template<typename T, typename U>
801 inline double char_correlation( T const& data1, U const& data2 ){
802 return gsl_stats_char_correlation( data1.data(), 1, data2.data(), 1, data1.size() ); }
810 template<typename T>
811 inline double char_variance_m( T const& data, size_t const stride, double const mean ){
812 return gsl_stats_char_variance_m( data.data(), stride, data.size() / stride, mean ); }
819 template<typename T>
820 inline double char_variance_m( T const& data, double const mean ){
821 return gsl_stats_char_variance_m( data.data(), 1, data.size(), mean ); }
829 template<typename T>
830 inline double char_sd_m( T const& data, size_t const stride, double const mean ){
831 return gsl_stats_char_sd_m( data.data(), stride, data.size() / stride, mean ); }
838 template<typename T>
839 inline double char_sd_m( T const& data, double const mean ){
840 return gsl_stats_char_sd_m( data.data(), 1, data.size(), mean ); }
848 template<typename T>
849 inline double char_absdev_m( T const& data, size_t const stride, double const mean ){
850 return gsl_stats_char_absdev_m( data.data(), stride, data.size() / stride, mean ); }
857 template<typename T>
858 inline double char_absdev_m( T const& data, double const mean ){
859 return gsl_stats_char_absdev_m( data.data(), 1, data.size(), mean ); }
868 template<typename T>
869 inline double char_skew_m_sd( T const& data, size_t const stride,
870 double const mean, double const sd ){
871 return gsl_stats_char_skew_m_sd( data.data(), stride, data.size() / stride, mean, sd ); }
879 template<typename T>
880 inline double char_skew_m_sd( T const& data, double const mean, double const sd ){
881 return gsl_stats_char_skew_m_sd( data.data(), 1, data.size(), mean, sd ); }
890 template<typename T>
891 inline double char_kurtosis_m_sd( T const& data, size_t const stride,
892 double const mean, double const sd ){
893 return gsl_stats_char_kurtosis_m_sd( data.data(), stride, data.size() / stride, mean, sd ); }
901 template<typename T>
902 inline double char_kurtosis_m_sd( T const& data, double const mean, double const sd ){
903 return gsl_stats_char_kurtosis_m_sd( data.data(), 1, data.size(), mean, sd ); }
911 template<typename T>
912 inline double char_lag1_autocorrelation_m( T const& data, size_t const stride,
913 double const mean ){
914 return gsl_stats_char_lag1_autocorrelation_m( data.data(), stride, data.size() / stride, mean ); }
921 template<typename T>
922 inline double char_lag1_autocorrelation_m( T const& data, double const mean ){
923 return gsl_stats_char_lag1_autocorrelation_m( data.data(), 1, data.size(), mean ); }
934 template<typename T, typename U>
935 inline double char_covariance_m( T const& data1, size_t const stride1,
936 U const& data2, size_t const stride2,
937 double const mean1, double const mean2 ){
938 return gsl_stats_char_covariance_m( data1.data(), stride1, data2.data(), stride2, data1.size() / stride1,
939 mean1, mean2 ); }
948 template<typename T>
949 inline double char_covariance_m( T const& data1, T const& data2,
950 double const mean1, double const mean2 ){
951 return gsl_stats_char_covariance_m( data1.data(), 1, data2.data(), 1, data1.size(),
952 mean1, mean2 ); }
961 template<typename T, typename U>
962 inline double char_pvariance( T const& data1, size_t const stride1,
963 U const& data2, size_t const stride2 ){
964 return gsl_stats_char_pvariance( data1.data(), stride1, data1.size() / stride1, data2.data(),
965 stride2, data2.size() / stride2 ); }
975 template<typename T, typename U>
976 inline double char_ttest( T const& data1, size_t const stride1,
977 U const& data2, size_t const stride2 ){
978 return gsl_stats_char_ttest( data1.data(), stride1, data1.size() / stride1,
979 data2.data(), stride2, data2.size() / stride2 ); }
986 template<typename T>
987 inline double char_max( T const& data, size_t const stride = 1 ){
988 return gsl_stats_char_max( data.data(), stride, data.size() / stride ); }
995 template<typename T>
996 inline double char_min( T const& data, size_t const stride = 1 ){
997 return gsl_stats_char_min( data.data(), stride, data.size() / stride ); }
1005 template<typename T>
1006 inline void char_minmax( char& min, char& max, T const& data, size_t const stride = 1 ){
1007 gsl_stats_char_minmax( &min, &max, data.data(), stride, data.size() / stride ); }
1014 template<typename T>
1015 inline size_t char_max_index( T const& data, size_t const stride = 1 ){
1016 return gsl_stats_char_max_index( data.data(), stride, data.size() / stride ); }
1023 template<typename T>
1024 inline size_t char_min_index( T const& data, size_t const stride = 1 ){
1025 return gsl_stats_char_min_index( data.data(), stride, data.size() / stride ); }
1033 template<typename T>
1034 inline void char_minmax_index( size_t& min_index, size_t& max_index, T const& data,
1035 size_t const stride = 1 ){
1036 gsl_stats_char_minmax_index( &min_index, &max_index, data.data(), stride, data.size() / stride ); }
1043 template<typename T>
1044 inline double char_median_from_sorted_data( T const& sorted_data, size_t const stride = 1 ){
1045 return gsl_stats_char_median_from_sorted_data( sorted_data.data(), stride, sorted_data.size() / stride ); }
1053 template<typename T>
1054 inline double char_quantile_from_sorted_data( T const& sorted_data, size_t const stride,
1055 double const f ){
1056 size_t const n = sorted_data.size();
1057 return gsl_stats_char_quantile_from_sorted_data( sorted_data.data(), stride,
1058 n / stride, f ); }
1059 /* stride-free versions */
1066 template<typename T, typename U>
1067 inline double char_pvariance( T const& data1, U const& data2 ){
1068 return gsl_stats_char_pvariance( data1.data(), 1, data1.size(), data2.data(), 1, data1.size() ); }
1076 template<typename T, typename U>
1077 inline double char_ttest( T const& data1, U const& data2 ){
1078 return gsl_stats_char_ttest( data1.data(), 1, data1.size(), data2.data(), 1, data1.size() ); }
1085 template<typename T>
1086 inline double char_quantile_from_sorted_data( T const& sorted_data,
1087 double const f ){
1088 return gsl_stats_char_quantile_from_sorted_data( sorted_data.data(), 1,
1089 sorted_data.size(), f ); }
1090#ifndef DOXYGEN_SKIP
1103 inline double char_spearman( char const data1[], size_t const stride1,
1104 char const data2[], size_t const stride2,
1105 size_t const n, double work[] ){
1106 if( 0 != work )
1107 return gsl_stats_char_spearman( data1, stride1, data2, stride2, n, work );
1108 // create workspace
1109 double* workspace = new double[2 * n];
1110 double result = gsl_stats_char_spearman( data1, stride1, data2, stride2, n, workspace );
1111 delete[] workspace;
1112 return result;
1113 }
1124 inline double char_spearman( char const data1[], char const data2[],
1125 size_t const n, double work[] ){
1126 if( 0 != work )
1127 return gsl_stats_char_spearman( data1, 1, data2, 1, n, work );
1128 // create workspace
1129 double* workspace = new double[2 * n];
1130 double result = gsl_stats_char_spearman( data1, 1, data2, 1, n, workspace );
1131 delete[] workspace;
1132 return result;
1133 }
1134#endif // DOXYGEN_SKIP
1146 template<typename T, typename U>
1147 inline double char_spearman( T const& data1, size_t const stride1,
1148 U const& data2, size_t const stride2,
1149 double work[] ){
1150 if( 0 != work )
1151 return gsl_stats_char_spearman( data1.data(), stride1, data2.data(), stride2,
1152 data1.size() / stride1, work );
1153 // create workspace
1154 double* workspace = new double[2 * data1.size() / stride1];
1155 double result = gsl_stats_char_spearman( data1.data(), stride1, data2.data(), stride2,
1156 data1.size() / stride1, workspace );
1157 delete[] workspace;
1158 return result;
1159 }
1169 template<typename T, typename U>
1170 inline double char_spearman( T const& data1, U const& data2, double work[] ){
1171 if( 0 != work )
1172 return gsl_stats_char_spearman( data1, 1, data2, 1, data1.size(), work );
1173 // create workspace
1174 double* workspace = new double[2 * data1.size()];
1175 double result = gsl_stats_char_spearman( data1, 1, data2, 1, data1.size(), workspace );
1176 delete[] workspace;
1177 return result;
1178 }
1179
1186 template<typename T>
1187 inline double char_median( T& data, size_t const stride=1 ){
1188 size_t const n = data.size();
1189 return gsl_stats_char_median( data.data(), stride, n ); }
1197 template<typename T>
1198 double char_trmean_from_sorted_data( double const trim, T const& sorted_data,
1199 size_t const stride=1 ){
1200 size_t const n = sorted_data.size();
1201 return gsl_stats_char_trmean_from_sorted_data( trim, sorted_data.data(), stride, n ); }
1208 template<typename T>
1209 double char_gastwirth_from_sorted_data( T const& sorted_data, size_t const stride=1 ){
1210 size_t const n = sorted_data.size();
1211 return gsl_stats_char_gastwirth_from_sorted_data( sorted_data.data(), stride, n ); }
1219 template<typename T,typename U>
1220 double char_mad0( T const& data, size_t const stride, U& work ){
1221 size_t const n = data.size();
1222 if( work.size() != n ){
1223 gsl::exception e( "work and data must have same length", __FILE__, __LINE__,
1225 throw( e );
1226 }
1227 return gsl_stats_char_mad0( data.data(), stride, n, work.data() ); }
1235 template<typename T,typename U>
1236 double char_mad( T const& data, size_t const stride, U& work ){
1237 size_t const n = data.size();
1238 if( work.size() != n ){
1239 gsl::exception e( "work and data must have same length", __FILE__, __LINE__,
1241 throw( e );
1242 }
1243 return gsl_stats_char_mad( data.data(), stride, n, work.data() );
1244 }
1252 template<typename T,typename U>
1253 double char_Sn0_from_sorted_data( T const& sorted_data, size_t const stride, U& work ){
1254 size_t const n = sorted_data.size();
1255 if( work.size() != n ){
1256 gsl::exception e( "work and data must have same length", __FILE__, __LINE__,
1258 throw( e );
1259 }
1260 return gsl_stats_char_Sn0_from_sorted_data( sorted_data.data(), stride, n, work.data() ); }
1268 template<typename T,typename U>
1269 double char_Sn_from_sorted_data( T const& sorted_data, size_t const stride, U& work ){
1270 size_t const n = sorted_data.size();
1271 if( work.size() != n ){
1272 gsl::exception e( "work and data must have same length", __FILE__, __LINE__,
1274 throw( e );
1275 }
1276 return gsl_stats_char_Sn_from_sorted_data( sorted_data.data(), stride, n, work.data() ); }
1285 template<typename T,typename U,typename V>
1286 char char_Qn0_from_sorted_data( T const& sorted_data, size_t const stride,
1287 U& work, V& work_int ){
1288 size_t const n = sorted_data.size();
1289 if( work.size() != 3*n ){
1290 gsl::exception e( "work must be 3 × length of data", __FILE__, __LINE__,
1292 throw( e );
1293 }
1294 if( work_int.size() != 5*n ){
1295 gsl::exception e( "work_int must be 5 × length of data", __FILE__, __LINE__,
1297 throw( e );
1298 }
1299 return gsl_stats_char_Qn0_from_sorted_data( sorted_data.data(), stride, n, work.data(),
1300 work_int.data() ); }
1309 template<typename T,typename U,typename V>
1310 char char_Qn_from_sorted_data( T const& sorted_data, size_t const stride,
1311 U& work, V& work_int ){
1312 size_t const n = sorted_data.size();
1313 if( work.size() != 3*n ){
1314 gsl::exception e( "work must be 3 × length of data", __FILE__, __LINE__,
1316 throw( e );
1317 }
1318 if( work_int.size() != 5*n ){
1319 gsl::exception e( "work_int must be 5 × length of data", __FILE__, __LINE__,
1321 throw( e );
1322 }
1323 return gsl_stats_char_Qn_from_sorted_data( sorted_data.data(), stride, n, work.data(),
1324 work_int.data() ); }
1325 /* stride-free versions */
1332 template<typename T,typename U>
1333 double char_mad0( T const& data, U& work ){
1334 size_t const n = data.size();
1335 if( work.size() != n ){
1336 gsl::exception e( "work and data must have same length", __FILE__, __LINE__,
1338 throw( e );
1339 }
1340 return gsl_stats_char_mad0( data.data(), 1, n, work.data() ); }
1347 template<typename T,typename U>
1348 double char_mad( T const& data, U& work ){
1349 size_t const n = data.size();
1350 if( work.size() != n ){
1351 gsl::exception e( "work and data must have same length", __FILE__, __LINE__,
1353 throw( e );
1354 }
1355 return gsl_stats_char_mad( data.data(), 1, n, work.data() );
1356 }
1363 template<typename T,typename U>
1364 double char_Sn0_from_sorted_data( T const& sorted_data, U& work ){
1365 size_t const n = sorted_data.size();
1366 if( work.size() != n ){
1367 gsl::exception e( "work and data must have same length", __FILE__, __LINE__,
1369 throw( e );
1370 }
1371 return gsl_stats_char_Sn0_from_sorted_data( sorted_data.data(), 1, n, work.data() ); }
1378 template<typename T,typename U>
1379 double char_Sn_from_sorted_data( T const& sorted_data, U& work ){
1380 size_t const n = sorted_data.size();
1381 if( work.size() != n ){
1382 gsl::exception e( "work and data must have same length", __FILE__, __LINE__,
1384 throw( e );
1385 }
1386 return gsl_stats_char_Sn_from_sorted_data( sorted_data.data(), 1, n, work.data() ); }
1394 template<typename T,typename U,typename V>
1395 double char_Qn0_from_sorted_data( T const& sorted_data, U& work, V& work_int ){
1396 size_t const n = sorted_data.size();
1397 if( work.size() != 3*n ){
1398 gsl::exception e( "work must be 3 × length of data", __FILE__, __LINE__,
1400 throw( e );
1401 }
1402 if( work_int.size() != 5*n ){
1403 gsl::exception e( "work_int must be 5 × length of data", __FILE__, __LINE__,
1405 throw( e );
1406 }
1407 return gsl_stats_char_Qn0_from_sorted_data( sorted_data.data(), 1, n, work.data(),
1408 work_int.data() ); }
1416 template<typename T,typename U,typename V>
1417 double char_Qn_from_sorted_data( T const& sorted_data, U& work, V& work_int ){
1418 size_t const n = sorted_data.size();
1419 if( work.size() != 3*n ){
1420 gsl::exception e( "work must be 3 × length of data", __FILE__, __LINE__,
1422 throw( e );
1423 }
1424 if( work_int.size() != 5*n ){
1425 gsl::exception e( "work_int must be 5 × length of data", __FILE__, __LINE__,
1427 throw( e );
1428 }
1429 return gsl_stats_char_Qn_from_sorted_data( sorted_data.data(), 1, n, work.data(),
1430 work_int.data() ); }
1431
1432
1433 }
1434}
1435#endif
This class is used to handle gsl exceptions so that gsl can use these rather than the GSL error handl...
Definition: exception.hpp:387
@ GSL_EBADLEN
matrix, vector lengths are not conformant
Definition: exception.hpp:490
size_t n(workspace const &w)
C++ version of gsl_rstat_n().
Definition: rstat.hpp:299
gsl_sf_result result
Typedef for gsl_sf_result.
Definition: sf_result.hpp:30
double min(T const &data, size_t const stride=1)
C++ version of gsl_stats_min().
double char_variance(T const &data, size_t const stride=1)
C++ version of gsl_stats_char_variance().
double max(T const &data, size_t const stride=1)
C++ version of gsl_stats_max().
double char_median_from_sorted_data(T const &sorted_data, size_t const stride=1)
C++ version of gsl_stats_char_median_from_sorted_data().
double char_quantile_from_sorted_data(T const &sorted_data, size_t const stride, double const f)
C++ version of gsl_stats_char_quantile_from_sorted_data().
double char_absdev_m(T const &data, size_t const stride, double const mean)
C++ version of gsl_stats_char_absdev_m().
double char_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_char_covariance_m().
double char_skew(T const &data, size_t const stride=1)
C++ version of gsl_stats_char_skew().
void char_minmax(char &min, char &max, T const &data, size_t const stride=1)
C++ version of gsl_stats_char_minmax().
void char_minmax_index(size_t &min_index, size_t &max_index, T const &data, size_t const stride=1)
C++ version of gsl_stats_char_minmax_index().
double char_gastwirth_from_sorted_data(T const &sorted_data, size_t const stride=1)
C++ version of gsl_stats_char_gastwirth_from_sorted_data().
size_t char_min_index(T const &data, size_t const stride=1)
C++ version of gsl_stats_char_min_index().
double char_correlation(T const &data1, size_t const stride1, U const &data2, size_t const stride2)
C++ version of gsl_stats_char_correlation().
double char_Sn0_from_sorted_data(T const &sorted_data, size_t const stride, U &work)
C++ version of gsl_stats_char_Sn0_from_sorted_data().
double char_skew_m_sd(T const &data, size_t const stride, double const mean, double const sd)
C++ version of gsl_stats_char_skew_m_sd().
double char_kurtosis_m_sd(T const &data, size_t const stride, double const mean, double const sd)
C++ version of gsl_stats_char_kurtosis_m_sd().
char char_Qn_from_sorted_data(T const &sorted_data, size_t const stride, U &work, V &work_int)
C++ version of gsl_stats_char_Qn_from_sorted_data().
double char_mad(T const &data, size_t const stride, U &work)
C++ version of gsl_stats_char_mad().
double char_mean(T const &data, size_t const stride=1)
C++ version of gsl_stats_char_mean().
double char_absdev(T const &data, size_t const stride=1)
C++ version of gsl_stats_char_absdev().
double char_lag1_autocorrelation_m(T const &data, size_t const stride, double const mean)
C++ version of gsl_stats_char_lag1_autocorrelation_m().
double char_tss_m(T const &data, size_t const stride, double const mean)
C++ version of gsl_stats_char_tss_m().
double char_median(T &data, size_t const stride=1)
C++ version of gsl_stats_char_median().
double char_sd(T const &data, size_t const stride=1)
C++ version of gsl_stats_char_sd().
double char_pvariance(T const &data1, size_t const stride1, U const &data2, size_t const stride2)
C++ version of gsl_stats_char_pvariance().
double char_min(T const &data, size_t const stride=1)
C++ version of gsl_stats_char_min().
double char_variance_with_fixed_mean(T const &data, size_t const stride, double const mean)
C++ version of gsl_stats_char_variance_with_fixed_mean().
double char_lag1_autocorrelation(T const &data, size_t const stride=1)
C++ version of gsl_stats_char_lag1_autocorrelation().
double char_Sn_from_sorted_data(T const &sorted_data, size_t const stride, U &work)
C++ version of gsl_stats_char_Sn_from_sorted_data().
double mean(T const &data, size_t const stride=1)
C++ version of gsl_stats_mean().
double char_trmean_from_sorted_data(double const trim, T const &sorted_data, size_t const stride=1)
C++ version of gsl_stats_char_trmean_from_sorted_data().
double char_covariance(T const &data1, size_t const stride1, U const &data2, size_t const stride2)
C++ version of gsl_stats_char_covariance().
double char_ttest(T const &data1, size_t const stride1, U const &data2, size_t const stride2)
C++ version of gsl_stats_char_ttest().
double char_sd_with_fixed_mean(T const &data, size_t const stride, double const mean)
C++ version of gsl_stats_char_sd_with_fixed_mean().
size_t char_max_index(T const &data, size_t const stride=1)
C++ version of gsl_stats_char_max_index().
double char_max(T const &data, size_t const stride=1)
C++ version of gsl_stats_char_max().
double char_variance_m(T const &data, size_t const stride, double const mean)
C++ version of gsl_stats_char_variance_m().
double sd(T const &data, size_t const stride=1)
C++ version of gsl_stats_sd().
char char_Qn0_from_sorted_data(T const &sorted_data, size_t const stride, U &work, V &work_int)
C++ version of gsl_stats_char_Qn0_from_sorted_data().
double char_tss(T const &data, size_t const stride=1)
C++ version of gsl_stats_char_tss().
size_t min_index(T const &data, size_t const stride=1)
C++ version of gsl_stats_min_index().
double char_sd_m(T const &data, size_t const stride, double const mean)
C++ version of gsl_stats_char_sd_m().
size_t max_index(T const &data, size_t const stride=1)
C++ version of gsl_stats_max_index().
double char_spearman(T const &data1, size_t const stride1, U const &data2, size_t const stride2, double work[])
C++ version of gsl_stats_char_spearman().
double char_mad0(T const &data, size_t const stride, U &work)
C++ version of gsl_stats_char_mad0().
double char_kurtosis(T const &data, size_t const stride=1)
C++ version of gsl_stats_char_kurtosis().
The gsl package creates an interface to the GNU Scientific Library for C++.
Definition: blas.hpp:34