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) Экспоненциальная функция ex log(x) натуральный логарифм ln(x), x > 0 log10(x) десятичный логарифм lg(x), x > 0 pow(x,y) xy, ошибка области, если 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 * 2n 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.
unsigned long strtoul(const char *s, char **endp, int base)
strtoul работает так же, как и strtol, с той лишь разницей, что возвращает результат типа unsigned long, а в случае переполнения - ULONG_MAX.
int rand(void)
rand выдает псевдослучайное число в диапазоне от 0 до RAND_MAX; RAND_MAX не меньше 32767.
void srand(unsigned int seed)
srand использует seed в качестве семени для новой последовательности псевдослучайных чисел. Изначально параметр seed равен 1.
void *calloc(size_t nobj, size_t size)
calloc возвращает указатель на место в памяти, отведенное для массива nobj объектов, каждый из которых размера size, или, если памяти запрашиваемого объема нет, NULL. Выделенная область памяти обнуляется.
void *malloc(size_t size)
malloc возвращает указатель на место в памяти для объекта размера size или, если памяти запрашиваемого объема нет, NULL. Выделенная область памяти не инициализируется.
void *realloc(void *p, size_t size)
realloc заменяет на size размер объекта, на который указывает p. Для части, размер которой равен наименьшему из старого и нового размеров, содержимое не изменяется. Если новый размер больше старого, дополнительное пространство не инициализируется, realloc возвращает указатель на новое место памяти или, если требования не могут быть удовлетворены, NULL (*p при этом не изменяется).
void free(void *р)
free освобождает область памяти, на которую указывает p; эта функция ничего не делает, если p равно NULL. В p должен стоять указатель на область памяти, ранее выделенную одной из функций: calloc, malloc или realloc.
void abort(void *р)
abort вызывает аварийное завершение программы, ее действия эквивалентны вызову raise(SIGABRT).
void exit(int status)
exit вызывает нормальное завершение программы. Функции, зарегистрированные с помощью atexit, выполняются в порядке, обратном их регистрации. Производится опорожнение буферов открытых файлов, открытые потоки закрываются, и управление возвращается в среду, из которой был произведен запуск программы. Значение status, передаваемое в среду, зависит от реализации, однако при успешном завершении программы принято передавать нуль. Можно также использовать значения EXIT_SUCCESS (в случае успешного завершения) и EXIT_FAILURE (в случае ошибки).
int atexit(void (*fcn)(void))
atexit регистрирует fcn в качестве функции, которая будет вызываться при нормальном завершении программы; возвращает ненулевое значение, если регистрация не может быть выполнена.
int system(const char *s)
system пepeдaeт cтpoку s oпepaциoннoй cpeдe для выпoлнeния. Если s есть NULL и существует командный процессор, то system возвращает ненулевое значение. Если s не NULL, то возвращаемое значение зависит от реализации.
char *getenv(const char *name)
getenv возвращает строку среды, связанную с name, или, если никакой строки не существует, NULL. Детали зависят от реализации.
void *bsearch(const void *key, const void *base, size_t n, size_t size, int (*cmp)(const void *keyval, const void *datum))
bsearch ищет среди base[0]...base[n-1] элемент с подходящим ключом *key. Функция cmp должна сравнивать первый аргумент (ключ поиска) со своим вторым аргументом (значением ключа в таблице) и в зависимости от результата сравнения выдавать отрицательное число, нуль или положительное значение. Элементы массива base должны быть упорядочены в возрастающем порядке, bsearch возвращает указатель на элемент с подходящим ключом или, если такого не оказалось, NULL.
void qsort(void *base, size_t n, size_t size, int (*cmp)(const void *, const void *))
qsort сортирует массив base[0]...base[n-1] объектов размера size в возрастающем порядке. Функция сравнения cmp - такая же, как и в bsearch.
int abs(int n)
abs возвращает абсолютное значение аргумента типа int.
long labs(long n)
labs возвращает абсолютное значение аргумента типа long.
div_t div(int num, int denom)
div вычисляет частное и остаток от деления num на denom. Результаты типа int запоминаются в элементах quot и rem структуры div_t.
ldiv_t ldiv(long num, long denom)
ldiv вычисляет частное и остаток от деления num на denom. Результаты типа long запоминаются в элементах quot и rem структуры ldiv_t.
B6. Диагностика:
Макрос assert используется для включения в программу диагностических сообщений.
void assert (int выражение)
Если выражение имеет значение нуль, то
assert (выражение)
напечатает в stderr сообщение следующего вида:
Assertion failed: