~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 1C3F853D617D065940A4731B1C8366B6__1717286760 ✰
Заголовок документа оригинал.:
✰ C mathematical functions - Wikipedia ✰
Заголовок документа перевод.:
✰ Математические функции C — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/C_mathematical_functions ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/1c/b6/1c3f853d617d065940a4731b1c8366b6.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/1c/b6/1c3f853d617d065940a4731b1c8366b6__translat.html ✰
Дата и время сохранения документа:
✰ 15.06.2024 17:08:21 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 2 June 2024, at 03:06 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Математические функции C — Википедия Jump to content

Математические функции C

Из Википедии, бесплатной энциклопедии

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

Обзор функций [ править ]

Большинство математических функций определены в <math.h> ( <cmath>заголовок в C++). Функции, которые работают с целыми числами, например abs, labs, div, и ldivвместо этого определены в <stdlib.h> заголовок ( <cstdlib> заголовок в C++).

Любые функции, работающие с углами, используют радианы в качестве единицы измерения угла. [1]

Не все эти функции доступны в C89 версии стандарта . Для тех, которые есть, функции принимают только тип double для аргументов с плавающей запятой, что приводит к дорогостоящим преобразованиям типов в коде, который в противном случае использовал бы одинарную точность. floatценности. В C99 этот недостаток был исправлен введением новых наборов функций, работающих на float и long doubleаргументы. Эти функции идентифицируются f и l суффиксы соответственно. [3]

Функция Описание
abs
labs
llabs
вычисляет абсолютное значение целочисленного значения
fabs вычисляет абсолютное значение значения с плавающей запятой
div
ldiv
lldiv
вычисляет частное и остаток от целочисленного деления
fmod оставшаяся часть операции деления с плавающей запятой
remainder подписал остаток операции дивизии
remquo знаковый остаток, а также три последних бита операции деления
fma объединенная операция умножения-сложения
fmax большее из двух значений с плавающей запятой
fmin меньшее из двух значений с плавающей запятой
fdim положительная разница двух значений с плавающей запятой
nan
nanf
nanl
возвращает NaN (не число)
Экспоненциальный
функции
exp возвращает e, возведенное в заданную степень
exp2 возвращает 2, возведенное в заданную степень
expm1 возвращает e, возведенное в заданную степень, минус единица
log вычисляет натуральный логарифм (по основанию e)
log2 вычисляет двоичный логарифм (по основанию 2)
log10 вычисляет десятичный логарифм (по основанию 10)
log1p вычисляет натуральный логарифм (по основанию e) от 1 плюс заданное число
ilogb извлекает показатель числа
logb извлекает показатель числа
Власть
функции
sqrt вычисляет квадратный корень
cbrt вычисляет кубический корень
hypot вычисляет квадратный корень из суммы квадратов двух заданных чисел
pow возводит число в заданную степень [4]
Тригонометрический
функции
sin вычисляет синус
cos вычисляет косинус
tan вычисляет тангенс
asin вычисляет арксинус
acos вычисляет арккосинус
atan вычисляет арктангенс
atan2 вычисляет арктангенс, используя знаки для определения квадрантов
гиперболический
функции
sinh вычисляет гиперболический синус
cosh вычисляет гиперболический косинус
tanh вычисляет гиперболический тангенс
asinh вычисляет гиперболический арксинус
acosh вычисляет гиперболический арккосинус
atanh вычисляет гиперболический арктангенс
Ошибка и
гамма
функции
erf вычисляет функцию ошибок
erfc вычисляет дополнительную функцию ошибок
lgamma вычисляет натуральный логарифм абсолютного значения гамма-функции
tgamma вычисляет гамма-функцию
Ближайший
целое число
плавающий-
точка
операции
ceil возвращает ближайшее целое число не меньше заданного значения
floor возвращает ближайшее целое число, не превышающее заданное значение
trunc возвращает ближайшее целое число, не превышающее по величине заданное значение
round
lround
llround
возвращает ближайшее целое число, округляя от нуля в промежуточных случаях
nearbyint возвращает ближайшее целое число, используя текущий режим округления
rint
lrint
llrint
возвращает ближайшее целое число, используя текущий режим округления, за исключением случаев, когда результат отличается
Плавающий-
точка
манипуляция
функции
frexp разлагает число на мантиссу и степень 2
ldexp умножает число на 2, возведенное в степень
modf разлагает число на целую и дробную части
scalbn
scalbln
умножает число на FLT_RADIX, возведенное в степень
nextafter
nexttoward
возвращает следующее представимое значение с плавающей запятой в направлении заданного значения
copysign копирует знак значения с плавающей запятой
Классификация fpclassify классифицирует данное значение с плавающей запятой
isfinite проверяет, имеет ли аргумент конечное значение
isinf проверяет, бесконечен ли аргумент
isnan проверяет, является ли аргумент NaN
isnormal проверяет, является ли аргумент нормальным
signbit проверяет, является ли знак аргумента отрицательным

Среда с плавающей запятой [ править ]

В C99 добавлено несколько функций и типов для детального управления средой с плавающей запятой. [3] Эти функции можно использовать для управления различными настройками, которые влияют на вычисления с плавающей запятой, например, режим округления, условия возникновения исключений, когда числа сбрасываются до нуля и т. д. Определены функции и типы среды с плавающей запятой. в <fenv.h> заголовок ( <cfenv> на С++ ).

Функция Описание
feclearexcept очищает исключения ( C99 )
fegetenv сохраняет текущую среду с плавающей запятой ( C99 )
fegetexceptflag хранит текущие флаги состояния ( C99 )
fegetround извлекает текущее направление округления ( C99 )
feholdexcept сохраняет текущую среду с плавающей запятой и очищает все исключения ( C99 )
feraiseexcept вызывает исключение с плавающей запятой ( C99 )
fesetenv устанавливает текущую среду с плавающей запятой ( C99 )
fesetexceptflag устанавливает флаги текущего состояния ( C99 )
fesetround устанавливает текущее направление округления ( C99 )
fetestexcept проверяет, были ли созданы определенные исключения ( C99 )
feupdateenv восстанавливает среду с плавающей запятой, но сохраняет текущие исключения ( C99 )

Комплексные числа [ править ]

C99 добавляет новый _Complex ключевое слово (и complexудобство макроса; доступен только в том случае, если <complex.h>заголовок включен), который обеспечивает поддержку комплексных чисел. Любой тип с плавающей запятой можно изменить с помощью complex, а затем определяется как пара чисел с плавающей запятой. Обратите внимание, что C99 и C++ не реализуют комплексные числа совместимым с кодом способом — последний вместо этого предоставляет класс std::complex.

Все операции над комплексными числами определены в <complex.h>заголовок. Как и в случае с вещественными функциями, f или l суффикс обозначает float complex или long double complex вариант функции.

Функция Описание
Базовый
операции
cabs вычисляет абсолютное значение ( C99 )
carg вычисляет аргумент комплексного числа ( C99 )
cimag вычисляет мнимую часть комплексного числа ( C99 )
creal вычисляет действительную часть комплексного числа ( C99 )
conj вычисляет комплексно-сопряженное число ( C99 )
cproj вычисляет комплексную проекцию в сферу Римана ( C99 )
Возведение в степень
операции
cexp вычисляет комплексную экспоненту ( C99 )
clog вычисляет комплексный логарифм ( C99 )
csqrt вычисляет комплексный квадратный корень ( C99 )
cpow вычисляет комплексную степень ( C99 )
Тригонометрический
операции
csin вычисляет комплексный синус ( C99 )
ccos вычисляет комплексный косинус ( C99 )
ctan вычисляет комплексный тангенс ( C99 )
casin вычисляет комплексный арксинус ( C99 )
cacos вычисляет комплексный арккосинус ( C99 )
catan вычисляет комплексный арктангенс ( C99 )
гиперболический
операции
csinh вычисляет комплексный гиперболический синус ( C99 )
ccosh вычисляет комплексный гиперболический косинус ( C99 )
ctanh вычисляет комплексный гиперболический тангенс ( C99 )
casinh вычисляет комплексный гиперболический арксинус ( C99 )
cacosh вычисляет комплексный гиперболический арккосинус ( C99 )
catanh вычисляет комплексный гиперболический арктангенс ( C99 )

Несколько более сложных функций «зарезервированы для будущего использования в C99». [5] Реализации предоставляются проектами с открытым исходным кодом, которые не являются частью стандартной библиотеки.

Функция Описание
Функции ошибок cerf вычисляет комплексную функцию ошибок ( C99 )
cerfc вычисляет комплексную дополнительную функцию ошибок ( C99 )

Типообобщенные функции [ править ]

Заголовок <tgmath.h> определяет общий макрос типа для каждой математической функции, определенной в <math.h> и <complex.h>. Это добавляет ограниченную поддержку перегрузки математических функций: одно и то же имя функции может использоваться с разными типами параметров; фактическая функция будет выбрана во время компиляции в соответствии с типами параметров.

Каждый макрос общего типа, соответствующий функции, определенной как для действительных, так и для комплексных чисел, инкапсулирует в общей сложности 6 различных функций: float, double и long double, и их complexварианты. Макросы общего типа, соответствующие функции, определенной только для вещественных чисел, инкапсулируют в общей сложности 3 различные функции: float, double и long double варианты функции.

Язык C++ включает встроенную поддержку перегрузки функций и, следовательно, не обеспечивает <tgmath.h> заголовок даже в качестве функции совместимости.

Генерация случайных чисел [ править ]

Заголовок <stdlib.h> ( <cstdlib> в C++) определяет несколько функций, которые можно использовать для генерации статистически случайных чисел. [6]

Функция Описание
rand генерирует псевдослучайное число от 0 до RAND_MAX, включительно.
srand инициализирует генератор псевдослучайных чисел
arc4random генерирует псевдослучайное число от 0 до UINT32_MAX, обычно используя лучший алгоритм, чем rand
arc4random_uniform генерирует псевдослучайное число от 0 до максимального значения.
arc4random_buf заполнить буфер псевдослучайным битовым потоком.
arc4random_stir инициализирует генератор псевдослучайных чисел .

The arc4random Семейство функций случайных чисел не определено в стандарте POSIX, но встречается в некоторых общих libcреализации. Раньше оно относилось к генератору потока ключей утекшей версии шифра RC4 (отсюда и « RC4 законный » другие алгоритмы, обычно из других шифров, таких как ChaCha20 ), но с тех пор были реализованы , с использованием того же имени.

Качество случайности от randобычно слишком слабы, чтобы их можно было даже считать статистически случайными, и для этого требуется явное начальное значение. Обычно рекомендуется использовать arc4random вместо randкогда возможно. Некоторые библиотеки C реализуют rand с использованием arc4random_uniform внутренне.

Реализации [ править ]

В POSIX, системах таких как Linux и BSD , математические функции (как объявлено в <math.h>) идут отдельно в математической библиотеке libm. Следовательно, если используется какая-либо из этих функций, компоновщику должна быть присвоена директива -lm. Существуют различные libm реализации, в том числе:

Реализации не обязательно под именем libm включать:

См. также [ править ]

Ссылки [ править ]

  1. ^ Перейти обратно: а б Спецификация ISO/IEC 9899:1999 (PDF) . п. 212, § 7.12.
  2. ^ Прата, Стивен (2004). C праймер плюс . Издательство Самс. Приложение B, раздел V: Стандартная библиотека ANSI C с дополнениями C99. ISBN  0-672-32696-5 .
  3. ^ Перейти обратно: а б Прата, Стивен (2004). C праймер плюс . Издательство Самс. Приложение B, раздел VIII: Улучшения численных вычислений C99. ISBN  0-672-32696-5 .
  4. ^ В условном смысле может показаться удобным использовать pow( x ,2) или pow( x ,3) для вычисления квадратов или кубов. Однако это не рекомендуется в коде, критичном ко времени. Если реализация не уделяет особого внимания этим случаям во время компиляции, x * x или x * x * x будут выполняться намного быстрее. Кроме того, sqrt( x ) и cbrt( x ) должны быть предпочтительнее pow( x ,.5) или pow( x ,1./3).
  5. ^ man cerf(3), man cerfc(3), см., например, https://linux.die.net/man/3/cerf .
  6. ^ «Библиотека GNU C — случайный ISO» . Проверено 18 июля 2018 г.
  7. ^ Кордес, Питер. "intel, где находится встроенная функция Clang '_mm256_pow_ps'?" . Переполнение стека .

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 1C3F853D617D065940A4731B1C8366B6__1717286760
URL1:https://en.wikipedia.org/wiki/C_mathematical_functions
Заголовок, (Title) документа по адресу, URL1:
C mathematical functions - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)