Простенькая с виду задачка

В общем вызвался тут помочь одному товарищу. Но что то застряли в упор.
Дан алгоритм:


Но алгоритм как выяснилось заведомо ошибочен. Опознать ошибку предлагается с помощью магического шара либо какого то особо одаренного телепата.
Дано решение:

3 интервала -10,-8,4 от -8,4 до 3,8 от 3,8 до 10

Вот функция:

function TForm1.F(x: double): double;
begin
  Result := -2.0 / (4.0 * sin(0.5 * x) + 0.6 * x - 10.0);
end;

начальный интервал -10, 10

function TForm1.CheckFunc(a, b, gamma: double; var am, bm: double): integer;
var
  x0, x1, x2: double;
  lastAbs: double;
begin

  am := 0;
  bm := 0;

  x1 := a;
  x2 := a + gamma;
  while (a < b) do
  begin

    if (x2 <= b) then
    begin
      x0 := (x1 + x2) / 2.0;
      if ((F(x0) <= F(x1)) or (F(x0) <= F(x2))) then
      begin
     //выпукла
      end
      else
      begin
        // невыпукла
        // выбираем максимальный интервал
        if abs(x2 - x1) > lastAbs then
        begin
          am := x1;
          bm := x2;
          lastAbs := abs(x2 - x1);
        end;
        a := x2; // начинаем новый интервал c конца предыдущего
        x1 := a;
        x2 := a;
      end;
      x2 := x2 + gamma;
    end
    else
    begin
      a := a + gamma; // согласно алгоритму сдвигаем левую границу
      x1 := a;
      x2 := a + gamma;
    end;
  end;

  // проверяем последний интервал
  if abs(x2 - x1) > lastAbs then
  begin
    am := x1;
    bm := x2;
    lastAbs := abs(x2 - x1);
  end;

  Result := 2;
end;

Может кто нибудь поможет?? Ни гугл не помогает ни вики.
Первый интервал еще попадает -10, -8,4 а дальше в лучшем случае получалось -8,4, 10
Такое ощущение что над человеком тупо издеваются. Типа вот учебник с ошибкой, но ты должан сам разобраться в теме, найти ошибку и вылечить ее.

Алгоритм реально какой-то корявый. Понятно что функция периодичная. На графике посмотрел у неё примерно в точках -8.81 и 3.75 локальные максимумы и, соответственно, в некоторой окрестности этих точек локальная вогнутость. В точках -3.75 и 8.81 - локальный минимум и локальная выпуклость. В этих точках первая производная нулевая, где-то там между ними точки перегиба, где вторая производная меняет знак

Так это и я вижу. Как привести алгоритм из методички к решению дающему верный результат??
Понятно что можно не парится а тупо найти производные и где они меняют знак… но тут вроде как задача другая… да и препод будет сравнивать именно с тем что он дал в методичке поэтому это хоть как то должно быть похоже

для начала замени or на and. должно быть слева и справа не меньше. То и/или не верно, только И

Ну и там должно быть только два интервала локальной выпуклости

Да менял. Меня тоже зацепило.
Но тогда он вообще сыпет интервалы через каждую точку.

по идее логично. но на втором интервале средняя точка не будет выше обоих, а в какой момент начинать двигать левую точку не понятно