#include "gtl_math_kurt.h" namespace gtl { namespace math { kurt::kurt(gtl::analog_data *data) : analog_value(data) , _sum(0) , _mean(0) , _full_ring(false) , _prev_data_ptr(-1) { _name = "kurtosis"; } void kurt::before_copying_data(std::vector::iterator begin, std::vector::iterator end) { _sum -= std::accumulate(begin, end, 0.0); } void kurt::after_copying_data(std::vector::iterator begin, std::vector::iterator end) { _sum += std::accumulate(begin, end, 0.0); _mean = _sum/_data.size(); } void kurt::data_changed() { analog_value::data_changed(); if(_prev_data_ptr >= _data_ptr && !_full_ring) _full_ring = true; else _prev_data_ptr = _data_ptr; int n = _full_ring ? _data.size() : _data_ptr; if(n > 3) { qreal variance = 0.; for(int i=0; i