public override double F(double x) { var a = base.F(x); var b = Input2.F(x); switch (Type) { case CombinationType.Add: return(a + b); case CombinationType.Substract: return(a - b); case CombinationType.Multiply: return(a * b); case CombinationType.Divide: // ReSharper disable once CompareOfFloatsByEqualityOperator if (b == 0.0) { return(double.NaN); } return(a / b); default: return(double.NaN); } }