// $Id: moments.csharp,v 1.0 2002/11/27 13:19:00 dada Exp $
// http://dada.perl.it/shootout/
// 
// Transliterated from the Java implementation.  
//
// contributed by Isaac Gouy

using System;
using System.Collections;

namespace LanguageShootout
{
    class Moments
    {
        [STAThread]
        static void Main(string[] args)
        {
            String line;
            ArrayList numbers = new ArrayList();
            double num, sum = 0.0;
            double mean = 0.0;
            double average_deviation = 0.0;
            double standard_deviation = 0.0;
            double variance = 0.0;
            double skew = 0.0;
            double kurtosis = 0.0;
            double median = 0.0;
            double deviation = 0.0;
            int i, n, mid = 0;

            while ( (line = Console.ReadLine()) != null ) {
                num = Double.Parse(line);
                sum += num;
                numbers.Add(num);
            }

            n = numbers.Count;
            mean = sum / n;
            for (i=0; i<n; i++) {
                deviation = (double)numbers[i] - mean;
                average_deviation += Math.Abs(deviation);
                variance += Math.Pow(deviation,2);
                skew += Math.Pow(deviation,3);
                kurtosis += Math.Pow(deviation,4);
            }
            average_deviation /= n;
            variance /= (n - 1);
            standard_deviation = Math.Sqrt(variance);
            if (variance != 0.0) {
                skew /= (n * variance * standard_deviation);
                kurtosis = kurtosis/(n * variance * variance) - 3.0;
            }
    
            numbers.Sort();

            mid = n / 2;
            median = (n % 2 != 0) ?
                (double)numbers[mid] :
                ((double)numbers[mid] + (double)numbers[mid-1]) / 2;

            Console.WriteLine("n:                  {0:d}", n);
            Console.WriteLine("median:             {0:f6}", median);
            Console.WriteLine("mean:               {0:f6}", mean);
            Console.WriteLine("average_deviation:  {0:f6}", average_deviation);
            Console.WriteLine("standard_deviation: {0:f6}", standard_deviation);
            Console.WriteLine("variance:           {0:f6}", variance);
            Console.WriteLine("skew:               {0:f6}", skew);
            Console.WriteLine("kurtosis:           {0:f6}", kurtosis);
        }
    }
}