В Википедии есть небольшая статья о поиске n -го корня вещественных чисел и другой статьи о более эффективной реализации , обе из которых, очевидно, могут быть адаптированы к плавающим значениям.И, конечно же, существуют эффективные алгоритмы целочисленного квадратного корня - на этом сайте есть несколько вопросов только об эффективных реализациях для этого.
Но все, что касается реалов, и все, что меня беспокоит, это целые числа. Я нашел существующий вопрос по теме , где это может показаться почти дубликатом, но где спрашивается о , если существует эффективный алгоритм, я ищу что наиболее эффективным является алгоритм.
Для контекста это будет использоваться только с 32-разрядными целыми числами дополнения до двух (в частности, с целыми числами со знаком JS), и это будет как часть общего алгоритма возведения в степень целочисленного со знаком.int iexp(int base, int exp)
, обработка случая отрицательных показателей.Бит-хаки и другие два дополнения являются честной игрой здесь - мне все равно, и я понимаю их в некоторой степени.(Это для реализации стандартной библиотеки для языка, над которым я работаю, поэтому я бы предпочел, чтобы это не было медленным.)
И язык не имеет значения - я могу переводить все, что угодно, будь то C, JS, Python или даже OCaml.