pow() и bcpow() не подходят

orme

Новичок
pow() и bcpow() не подходят

Нужна функция или алгоритм, возводящие число в степень.

Возвращаемое значение и передаваемые аргументы могут быть очень большими,
поэтому pow() не подходит.
bcpow() тоже не подходит, потому что в качестве аргументов принимает
только натуральные числа, а нужно, чтобы принимала любые положительные,
в том числе и дробные, и меньше 1.
//
строка большое_число mypow ( строка большое_число, строка степень_любое_полож_число )

Может, кто-нибудь сталкивался с аналогичной проблемой, и может помочь?

-----
Да, gmp_pow() воспользоваться не могу, потому что работаю под win32.
И может с ней аналогичная ситуация.
 

Skubent

Новичок
gmp_pow() под виндой тоже есть. Но с ней та же проблема.
А точность какя требуется ? Для дробных степеней ?
 

orme

Новичок
А точность какя требуется ? Для дробных степеней ?
Да какая-нибудь, напр. цифр 16 после точки.
Главное понять какой должен быть алгоритм, а scale можно уточнять.

-~{}~ 25.01.07 19:26:

А точность какя требуется ? Для дробных степеней ?
Или это важно?
 

Skubent

Новичок
Значит делаем что ?
Функцию вида a^X+x (здесь a - произвольное число, X - целая часть степени, x - дробная часть степени) приводим к виду
(ln(a) * a^X)*x + a^X, сие есть дифференциал с пренебрежением бесконечно малыми второго и более высших порядков. Плюс собственно аргумент.
Ну а дальше, если хотим устойчивый алгоритм, то увеличиваем порядок дифференциала до тех пор, пока разница между вычислениями значения в двух последовательных итерациях не станет по модулю меньше, чем заданная погрешность.

За подробностями и разъяснениями следует обратиться к учебнику высшей математики, часть про производные и их применение. И к учебнику по численным методам вычислений, в ту часть, где рассказывают как работает и почему сходится к правильному ответу ряд последовательных приближений.
 
Сверху