math.h

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

math.h — заголовний файл стандартної бібліотеки мови програмування С, який надає прототипи функцій, розроблених для виконання простих математичних операцій. Більшість функцій використовує числа з рухомою комою. C++ також реалізовує дані функції для забезпечення сумісності, усі вони містяться у заголовному файлі cmath.

Усі функції, котрі приймають або повертають значення кута, працюють з радіанами.

В C99 більшість функцій має кілька варіантів залежно від типу, наприклад:

float cosf(float x);
double cos(double x);
long double cosl(long double x);

Всі ці функції обчислюють косинус, але з різними типами чисел з рухомою комою. Функції, що закінчуються на f, працюють з float, на l — з long double.

Також у C99 додана стандартна бібліотека tgmath.h, що містить узагальнені макроси, що мають такі самі назви, що й функція для double, і підставляють потрібну функцію залежно від типу.

В C++ ці функції перевантажені для різних типів. Також існують перевантаження цих функцій в бібліотеках complex.h та valarray для відповідних типів.[1]

Функції[ред. | ред. код]

Тригонометричні функції[ред. | ред. код]

Ім'я Опис
double acos(double x) арккосинус. Якщо параметр не в інтервалі [-1..+1], виникає помилка
double asin(double x) арксинус. Якщо параметр не в інтервалі [-1..+1], виникає помилка
double atan(double x) арктангенс
double atan2(double y, double x) арктангенс частки від ділення двох аргументів y та x. Якщо обидва параметри дорівнюють 0, виникає помилка. На відміну від atan, може обчислити значення кута (для якого значення тангенса буде нескінченим). Зручна для обчислення кута за координатами.
double cos(double x) косинус
double sin(double x) синус
double tan(double x) тангенс

Гіперболічні тригонометричні функції[ред. | ред. код]

Ім'я Стандарт Опис
double cosh(double x) C89, C++98 гіперболічний косинус
double sinh(double x) C89, C++98 гіперболічний синус
double tanh(double x) C89, C++98 гіперболічний тангенс
double acosh(double x) C99, C++11 гіперболічний арккосинус
double asinh(double x) C99, C++11 гіперболічний арксинус
double atanh(double x) C99, C++11 гіперболічний арктангенс

Показникові функції[ред. | ред. код]

Ім'я Стандарт Опис
double exp(double x) C89, C++98 Показникова функція з основою ()
double ldexp(double x, int exp) C89, C++98 Обчислення числа з рухомою комою з мантиси та порядку, повертає
double exp2(double x) C99, C++11 Показникова функція з основою ()
double expm1(double x) C99, C++11 Показникова функція з основою мінус 1 ()
double scalbn(double x, int exp) C99, C++11 Обчислення числа з рухомою комою з мантиси та порядку для основи FLT_RADIX (float.h), повертає FLT_RADIX; зазвичай еквівалент ldexp.
double scalbln(double x, long int exp) C99, C++11 Те саме, що й scalbn, з порядком типу long int.

Логарифмічні функції[ред. | ред. код]

Ім'я Стандарт Опис
double log(double x) C89, C++98 Натуральний логарифм x
double log10(double x) C89, C++98 Логарифм за основою 10 від x
double frexp(double x, int* exp) C89, C++98 Розкладає число x на мантису з проміжку [0.5,1) та двійковий порядок, який записує за адресою exp.
double log2(double x) C99, C++11 Логарифм за основою 2 від x
double logb(double x) C99, C++11 Логарифм за основою FLT_RADIX (зазвичай 2) від x
double log1p(double x) C99, C++11 Натуральний логарифм від x+1
int ilogb(double x) C99, C++11 Ціла частина логарифму за основою FLT_RADIX

Інші функції[ред. | ред. код]

Ім'я Опис
ceil округлення до найближчого більшого цілого числа
fabs абсолютне значення
floor округлення до найближчого меншого цілого числа
fmod повертає залишок від ділення двох чисел
modf(x, p) повертає цілу та дробову частину аргументу х зі знаком
pow(x,y) вираховує значення xy
sqrt квадратний корінь

Константи[ред. | ред. код]

Ім'я Опис
NAN Не-число (not-a-number), особливе значення, що позначає результат помилкової операції
HUGE_VAL Особливе значення, що позначає, що результат надто великий для представлення обраним типом числа з рухомою комою
INFINITY(С++11) Нескінченість, особливе значення, що позначає нескінчений результат
HUGE_VALF(С++11) Аналог HUGE_VAL типу float
HUGE_VALL(С++11) Аналог HUGE_VAL типу long double

Стандарт POSIX вимагає визначення деяких додаткових констант[2], що починаються з M_. В gcc ці константи можна увімкнути ключем компіляції -std=gnu11 (gnu14, gnu17 і т.д.), у Visual Studio - визначенням макросу _USE_MATH_DEFINES перед включенням бібліотеки:

#define _USE_MATH_DEFINES
#include <cmath>
Ім'я Опис
M_E Основа натуральних логарифмів
M_LOG2E Логарифм за основою 2 ()
M_LOG10E Логарифм за основою 10 ()
M_LN2 Натуральний логарифм
M_LN10 Натуральний логарифм
M_PI Число
M_PI_2
M_PI_4
M_1_PI
M_2_PI
M_SQRTPI Квадратний корінь з
M_SQRT2 Квадратний корінь з
M_SQRT1_2 Квадратний корінь з

Посилання[ред. | ред. код]

  • math(3): Mathematical Functions – сторінка довідки man про бібліотечні функції GNU/Linux (англ.)


  1. | Опис функції cos(англ.)
  2. | math.h у стандарті POSIXангл. (англ.)