Для возведения в степень в С нет специальной операции, как в других языках.
Вместо этого предлагается использовать функцию ``pow(x,y)`` возвращающую значение `x^y`.
Для использования этой функции необходимо подключить заголовочный файл ``<math.h>``:
Существуют несколько вариантов этой функции для каждого из 6 вещественных типов в языке С, названия вариантов отличаются суффиксом или префиксом: ``pow``, ``powl``, ``powf``, ``сpow``, ``сpowl``, ``сpowf``. Префикс ``c`` указывает на вариант функции для комплексных чисел, суффикс ``f`` на вариант функции для типа ``float``, суффикс ``l`` - для типа ``long double``, а если суффикс отсутствует, то это вариант для типа ``double``.
Чтобы уменьшить путаницу, в С99 был добавлен заголовочный файл ``<tgmath.h>``, в котором компилятор сам определяет, какой вариант функции нужно вызвать в зависимости от типа аргумента, и нужно писать только базовое имя математической функции без суффиксов и префиксов.
||.draw||Функция|Описание
--|--
fabs(x)| `\|x\|` модуль числа
ceil(x) | `\|~ x ~\|`
floor(x) | `\|__ x __\|`
round(x) | округление к ближайшему целому
trunc(x) | целая часть числа
fmod(x,y) | остаток от деления x на y для вещественных чисел
fmax(x,y) | `max(x,y)`
fmin(x,y) | `min(x,y)`
pow(x,y) | `x^y`
exp(x) | `e^x`
exp2(x) | `2^x`
log(x) | `ln x`
log10(x) | `"lg"\ x`
log2(x) | `log_2 x`
sqrt(x) | `sqrt x`
cbrt(x) | `root 3 x`
sin(x) | `sin x`, `x` в радианах
cos(x) | `cos x`
tan(x) | `"tg"\ x`
asin(x) | `arcsin x`
acos(x) | `arccos x`
atan(x) | `"arctg"\ x`, результат в `[ -pi/2; +pi/2 ]`
atan2(y,x) | `"arctg"\ y/x`, результат в `[ -pi; +pi ]`
hypot(x,y) | `sqrt{x^2+y^2}`
creal(z) | вещественная часть комплексного числа
cimag(z) | мнимая часть комплексного числа
Функции atan2 и hypot удобно использовать для перевода из декартовых в полярные координаты. Кроме указанных в таблице функций, есть функций для вычисления гиперболических функций и некоторых других редко используемых.
Для получения модуля целых чисел в заголовочном файле <stdlib.h> определены функции abs, labs и llabs. Использование для вещественных чисел abs вместо fabs может привести к ошибке.
```run-c
#include <tgmath.h>
#include <stdio.h>
int main()
{
double x=1,y=5;
double r,phi;
// перевод в полярные координаты
r=hypot(x,y);
phi=atan2(y,x);
printf("Радиус %.6lf Угол %.6lf\n",r,phi);
// перевод в декартовы координаты
x=r*cos(phi);
y=r*sin(phi);
printf("x=%.6lf y=%.6lf\n",x,y);
}
```