void UpdateWeights(TrainingSetData.TrainingSetItem t)
    {
        double error = t.Output - CalculateOutput(t.input);

        totalError += Mathf.Abs((float)error);
        for (int i = 0; i < weights.Length; i++)
        {
            weights [i] = weights [i] + error * t.input [i];
        }
        bias += error;
    }
    string CalculateOutputResult(TrainingSetData.TrainingSetItem ti)
    {
        double expected = ti.Output;
        var    b        = new System.Text.StringBuilder();

        b.Append("result for ");
        for (int i = 0; i < ti.input.Length; i++)
        {
            b.AppendFormat("{0} ", ti.input [i]);
        }
        double result = CalculateOutput(ti.input);

        b.AppendFormat(": {0}. Expected: {1}", result, expected);
        return(b.ToString());
    }