Он возвращает другой результат только тогда, когда (x + 1) вызывает потерю точности, то есть x на много порядков больше или меньше единицы.
Но я не думаю, что это хитрый или ловкость рук , я думаю, что это просто неправильно .
cos(0) = 1 but f(1) = -pi/2
cos(pi/2) = 0 but f(0) = 0
cos(pi) = -1 but f(-1) = pi/2
где f(x)
- реализация arccos
Винсента,Все они отключены на pi/2
, линейное приближение, которое дает по крайней мере эти три правильные точки, будет
g(x) = (1 - x) * pi / 2