Судя по вот этому round(a-b, 3) , ты хочешь считать до тех пор, пока "расстояние" между числами а и b не станет очень маленьким. Строгое равенство трудно получить, лучше использовать "больше"/"меньше" - это раз. А два - x = round((a+b)/2, 3) тут ты не сокращаешь расстояние между числами, а увеличиваешь, потому что новая полусумма в любом случае будет присвоена или а или b. Может тебе надо было x = round((a-b)/2, 3)?
Условие никогда не бывает ложно. Чтобы оно было ложно, одно число (а-б) должно быть равно сразу двум другим - и 0.001 и -0.001. А такое случиться никак не может