#!/usr/local/bin/ruby
require "GSL"
# how to use module functions from Stats as methods for Array
class Array
def mean
GSL::Stats::mean1 self
end
# if you need stride:
# def mean(stride=1)
# GSL::Stats::mean self, stride
# end
# etc.
def variance
GSL::Stats::variance1 self
end
def variance_m(m)
GSL::Stats::variance1_m self, m
end
def variance_with_fixed_mean(m)
GSL::Stats::variance1_with_fixed_mean self, m
end
def sd
GSL::Stats::sd1 self
end
def sd_m(m)
GSL::Stats::sd1_m self, m
end
def sd_with_fixed_mean(m)
GSL::Stats::sd1_with_fixed_mean self, m
end
def absdev
GSL::Stats::absdev self, 1
end
def absdev_m(m)
GSL::Stats::absdev self, 1, m
end
def skew
GSL::Stats::skew self, 1
end
def skew_m_sd(m, sd)
GSL::Stats::skew self, 1, m, sd
end
def kurtosis
GSL::Stats::kurtosis self, 1
end
def kurtosis_m_sd(m, sd)
GSL::Stats::kurtosis_m_sd self, 1, m, sd
end
def autocorrelation
GSL::Stats::autocorrelation self, 1
end
def autocorrelation_m(m)
GSL::Stats::autocorrelation_m self, 1, m
end
def max_index
GSL::Stats::max_index self, 1
end
def min_index
GSL::Stats::min_index self, 1
end
def minmax
GSL::Stats::minmax self, 1
end
def minmax_index
GSL::Stats::minmax_index self, 1
end
# etc.
end
a = [1,2,3,4,5,6]
puts a.mean