Cmath c функции: Функции библиотеки C++ (math.h)

С++. Математические функции

Программирование, С/C++

Для всех математических функций необходим заголовок <cmath>. В программах на языке C используется заголовок <math.h>

1acosФункция double acos(double arg) возвращает арккосинус аргумента arg. Значение аргумента функции должно лежать в интервале от -1 до 1, иначе произойдет ошибка.
2asinФункция double asin(double arg) возвращает арккосинус аргумента arg. Значение аргумента функции должно лежать в интервале от -1 до 1, иначе произойдет ошибка.
3atanФункция double atan(double arg) возвращает арктангенс аргумента arg.
4atan2Функция double atan2(double x, double
y
) возвращает арктангенс значения y/x.
5ceilФункция double ceil(double num) возвращает ближайшее целое число (представленное как действительное число с плавающей точкой), которое не меньше значения аргумента num. Например, ceil(1.02) вернет 2.0. Такое преобразование называется округлением с избытком.
6cosФункция double cos(double arg) возвращает косинус аргумента arg. Значение аргумента должно быть выражено в радианах.
7coshФункция double cosh(double arg) возвращает гиперболический косинус аргумента arg.
8expФункция double exp(double arg) возвращает основание натурального логарифма e, возведенное в степень arg.
9
fabsФункция double fabs(double num) возвращает абсолютное значение (значение по модулю) аргумента num.
10floorФункция double floor(double num) возвращает наибольшее целое число (представленное как действительное число с плавающей точкой), не превышающее значения аргумента num. Например, floor(1.02) вернет число 1.0. Такое преобразование называется округлением с недостатком.
11fmodФункция double fmod(double x, double y) возвращает остаток от деления x/y.
12frexpФункция double frexp(double num, int *exp) раскладывает число num на мантиссу, изменяющуюся в диапазоне от 0.1 до 1, не включая 1, и целый показатель степени, так что
num
= mantissa. Функция возвращает мантиссу, а значение показателя степени сохраняется в переменной, на которую ссылается указатель exp.
13logФункция double log(double num) возвращает натуральный логарифм числа num. Если аргумент num отрицателен или равен нулю, возникает ошибка.
14log10Функция double log10(double num) возвращает десятичный логарифм числа num. Если аргумент num отрицателен или равен нулю, возникает ошибка.
15powФункция double pow(double base, double exp) возвращает число base, возведенное в степени exp. Если основание степени base равно нулю, а показатель степени exp
меньше или равен нулю, может произойти ошибка, связанная с выходом аргумента из области определения функции (domain error). Это ошибка возникает также, если аргумент base отрицателен, а аргумент exp не является целым числом.
16sinФункция double sin(double arg) возвращает синус аргумента arg. Значение аргумента должно быть выражено в радианах.
17sinhФункция double sinh(double arg) возвращает гиперболический синус аргумента arg.
18sqrtФункция double sqrt(double num) возвращает квадратный корень аргумента num. Если значение аргумента отрицательно, возникает ошибка, связанная с выходом из области определения функции.
19
tan
Функция double tan(double arg) возвращает тангенс аргумента arg. Значение аргумента должно быть выражено в радианах.
20tanhФункция double tanh(double arg) возвращает гиперболический тангенс аргумента arg.

 

Метки функции. Смотреть запись.

c++ — отличие библиотек и и вопросы точности

вопрос 1:

Подскажите, отличаются ли C++ библиотеки <math. h> и <cmath> чем-то принципиально (кроме новых функций)?

вопрос 2:

Иногда возникают задачи вычисления над близкими значениями, например exp(-(log(x) - a)*(log(x) - a)), в результате даже long double перестаёт помогать и приходится вводить какие-то масштабирующие коэффициенты, чтобы повысить точность, что не очень хорошо.

Может дело в том, что функции exp, log программно-написанные, а не из ALU? Как вообще люди решают такие проблемы?

  • c++
  • математика
  • большие-числа
  • погрешность
  • точность

1

<cmath> — это по большому счету <math.h>, только завернутая в пространство имен std. Или <math.h> — вытащенные из std функции <cmath>

Проблемы с точностью вычислений связаны с ограниченной точностью представлений чисел с плавающей точкой. Библиотечные функции использовали свои «программно-написанные» функции разве что во времена 80386, когда еще было математический сопроцессор — было удовольствие не на каждой машине. Дело не в этом, а в том, что как ни старайтесь, но законы математики не перепрыгнуть, и действительно надо прибегать к математическим преобразованиям для таких вычислений — вплоть до того, что часто изменение последовательности суммирований существенно меняет результат.

Кстати, некоторые компиляторы при long double все равно используют обычный double — например, Visual C++. Проверьте, что там у вас…

3

Для длинной арифметики классика жанра это GMP. Но вообще-то так, чтобы было мало long double это должна быть ОЧЕНЬ специфическая задача. Особенно теперь, когда платформа x86 стала 64-х разрядной.

5

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

С++ cmath

КОДИРОВАНИЕ
PRO
СКИДКА 36%

Попробуйте на практике C++ с Programiz PRO

Получите скидку

C++ acos()

Возвращает арккосинус числа

C++ acosh()

возвращает гиперболический косинус числа

C++ asin()

Возвращает арктангенс числа

C++ asinh()

Возвращает аркгиперболический синус числа

C++ atan()

Возвращает арктангенс числа

C++ atan2()

Возвращает обратную координату C++ atanh()

возвращает аркгиперболический тангенс числа

C++ cbrt()

Вычисляет кубический корень числа

C++ ceil()

Возвращает максимальное значение числа

C++ cmath abs()

Возвращает абсолютное значение аргумента

C++ copysign()

возвращает число со значением первого и знаком второго

C++ exp()

возвращает экспоненту (e) в степени

C++ exp2()

Возвращает 2 в степени

C++ expm1()

Возвращает e в степени минус 1

C++ fabs()

Возвращает абсолютное значение аргумента

C++ fdim()

Возвращает положительное различие между аргументами

C++ floor()

Возвращает минимальное значение десятичного числа Умножение–накопление

C++ fmax()

возвращает наибольший из двух переданных аргументов

C++ fmin()

возвращает наименьший из двух заданных аргументов

C++ fmod()

Вычисляет остаток от деления 9 с плавающей запятой0005

C++ frexp()

переводит число с плавающей запятой в его двоичную мантиссу

C++ hypot()

Возвращает квадратный корень из суммы квадратов аргументов

C++ ilogb()

возвращает целую часть логарифма |x|

C++ ldexp()

возвращает произведение x и 2, возведенное в степень e

C++ llrint()

Округляет аргумент, используя текущий режим округления0005

C++ log()

Возвращает натуральный логарифм числа

C++ log10()

Возвращает логарифм числа по основанию 10

C++ log1p()

возвращает натуральный логарифм x+1.

C++ log2()

возвращает логарифм числа по основанию 2

C++ logb()

возвращает логарифм |x|

C++ lrint()

Округляет аргумент с использованием текущего режима округления

C++ lround()

Возвращает значение long int, ближайшее к аргументу

C++ modf()

Разбивает число на целую и дробную части

C++ nan()

возвращает простое значение NaN

возвращает значение после x в направлении y

C++ nexttoward()

возвращает следующее значение после x в направлении y0002 Возвращает остаток x/y

C++ remquo()

Компьютерный остаток и сохраняет частное x/y

C++ rint()

Округляет аргумент, используя текущий режим округления

C++ round()

Возвращает ближайшее целое значение в аргумент

C++ scalbln()

Масштабирует x с помощью FLT_RADIX в степень n

C++ scalbn()

Масштабирует x с помощью FLT_RADIX в степень n

C++ sin()

Возвращает синус 9 аргумента

C++ sinh()

возвращает гиперболический синус угла

C++ sqrt()

Вычисляет квадратный корень из числа

C++ tan()

Возвращает тангенс аргумента

C++ 1 возвращает 90 tanh() тангенс угла

C++ trunc()

Усекает кратную часть числа

Заголовок стандартной библиотеки — cppreference.

com
float_t самый эффективный тип с плавающей запятой, ширина которого не меньше, чем у float
дабл_т самый эффективный тип с плавающей запятой шириной не менее double
раздел_т тип структуры, возврат функции std::div
лдив_т тип структуры, возврат функции std::ldiv
lldiv_t тип структуры, возврат функции std::lldiv

HUGE_VALF
HUGE_VAL
HUGE_VALL

(С++11)

(С++11)

указывает значение переполнения для float, double и long double соответственно
(макроконстанта)

БЕСКОНЕЧНОСТЬ

(С++ 11)

возвращает положительную бесконечность или значение, которое гарантированно переполняет число с плавающей запятой
(макроконстанта)

НАН

(С++ 11)

оценивается как тихий NaN типа float
(макроконстанта)

math_errhandling
MATH_ERRNO
MATH_ERREXCEPT

(C++11)
(C++11)
(C++11)

определяет механизм обработки ошибок, используемый общими математическими функциями
(макроконстанта)
Основные операции

абс (целое)
лабораторий
llabs
imaxabs

(C++11)

вычисляет абсолютное значение целочисленного значения (|x|)
(функция)

абс.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

© 2019 Штирлиц Сеть печатных салонов в Перми

Цифровая печать, цветное и черно-белое копирование документов, сканирование документов, ризография в Перми.