Алгоритм альфа макс. плюс бета-минимум представляет собой высокоскоростное приближение квадратного корня суммы двух квадратов. Квадратный корень из суммы двух квадратов, также известный как сложение Пифагора, является полезной функцией, потому что он находит гипотенузу прямоугольного треугольника с учетом двух длин сторон, норма двумерного вектора или величина из комплексного числа z = a + bi с учетом действительной и мнимой части.
Алгоритм избегает выполнения операций извлечения квадратного корня и извлечения квадратного корня, вместо этого использует простые операции, такие как сравнение, умножение и сложение. Некоторые варианты выбора параметров α и β алгоритма позволяют свести операцию умножения к простому сдвигу двоичных цифр, что особенно хорошо подходит для реализации в высокоскоростных цифровых схемах.
Приближение выражается как
где - максимальное абсолютное значение a и b, а - минимальное абсолютное значение a и б.
Для наиболее близкого приближения оптимальные значения для и равны и , что дает максимальную ошибку 3,96%.
Наибольшая ошибка (%) | Средняя ошибка (%). | ||
---|---|---|---|
1/1 | 1/2 | 11,80 | 8,68 |
1/1 | 1/4 | 11,61 | 3.20 |
1/1 | 3/8 | 6.80 | 4,25 |
7/8 | 7/16 | 12,50 | 4,91 |
15/16 | 15/32 | 6,25 | 3,08 |
3.96 | 2.41 |
Когда , становится меньше, чем (что геометрически невозможно) рядом с осями, где около 0. Это можно исправить, заменив результат на всякий раз, когда то есть больше, по существу разделяя линию на два разных сегмента.
В зависимости от оборудования это улучшение может быть почти бесплатно.
Использование этого улучшения изменяет значения параметров, которые являются оптимальными, поскольку им больше не требуется точное соответствие для всего интервала. Таким образом, меньшее значение и более высокое значение может еще больше повысить точность.
Повышение точности: при разделении линии на две, как эта, можно было бы еще больше повысить точность, заменив первый сегмент на более точную оценку, чем и соответственно отрегулируйте и .
Наибольшая ошибка (%) | ||||
---|---|---|---|---|
1 | 0 | 7/8 | 17/32 | −2,65% |
1 | 0 | 29/32 | 61/128 | + 2,4% |
1 | 1/8 | 7/8 | 33/64 | -1,7% |
1 | 5/32 | 27/32 | 71/128 | 1,22% |
127/128 | 3/16 | 27/32 | 71/128 | −1.13% |
Однако помните, что для ненулевого потребуется как минимум один дополнительный сложение и некоторые битовые сдвиги (или умножение), что, вероятно, почти удвоит стоимость и, в зависимости от аппаратного обеспечения, возможно, в первую очередь лишит цели использования приближения.