Самый быстрый способ получить силу на 2 - PullRequest
1 голос
/ 24 мая 2011

Вопрос прост;Мне нужен самый быстрый способ для расчета мощности 2. Мне нужен этот для этой формулы, которая рассчитывает расстояние между 2 точками.

Ответы [ 2 ]

6 голосов
/ 24 мая 2011

Способ fast часто является справочной таблицей, при условии, что вы можете ограничить свои входные значения достаточно маленьким диапазоном, например, с помощью (псевдокода):

int sqr_arr[] = {0, 1, 4, 9, 16, 25, 36, ...}
def sqr(n):
    if n < 0:
        return sqr(-n)
    if n >= len(sqr_arr):
        return n * n
    return sqr_arr[n]

Thisразрешает высокоскоростной поиск в таблице для более низких значений, но возвращается к (возможно) более медленному методу, если вы пытаетесь использовать аргумент, отсутствующий в вашей таблице.

Но, как сказал Митч Уит в комментарии, ускорение умноженияне будет иметь большого эффекта, когда реальным узким местом является квадратный корень.

И помните: мера, не угадайте! Я считаю себя достаточно опытным в стратегиях оптимизации, но вы должны рассмотретьвсе советы (в том числе и мои) с такой же осмотрительностью, как у алкоголика в канаве, рассказывающие, как прожить долгую и успешную жизнь.

0 голосов
/ 24 мая 2011

Если вы хотите вычислить sqrt для положительного числа a, возьмите рекурсивную последовательность

x_0 = a
x_n+1 = 1/2 * (x_n + a / x_n)

x_n переходит к sqrt(a) с n -> infinity.Первые несколько итераций должны быть достаточно быстрыми.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...