Как подключить математические функции в c
Стандартная библиотека языка Си предоставляет ряд математических функций, которые определены в разных заголовочных файлах, но в основном определены в файле math.h .
Степерь числа. pow
Функция pow() , определенная в заголовочном файле math.h , возвращает степень числа:
#include #include int main(void) < printf("pow(2, 3) = %.f\n", pow(2, 3)); // 2 в степени 3 printf("pow(5, 2) = %.f\n", pow(5, 2)); // 5 в степени 2 return 0; >
Стоит отметить, что эта функция возвращает число типа double .
Для возведения в степень чисел типа float и long double также определены функции powf() и powl() соответственно.
Округление числа. round
Функция round() округляет число до ближайшего целого. В качестве параметра она принимает число типа double :
#include #include int main(void) < double n1 = 3.14; printf("round(%.2f) = %.2f\n", n1, round(n1)); // round(3.14) = 3.00 double n2 = 3.49; printf("round(%.2f) = %.2f\n", n2, round(n2)); // round(3.49) = 3.00 double n3 = 3.5; printf("round(%.2f) = %.2f\n", n3, round(n3)); // round(3.50) = 4.00 return 0; >
Квадратный корень. sqrt
Функция sqrt() возвращает квадратный корень числа типа double :
#include #include int main(void) < double n1 = 224; printf("sqrt(%.f) = %.f\n", n1, sqrt(n1)); // sqrt(224) = 15 double n2 = 36; printf("sqrt(%.f) = %.f\n", n2, sqrt(n2)); // sqrt(36) = 6 return 0; >
Для получения квадратного корня числа float также есть функция sqrtf() , а для числа типа long double — функция sqrtl()
abs
Функция abs , определенная в файле «stdlib.h», возвращает абсолютное значение числа
#include #include int main(void) < int m = -15; int n = 24; printf("abs(m) = %d \n", abs(m)); // abs(m) = 15 printf("abs(n) = %d \n", abs(n)); // abs(n) = 24 return 0; >
Для возвращения абсолютного значения чисел типов long и long long определены в «stdlib.h» функции labs и llabs соответственно. Для получения абсолютного значения для числа типа float в файле math.h определена функция fasbs . Все эти функцию работают аналогично abs()
Математическая библиотека языков C и C++
В стандартную математическую библиотеку языка Си (а, значит, и C++) входит множество специальных математических функций, которые нужно знать и уметь использовать. Для того, чтобы использовать эти функции в своей программе, необходимо подключить заголовочный файл, содержащий описания этих функций, что делается строчкой в начале программы:
#include
В языке C++ нужно указывать название заголовочного файла так:
#include
Функция от одного аргумента вызывается, например, так: sin(x) . Вместо числа x может быть любое число, переменная или выражение. Функция возвращает значение, которое можно вывести на экран, присвоить другой переменной или использовать в выражении:
y = sin(x);
printf("%lf", sqrt(2));
| Функция | Описание |
|---|---|
| Округление | |
| round | Округляет число по правилам арифметики, то есть round(1.5) == 2 , round(-1.5) == -2 |
| floor | Округляет число вниз (“пол”), при этом floor(1.5) == 1 , floor(-1.5) == -2 |
| ceil | Округляет число вверх (“потолок”), при этом ceil(1.5) == 2 , ceil(-1.5) == -1 |
| trunc | Округление в сторону нуля (отбрасывание дробной части), при этом trunc(1.5) == 1 , trunc(-1.5) == -1 |
| fabs | Модуль (абсолютная величина) |
| Корни, степени, логарифмы | |
| sqrt | Квадратный корень. Использование: sqrt(x) |
| cbrt | Кубический корень. Использование: cbrt(x) |
| pow | Возведение в степень, возвращает a b . Использование: pow(a,b) |
| exp | Экспонента, возвращает e x . Использование: exp(x) |
| log | Натуральный логарифм |
| log10 | Десятичный логарифм |
| Тригонометрия | |
| sin | Синус угла, задаваемого в радианах |
| cos | Косинус угла, задаваемого в радианах |
| tan | Тангенс угла, задаваемого в радианах |
| asin | Арксинус, возвращает значение в радианах |
| acos | Арккосинус, возвращает значение в радианах |
| atan | Арктангенс, возвращает значение в радианах |
Также в файле cmath есть набор полезных числовых констант, например, константа M_PI хранит значение числа \(\pi\).
В компиляторе Visual C++ для использования этих констант необходимо объявить директиву препроцессора _USE_MATH_DEFINES перед подключения заголовочного файла cmath .
#define _USE_MATH_DEFINES #include
Деление действительных чисел
Для действительных чисел определены операции сложения, вычитания, умножения и деления.
При этом операция деления выполняется по-разному для переменных и констант целочисленного типа и для переменных и констант действительных типов. В первом случае деление производится нацело с отбрасыванием дробной части, во втором случае — деление производится точно и результатом является действительное число. Более точно, если делимое и делитель одновременно являются целочисленными константами или переменными целочисленных типов, то деление будет целочисленным, а если хотя бы одно из них действительное, то деление будет действительным. Например:
printf(«%lf\n», 10 / 3);
printf(«%lf\n», 10. / 3);
printf(«%lf\n», 10 / 3.);
printf(«%lf\n», 10. / 3.);
выведет 3 в первой строке и 3.33333 в остальных строках.
Результат выполнения деления не зависит от того, какой переменной будет присвоен результат. Если написать double a = 10 / 3; , то переменная a будет равна 3, так как деление 10/3 будет целочисленным, независимо от того, чему будет присвоен результат.
Как подключить математические функции в c
В языке С++ имеется большое количество математических функций. Для их использования в тексте программы необходимо подключить заголовочный файл cmath (ранее использовался math.h).
Прототип и краткое описание
int abs(int i);
Возвращает абсолютное значение целого аргумента i .
double acos(double x);
Функция арккосинуса. Значение аргумента должно находиться в диапазоне от -1 до +1 .
double asin(double x) ;
Функция арксинуса. Значение аргумента должно находиться в диапазоне от -1 до +1 .
double atan(double x) ;
double atan2(double y, double x) ;
Функция арктангенса от значения y / x .
double ceil(double x);
Вычисляет ближайшее целое, не меньшее, чем аргумент x .
double cos(double x);
Функция косинуса. Аргумент задается в радианах.
double exp(double x);
Вычисляет значение (экспоненциальная функция).
double fabs(double x);
Возвращает абсолютное значение вещественного аргумента x двойной точности.
double floor(double x);
Находит наибольшее целое, не превышающее значение x. Возвращает его в форме double.
double fmod(double x, double y);
Возвращает остаток от деления нацело x на y .
double frexp(double value, int *exp);
Разбивает число с плавающей точкой value на нормализованную мантиссу и целую часть как степень числа 2 . Целочисленная степень записывается в область памяти, на которую указывает exp , а мантисса используется как значение, которое возвращает функция.
double hypot(double x, double y);
Вычисляет гипотенузу z прямоугольного треугольника по значениям катетов x , y : .
long labs(long x);
Возвращает абсолютное значение целого (длинного(!) целого) аргумента x .
double ldexp(double v, int e);
Возвращает значение выражения .
double log(double x);
Возвращает значение натурального логарифма ( ln x).
double log10(double x);
Возвращает значение десятичного логарифма ().
double modf(double value, double *iptr);
Разделяет число с плавающей точкой value на целую и дробную части. Целая часть записывается в области памяти, на которую указывает iptr , дробная часть является значением, возвращаемым функцией.
double poly(double x, int n, double c[ ]);
Вычисляет значение полинома: c[n]x n + c[n 1]x n -1 +…+ c[1]x +c[0].
double pow(double x, double y);
Возвращает значение , т.е. x в степени y .
double pow10(int p);
Возвращает значение 10 p .
double sin(double x);
Функция синуса. Угол задается в радианах.
double sinh(double x);
Возвращает значение гиперболического синуса для x .
double sqrt(double x);
Возвращает положительное значение квадратного корня .
double tan(double x);
Функция тангенса. Угол задается в радианах.
double tanh(double x);
Возвращает значение гиперболического тангенса для x .
Как пользоваться этой таблицей? Рассмотрим на примере sin X . Во второй колонке (прототип) написано:
double sin(double x);
Что это означает? Функция sin() возвращает результат типа double (тип результата указан перед именем функции); в качестве входного параметра этой функции также выступает значение типа double (текст в скобках — double x ).
Примеры использования этой функции:
Математические функции
![]()
Стандарт ANSI С определяет 22 математические функции, которые подразделяются на следующие категории:
- Тригонометрические функции
- Гиперболические функции
- Экспоненциальные и логарифмические функции
- Разные функции
Borland реализует все эти функции, а также добавляет несколько собственных. Многие функции, добавленные корпорацией Borland, являются версиями стандартных функций для данных типа long double. Эти функции также обсуждаются ниже.
Для использования математических функций необходимо включить заголовочный файл math.h. В дополнение к объявлению математических функций этот заголовочный файл определяет также три макроса EDOM, ERANGE, HUGE_VAL. Если аргумент математической функции выходит за пределы значений, для которых она определена, то глобальная переменная errno устанавливается равной EDOM, а функция возвращает величину, зависящую от реализации. Если в результате выполнения процедуры результат оказывается слишком большим для представления, то возникает переполнение. В результате функция возвращает HUGE_VAL, а переменная errno устанавливается равной ERANGE, указывая тем самым на ошибку, связанную с выходом за допустимую область значений. (Если функция возвращает long double, то при переполнении возвращается _LHUGE_VAL.) Если же возникает потеря значимости, то есть получается результат, который меньше минимально представимого числа, то функция возвращает ноль, а переменная errno устанавливается равной ERANGE