public virtual double CalculateActivationDerivative(double weightedInputs)
{
double coshx = Math.Cosh(X_STRETCH * weightedInputs);
double denominator = Math.Cosh(2.0 * X_STRETCH * weightedInputs) + 1;
double result = DERIVATIVE_STRETCH * coshx * coshx / (denominator * denominator);
if (double.IsNaN(result))
throw new Exception("NaN!");
return result;
}