[an error occurred while processing this directive]
|
обычно он есть функция двух переменных x и y
для целочисленного варианта алгоритм такой
1. загоняем в область монотонности 0-pi/4 (y<=x)
x и y положительные
2. имеем таблицу тангенсов L(i)= tg(i*pi/4*N)
N размер таблицы
гоним бинарный поиск пока
L(i)*y больше х меньше L(i+1)*y
3. восстанавливаем угол по коду i
fi = pi*(i+0.5)/4*N
за 6 сравнений (маки + логика бинарного поиска) на таблице N=2**6=64 имеем точность 0.3 градуса, плюс начальные сравнения чтобы загнать в область монотонности.
Никакго деления, никаких нелинейностей.
если приделать ещё и линейную интерполяцию (затраты удвоятся) точность будет предельная на 16-разрядной сетке
очевидно так можно посчитать любую монотонную функцию
f(x/y)
E-mail: info@telesys.ru