/// <summary>
/// Compute the output from the F1 layer.
/// </summary>
///
/// <param name="input">The input to the F1 layer.</param>
private void ComputeF1(BiPolarMLData input)
{
for (int i = 0; i < _f1Count; i++)
{
double sum = _weightsF1ToF2[i, Winner]
*((_outputF2.GetBoolean(Winner)) ? 1 : 0);
double activation = (((input.GetBoolean(i)) ? 1 : 0) + _d1*sum - _b1)
/(1 + _a1
*(((input.GetBoolean(i)) ? 1 : 0) + _d1*sum) + _c1);
_outputF1.SetBoolean(i, activation > 0);
}
}