Математические функции языка С
В языках С и C++ определено множество разнообразных математических функций. Сначала оба языка поддерживали один и тот же набор, состоящий из 22 математических функций. Однако по мере развития языка C++ расширялся и арсенал определенных в нем функций. Затем в версии С99 размер математической библиотеки значительно увеличился. В результате этих изменений библиотеки математических функций языков С и C++ стали существенно отличаться одна от другой. Поэтому в данной главе описываются математические функции языка С(включая те, которые добавлены в версии С99), а в главе 9 уделено внимание исключительно функциям языка C++. При этом имейте в виду, что исходный набор математических функций по-прежнему поддерживается всеми версиями языков С и C++. Для использования всех математических функций в программу необходимо включить заголовок <math.h>. Помимо объявления математических функций, этот заголовок определяет один или несколько макросов. В версии С89 заголовком <math.h> определяется только макрос HUGE_VAL, который представляет собой значение типа double, сигнализирующее о возникшем переполнении. В версии С99 определены следующие макросы.
В версии С99 определены следующие макросы(подобные функциям), которые классифицируют значение.
В версии С99 определены следующие макросы сравнения, аргументами которых(a и b) должны быть значения с плавающей точкой.
Эти макросы прекрасно обрабатывают значения, которые не являются числами, не вызывая при этом исключений вещественного типа. Макросы EDOM и ERANGE также используются математическими функциями. Эти макросы определены в заголовке <errno.h>. Ошибки в версиях С89 и С99 обрабатываются по-разному. Так, в версии С89, если аргумент математической функции не попадает в домен, для которого он определен, возвращается некоторое значение, зависящее от конкретной реализации, а встроенная глобальная целая переменная errno устанавливается равной значению EDOM. В версии С99 ошибка нарушения границ домена также приводит к возврату значения, зависящего от конкретной реализации. Однако по значению math_errhandling можно судить о выполнении других действий. Если math_errhandling содержит значение MATH_ERRNO, встроенная глобальная целая переменная errno устанавливается равной значению EDOM. Если же math_errhandling содержит значение MATH_ERREXCEPT, возбуждается исключение вещественного типа. В версии С89, если функция генерирует результат, который слишком велик для возможностей представления, происходит переполнение. В этом случае функция возвращает значение HUGE_VAL, а переменная errno устанавливается равной значению ERANGE, сигнализирующему об ошибке диапазона. При обнаружении потери значимости функция возвращает нуль и устанавливает переменную errno равной значению ERANGE. В версии С99 ошибка переполнения также приводит к тому, что функция возвращает значение. HUGE_VAL, а при потере значимости - нуль. Если math_errhandling содержит значение MATH_ERRNO, глобальная переменная errno устанавливается равной значению ERANGE, свидетельствующему об ошибке диапазона. Если же math_errhandling содержит значение MATH_ERREXCEPT, возбуждается исключение вещественного типа. В версии С89 аргументами математических функций должны быть значения типа double и значения, возвращаемые функциями, имеют тип double. В версии С99 добавлены float- и long double-варианты этих функций, которые используют суффиксы f и l соответственно. Например, в версии С89 функция sin() определена следующим образом. double sin(double arg); В версии С99 поддерживается приведенное выше определение функции sin() и добавляются еще две ее модификации - sinf() и sinl(). float sinf(float arg); long double sinl(long double arg); Операции, выполняемые всеми тремя функциями, одинаковы; различаются лишь данные, подвергаемые этим операциям. Добавление f- и 1-модификаций математических функций позволяет использовать версию, которая наиболее точно соответствует вашим данным. Поскольку в версии С99 добавлено так много новых функций, стоит отдельно перечислить функции, поддерживаемые версией С89(они также используются в языке C++).
И еще одно: все углы задаются в радианах.
Смотрите также
acos - Возвращает значение арккосинуса
acosh - Возвращает значение гиперболического арккосинуса asin - Возвращает значение арксинуса asinh - Возвращает значение гиперболического арксинуса atan - Возвращает значение арктангенса atan2 - Возвращает значение арктангенса от а/Ь atanh - Возвращает значение гиперболического арктангенса cbrt - Возвращает значение кубического корня ceil - Возвращает наименьшее целое, которое больше значения заданого аргумента copysign - Наделяет заданный аргумент знаком, который имеет указаный аргумент cos - Возвращает значение косинуса cosh - Возвращает значение гиперболического косинуса erf - Возвращает значение функции ошибок erfc - Возвращает дополнительное значение функции ошибок exp - Возвращает значение экспоненты exp2 - Возвращает число 2, возведенное в заданную степень expm1 - Возвращает уменьшенное на единицу значение натурального логарифма е fabs - Возвращает абсолютное значение fdim - Возвращает нуль или разность в двух заданных аргументов floor - Возвращает наибольшее целое которое меньше или равно значению заданного аргумента fma - Возвращает значение а*Ь+с заданных аргументов fmax - Возвращает большее из двух значений fmin - Возвращает меньшее из двух значений fmod - Возвращает остаток от деления frexp - Разбивает заданное число на мантиссу и экспоненту hypot - Возвращает длину гипотенузы при заданных длинах двух катетов ilogb - Выделяет экспоненциальное значение ldexp - Возвращает значение выражения num*2^ехр. lgamma - Вычисляет абсолютное значение гамма-функции и возвращает ее натуральный логарифм llrint - Возвращает значение округленного до ближайшего целого llround - Возвращает значение округленное до ближайшего целого log - Возвращает значение натурального логарифма log10 - Возвращает значение логарифма по основанию 10 log1p - Возвращает значение натурального логарифма для аргумента num+1 log2 - Возвращает логарифм по основанию 2 logb - Выделяет экспоненциальное значение lrint - Возвращает значение округленное до ближайшего целого lround - Возвращает значение округленное до ближайшего целого modf - Разбивает аргумент num на целую и дробную части nan - Возвращает значение, которое не является числом и которое содержит строку nearbyint - Возвращает значение аргумента округленное до ближайшего целого nextafter - Функция возвращает следующее после заданного аргумента значение, ближайшее к значению указанного аргумента nexttoward - Функция возвращает следующее после заданного аргумента значение, ближайшее к значению указанного аргумента pow - Возвращает число возведённое в степень remainder - Возвращает остаток от деления значений двух аргументов remquo - Возвращает остаток от деления значений двух аргументов rint - Возвращает значение округленное до ближайшего целого round - Возвращает значение аргумента arg, округленное до ближайшего целого scalbln - Возвращает произведение параметра val и значения FLT_RADIX, возведенного в степень, которая равна значению параметра ехр scalbn - Возвращает произведение заданного параметра и значения FLT_RADIX, возведенного в степень, которая равна значению параметра ехр sin - Возвращает значение синуса sinh - Возвращает значение гиперболического синуса sqrt - Возвращает значение квадратного корня tan - Возвращает значение тангенса tanh - Возвращает значение гиперболического тангенса tgamma - Возвращает значение гамма-функции trunc - Возвращает усеченное значение аргумента |
Нет комментариев. Оставить комментарий: |