private double CalcIntegralCqf(double start, double end, int parts, TypeOfCqf typeOfCqf) { var integralValue = 0.0; var sizeOfStep = (end - start) / parts; for (var i = 0; i < parts; i++) { double[] nodes; switch (typeOfCqf) { case TypeOfCqf.Iqf: nodes = new double[3]; nodes[0] = start + sizeOfStep * i; nodes[1] = start + sizeOfStep * (i + 1.0 / 2); nodes[2] = start + sizeOfStep * (i + 1); integralValue += _iqfHelper.CalcIntegral(nodes[0], nodes[2], nodes); break; case TypeOfCqf.Gqf: nodes = new double[2]; nodes[0] = start + sizeOfStep * i; nodes[1] = start + sizeOfStep * (i + 1); integralValue += _gqfHelper.CalcIntegral(nodes[0], nodes[1]); break; default: throw new ArgumentOutOfRangeException(nameof(typeOfCqf), typeOfCqf, null); } } return(integralValue); }