Введение

Файл заголовка стандартной библиотеки C, предоставляющий математические функции. Математические операции в C — это набор функций в стандартной библиотеке языка программирования C, реализующих базовые математические функции. Все функции так или иначе используют числа с плавающей точкой. Различные стандарты C предоставляют различные, но обратно совместимые наборы функций. Большинство этих функций также доступны в стандартной библиотеке C++, хотя и в других заголовочных файлах (заголовочные файлы C также включены, но только как устаревшая функция обеспечения совместимости).

Типовые функции

Заголовок <tgmath.h> определяет типонезависимый макрос для каждой математической функции, определённой в <math.h> и <complex.h>. Это обеспечивает ограниченную поддержку перегрузки математических функций: одно и то же имя функции может использоваться с параметрами разных типов, а конкретная функция будет выбрана во время компиляции в зависимости от типов этих параметров. Каждый типонезависимый макрос, соответствующий функции, определённой как для вещественных, так и для комплексных чисел, включает в себя в общей сложности 6 различных функций: float, double и long double, а также их комплексные варианты. Типонезависимый макрос, соответствующий функции, определённой только для вещественных чисел, включает в себя в общей сложности 3 различные функции: float, double и long double варианты этой функции. Язык C++ имеет встроенную поддержку перегрузки функций и поэтому не предоставляет заголовок <tgmath.h>, даже в целях совместимости.

Генерация случайных чисел

Заголовок <stdlib.h> (<cstdlib> в C++) определяет несколько функций, которые можно использовать для генерации статистически случайных чисел. Описание функций: rand генерирует псевдослучайное число в диапазоне от 0 до RAND_MAX включительно. srand инициализирует генератор псевдослучайных чисел. arc4random генерирует псевдослучайное число между 0 и UINT32_MAX, как правило, используя алгоритм лучше, чем у rand. arc4random_uniform генерирует псевдослучайное число между 0 и заданным максимальным значением. arc4random_buf заполняет буфер псевдослучайным потоком бит. arc4random_stir инициализирует генератор псевдослучайных чисел. Семейство функций arc4random для генерации случайных чисел не определено в стандарте POSIX, но встречается в некоторых распространенных реализациях libc. Изначально оно относилось к генератору ключевого потока утечки версии шифра RC4 (отсюда и название "предполагаемый RC4"), но с тех пор были реализованы различные алгоритмы, обычно из других шифров, таких как ChaCha20, с использованием того же имени. Качество случайности, обеспечиваемое rand, обычно слишком низкое, чтобы считаться статистически случайным, и требует явной инициализации. Обычно рекомендуется использовать arc4random вместо rand, когда это возможно. Некоторые C-библиотеки реализуют rand, используя arc4random_uniform внутри.