std::atanh, std::atanhf, std::atanhl
Определено в заголовке <cmath> |
||
|---|---|---|
| (1) | ||
float atanh ( float num ); double atanh ( double num ); long double atanh ( long double num ); |
(до C++23) | |
/* floating-point-type */
atanh ( /* floating-point-type */ num );
|
(с C++23) (constexpr с C++26) |
|
float atanhf( float num ); |
(2) | (с C++11) (constexpr с C++26) |
long double atanhl( long double num ); |
(3) | (с C++11) (constexpr с C++26) |
| Дополнительные перегрузки (с C++11) | ||
Определено в заголовке <cmath> |
||
template< class Integer > double atanh ( Integer num ); |
(A) | (constexpr с C++26) |
num. Библиотека предоставляет перегрузки std::atanh для всех типов с плавающей запятой без квалификаторов cv в качестве типа параметра.(с C++23)
| A) Дополнительные перегрузки предоставляются для всех целочисленных типов, которые обрабатываются как double. | (с C++11) |
Параметры
| num | - | значение с плавающей запятой или целое число |
Значение возврата
Если ошибки не произошли, возвращается обратная гиперболическая тангенс num (tanh-1(num), или artanh(num)).
Если произошла ошибка области определения, возвращается значение, определённое реализацией (NaN, если поддерживается).
Если произошла ошибка полюса, возвращается ±HUGE_VAL, ±HUGE_VALF, или ±HUGE_VALL (с соответствующим знаком).
Если произошла ошибка диапазона из-за подпотока, возвращается правильный результат (после округления).
Обработка ошибок
Ошибки сообщаются, как указано в math_errhandling.
Если аргумент не находится в интервале [-1, +1], происходит ошибка диапазона.
Если аргумент равен ±1, происходит ошибка полюса.
Если реализация поддерживает арифметику с плавающей точкой IEEE (IEC 60559),
- если аргумент равен ±0, он возвращается без изменений.
- если аргумент равен ±1, возвращается ±∞ и поднимается
FE_DIVBYZERO. - если |num|>1, возвращается NaN и поднимается
FE_INVALID. - если аргумент равен NaN, возвращается NaN.
Примечания
Хотя стандарт C (на который ссылается C++) называет эту функцию "обратная гиперболическая тангенс", обратные функции гиперболических функций являются функциями области. Их аргументом является площадь гиперболического сектора, а не дуга. Правильное название - "обратная гиперболическая тангенс" (используется POSIX) или "площадь гиперболической тангенса".
POSIX определяет, что в случае подпотока возвращается num без изменений, а если это не поддерживается, возвращается значение, определенное реализацией, не большее чем DBL_MIN, FLT_MIN, и LDBL_MIN.
Дополнительные перегрузки не обязаны предоставляться точно как (A). Они должны быть достаточны, чтобы для их аргумента num целого типа, std::atanh(num) имел тот же эффект, что и std::atanh(static_cast<double>(num)).
Пример
#include <cerrno>
#include <cfenv>
#include <cfloat>
#include <cmath>
#include <cstring>
#include <iostream>
// #pragma STDC FENV_ACCESS ON
int main()
{
std::cout << "atanh(0) = " << std::atanh(0) << '\n'
<< "atanh(-0) = " << std::atanh(-0.0) << '\n'
<< "atanh(0.9) = " << std::atanh(0.9) << '\n';
// error handling
errno = 0;
std::feclearexcept(FE_ALL_EXCEPT);
std::cout << "atanh(-1) = " << std::atanh(-1) << '\n';
if (errno == ERANGE)
std::cout << " errno == ERANGE: " << std::strerror(errno) << '\n';
if (std::fetestexcept(FE_DIVBYZERO))
std::cout << " FE_DIVBYZERO raised\n";
}Возможный вывод:
atanh(0) = 0
atanh(-0) = -0
atanh(0.9) = 1.47222
atanh(-1) = -inf
errno == ERANGE: Numerical result out of range
FE_DIVBYZERO raisedСм. также
|
(C++11)(C++11)(C++11) |
вычисляет обратный гиперболический синус (\({\small\operatorname{arsinh}{x}}\)arsinh(x)) (функция) |
|
(C++11)(C++11)(C++11) |
вычисляет обратный гиперболический косинус (\({\small\operatorname{arcosh}{x}}\)arcosh(x)) (функция) |
|
(C++11)(C++11) |
вычисляет гиперболический тангенс (\({\small\tanh{x}}\)tanh(x)) (функция) |
|
(C++11) |
вычисляет гиперболическую тангенс комплексного числа (\({\small\operatorname{artanh}{z}}\)artanh(z)) (функция-шаблон) |
C документация для atanh |
|
Внешние ссылки
| Weisstein, Eric W. "Обратная гиперболическая тангенс." Из MathWorld — Wolfram Web Resource. |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/math/atanh