Как в С любое число возвести в дробную степень?

AndrewAAndrew

Может какая библиотечная функция есть?

peter1dav

в math.h разве ничего такого нет?

Elina74

А exp(a*ln(x не пойдет?

AndrewAAndrew

Интересная идея. Так и сделаем

freezer

pow

AndrewAAndrew

А где прочесть полную спецификацию этой функции, я что-то никак не найду math.h

AndrewAAndrew

Нашел, спасибо.

freezer


double __cdecl pow(double a, double b); // a^b

rosali

Во:

double pow(
double x,
double y
);
double pow(
double x,
int y
); // C++ only
double pow(
int x,
int y
); // C++ only
float pow(
float x,
float y
); // C++ only
float pow(
float x,
int y
); // C++ only
long double pow(
long double x,
long double y
); // C++ only
long double pow(
long double x,
int y
); // C++ only
float powf(
float x,
float y
);
Вобщем, обобщенно так - В С++ pow перегружен, принимает что попало double, float, int. В Си есть pow(double,double) и powf(float,float). Есть, кстати, powl. И еще вот
pow does not recognize integral floating-point values greater than 264, such as 1.0E100.
Офигеть

freezer

pow does not recognize integral floating-point values greater than 264, such as 1.0E100.
--------------------------------------------------------------------------------
Офигеть
надо же... ну это МС намудрили: в стандарте ничего такого нет. Тогда exp(log(x)*y) - вроде у exp и log таких ограничений нет

rosali

ой, это copy/paste сглючил "264" это на самом деле 2^64
Оставить комментарий
Имя или ник:
Комментарий: