В заголовочном файле описываются математические функции и определяются макросы.
Макросы EDOMи ERANGE(находящиеся в ) задают отличные от нуля целочисленные константы, используемые для фиксации ошибки области и ошибки диапазона; HUGE_VALопределена как положительное значение типа double. Ошибка области возникает, если аргумент выходит за область значений, для которой определена функция. Фиксация ошибки области осуществляется присвоением errno значения EDOM ; возвращаемое значение зависит от реализации. Ошибка диапазона возникает тогда, когда результат функции не может быть представлен в виде double . В случае переполнения функция возвращает HUGE_VAL с правильным знаком и в errno устанавливается значение ERANGE . Если результат оказывается меньше, чем возможно представить данным типом, функция возвращает нуль, а устанавливается ли в этом случае errno в ERANGE , зависит от реализации. Далее x и y имеют тип double , n - тип int , и все функции возвращают значения типа double . Углы в тригонометрических функциях задаются в радианах .
sin(x) |
синус x |
cos(x) |
косинус x |
tan(x) |
тангенс x |
asin(x) |
арксинус x в диапазоне [-pi/2,pi/2] , x в диапазоне [-1,1] |
acos(x) |
арккосинус x в диапазоне [0, pi] , x в диапазоне [-1,1] |
atan(x) |
арктангенс x в диапазоне [-pi/2, pi/2] |
atan2(y,x) |
арктангенс y/x в диапазоне [-pi, pi] |
sinh(x) |
гиперболический синус x |
cosh(x) |
гиперболический косинус x |
tanh(x) |
гиперболический тангенс x |
exp(x) |
Экспоненциальная функция e x |
log(x) |
натуральный логарифм ln(x) , x > 0 |
log10(x) |
десятичный логарифм lg(x) , x > 0 |
pow(x,y) |
x y , ошибка области, если x = 0 или y<=0 или x<0 и y – не целое |
sqrt(x) |
квадратный корень x , x >= 0 |
ceil(x) |
наименьшее целое в виде double , которое не меньше x |
floor(x) |
наибольшее целое в виде double , которое не больше x |
fabs(x) |
абсолютное значение |x| |
ldexp(x, n) |
x * 2 n |
frexp(x, int *еxр) |
разбивает x на два сомножителя, первый из которых - нормализованная дробь в интервале [1/2, 1), которая возвращается, а второй - степень двойки, эта степень запоминается в *exp . Если x - нуль, то обе части результата равны нулю |
modf(x,double *ip) |
разбивается на целую и дробную части, обе имеют тот же знак, что и x . Целая часть запоминается в *ip , дробная часть выдается как результат |
fmod(x, y) |
остаток от деления x на y в виде числа с плавающей точкой. Знак результата совпадает со знаком x . Если y равен нулю, результат зависит от реализации |
B5. Функции общего назначения:
Заголовочный файл объявляет функции, предназначенные для преобразования чисел, запроса памяти и других задач.
double atof(const char *s)
atofпереводит s в double ; эквивалентна strtod(s, (char**) NULL).
int atoi(const char *s)
atoiпереводит s в int ; эквивалентна (int)strtol(s, (char**)NULL, 10).
int atol(const char *s)
atolпереводит s в long ; эквивалентна strtol(s, (char**) NULL, 10).
double strtod(const char *s, char **endp)
strtodпреобразует первые символы строки s в double , игнорируя начальные символы-разделители; запоминает указатель на непреобразованный конец в *endp (если endp не NULL), при переполнении она выдает HUGE_VAL с соответствующим знаком, в случае, если результат оказывается меньше, чем возможно представить данным типом, возвращается 0; в обоих случаях в errno устанавливается ERANGE .
long strtol(const char *s, char **endp, int base)
strtolпреобразует первые символы строки s в long , игнорируя начальные символы-разделители; запоминает указатель на непреобразованный конец в *endp (если endp не NULL). Если base находится в диапазоне от 2 до 36, то преобразование делается в предположении, что на входе - запись числа по основанию base . Если base равно нулю, то основанием числа считается 8, 10 или 16; число, начинающееся с цифры 0, считается восьмеричным, а с 0x или 0X - шестнадцатеричным. Цифры от 10 до base-1 записываются начальными буквами латинского алфавита в любом регистре. При основании, равном 16, в начале числа разрешается помещать 0x или 0X. В случае переполнения функция возвращает LONG_MAX или LONG_MIN (в зависимости от знака), a в errno устанавливается ERANGE.
Читать дальше