public void Add(Stats <T> s) { if (s.m_options != m_options) { throw new ArgumentException("need matching options for adding"); } m_count += s.m_count; m_sum.Add(s.m_sum); m_min = Extremum <T> .Min(m_min, s.m_min); m_max = Extremum <T> .Min(m_max, s.m_max); m_sumOfSquares.Add(s.m_sumOfSquares); }
public static Stats <T> operator+(Stats <T> s0, Stats <T> s1) { if (s0.m_options != s1.m_options) { throw new ArgumentException("need matching options for adding"); } return(new Stats <T>(s0.m_options) { m_count = s0.m_count + s1.m_count, m_sum = s0.m_sum + s1.m_sum, m_min = Extremum <T> .Min(s0.m_min, s1.m_min), m_max = Extremum <T> .Min(s0.m_max, s1.m_max), m_sumOfSquares = s0.m_sumOfSquares + s1.m_sumOfSquares, }); }