Нахождение корня без циклов
От: ЫфВ Россия  
Дата: 17.06.06 14:55
Оценка:
Мне тут один товарищ сказал, что встречал функцию, которая считает целочисленный корень (т.е. результат без дробной части) от целого числа, причем не содержит циклов, состоит всего из нескольких строчек (что в его понимании "несколько", я не уточнял), и содержит операцию xor (т.e. ^).
Я знаю, что есть очень простые алгоритмы для сей задачи, но во всех них есть цикл.
Что вы можете сказать по этому поводу? (С кодом, пожалйста! С кодом! =) )
Re: Нахождение корня без циклов
От: Аноним  
Дата: 17.06.06 20:23
Оценка: 12 (2)
Здравствуйте, ЫфВ, Вы писали:

ЫфВ>Мне тут один товарищ сказал, что встречал функцию, которая считает целочисленный корень (т.е. результат без дробной части) от целого числа, причем не содержит циклов, состоит всего из нескольких строчек (что в его понимании "несколько", я не уточнял), и содержит операцию xor (т.e. ^).

ЫфВ>Я знаю, что есть очень простые алгоритмы для сей задачи, но во всех них есть цикл.
ЫфВ>Что вы можете сказать по этому поводу? (С кодом, пожалйста! С кодом! =) )

Наверное имелось ввиду вот это: http://www.math.purdue.edu/~clomont/Math/Papers/2003/InvSqrt.pdf Без ксора, но и без циклов.
Re: Нахождение корня без циклов
От: McSeem2 США http://www.antigrain.com
Дата: 18.06.06 23:16
Оценка:
Здравствуйте, ЫфВ, Вы писали:

ЫфВ>Мне тут один товарищ сказал, что встречал функцию, которая считает целочисленный корень (т.е. результат без дробной части) от целого числа, причем не содержит циклов, состоит всего из нескольких строчек (что в его понимании "несколько", я не уточнял), и содержит операцию xor (т.e. ^).


Xor не содержит, но содержит BSR (определение номера старшего бита)
http://antigrain.com/__code/include/agg_math.h.html#fast_sqrt
Таблицы:
http://antigrain.com/__code/src/agg_sqrt_tables.cpp.html
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[2]: Нахождение корня без циклов
От: Аноним  
Дата: 19.06.06 00:46
Оценка:
Забавные решения. Спасибо. А может быть, еще оптимальнее есть? (А то, один метод использует "много" =) памяти под таблицы, а второй содержит четыре умножения с числом с плавающей точкой (хоть это и не деление =) ) )
Re[3]: Нахождение корня без циклов
От: McSeem2 США http://www.antigrain.com
Дата: 19.06.06 02:32
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Забавные решения. Спасибо. А может быть, еще оптимальнее есть? (А то, один метод использует "много" =) памяти под таблицы, а второй содержит четыре умножения с числом с плавающей точкой (хоть это и не деление =) ) )


Не знаю, автор данного решения теряется в глубинах FIDO Net. Я то же был бы не против поискать что-то более оптимальное. А особенно был бы не против найти решение для int64. Так что если что-то попадется, сообщи.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[3]: Нахождение корня без циклов
От: McSeem2 США http://www.antigrain.com
Дата: 19.06.06 06:08
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Забавные решения. Спасибо.


Забыл добавить, что этот метод дает некоторую погрешность. Она, например, проявляется как легкий муар в некоторых частях радиального градиента:
http://antigrain.com/stuff/radial_gradient_moire.png
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.