/// <summary> /// The next. /// </summary> /// <param name="criterion"> /// The criterion. /// </param> /// <returns> /// The <see cref="double"/>. /// </returns> public override double Next(Criterion.Criterion criterion) { if (rightBound - leftBound > Precision) { double criterionDistortion = criterion.Distortion(); if (lastDistortion > criterionDistortion) { Value = current; lastDistortion = criterionDistortion; } current = (rightBound + leftBound) / 2.0; if (criterionDistortion < 0) { leftBound = current; } else { rightBound = current; } return current; } return -1; }