sinh, sinhf, sinhl
Определено в заголовочном файле <math.h> | ||
|---|---|---|
float sinhf( float arg ); | (1) | (с C99) |
double sinh( double arg ); | (2) | |
long double sinhl( long double arg ); | (3) | (с C99) |
Определено в заголовочном файле <tgmath.h> | ||
#define sinh( arg ) | (4) | (с C99) |
1-3) Вычисляет гиперболический синус от
arg.
4) Универсальная макрокоманда типа: Если аргумент имеет тип
long double, вызывается sinhl. В противном случае, если аргумент имеет целочисленный тип или тип double, вызывается sinh. В противном случае, вызывается sinhf. Если аргумент комплексный, то макрокоманда вызывает соответствующую комплексную функцию (csinhf, csinh, csinhl).Параметры
| arg | - | значение с плавающей точкой, представляющее гиперболический угол |
Возвращаемое значение
Если ошибок не произошло, возвращается гиперболический синус отarg (sinh(arg), или earg-e-arg/2). Если произошла ошибка из-за переполнения, возвращается ±HUGE_VAL, ±HUGE_VALF, или ±HUGE_VALL.
Если произошла ошибка из-за недополнения, возвращается корректный результат (после округления).
Обработка ошибок
Ошибки сообщаются в соответствии с math_errhandling.
Если реализация поддерживает арифметику с плавающей точкой IEEE (IEC 60559),
- если аргумент равен ±0 или ±∞, он возвращается без изменений
- если аргумент равен NaN, возвращается NaN
Примечания
POSIX определяет, что в случае недополнения возвращается arg без изменений, а если это не поддерживается, возвращается значение, определённое реализацией и не превышающее DBL_MIN, FLT_MIN, и LDBL_MIN.
Пример
#include <stdio.h>
#include <math.h>
#include <errno.h>
#include <fenv.h>
// #pragma STDC FENV_ACCESS ON
int main(void)
{
printf("sinh(1) = %f\nsinh(-1)=%f\n", sinh(1), sinh(-1));
printf("log(sinh(1) + cosh(1))=%f\n", log(sinh(1)+cosh(1)));
// special values
printf("sinh(+0) = %f\nsinh(-0)=%f\n", sinh(0.0), sinh(-0.0));
// error handling
errno=0; feclearexcept(FE_ALL_EXCEPT);
printf("sinh(710.5) = %f\n", sinh(710.5));
if(errno == ERANGE) perror(" errno == ERANGE");
if(fetestexcept(FE_OVERFLOW)) puts(" FE_OVERFLOW raised");
}Возможный вывод:
sinh(1) = 1.175201
sinh(-1)=-1.175201
log(sinh(1) + cosh(1))=1.000000
sinh(+0) = 0.000000
sinh(-0)=-0.000000
sinh(710.5) = inf
errno == ERANGE: Numerical result out of range
FE_OVERFLOW raisedСсылки
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.12.5.5 Функции sinh (с. 176)
- 7.25 Универсальные математические функции <tgmath.h> (с. 272-273)
- F.10.2.5 Функции sinh (с. 379)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.12.5.5 Функции sinh (с. 241-242)
- 7.25 Универсальные математические функции <tgmath.h> (с. 373-375)
- F.10.2.5 Функции sinh (с. 520)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.12.5.5 Функции sinh (с. 222)
- 7.22 Универсальные математические функции <tgmath.h> (с. 335-337)
- F.9.2.5 Функции sinh (с. 457)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 4.5.3.2 Функция sinh
См. также
|
(C99)(C99) | вычисляет гиперболический косинус (\({\small\cosh{x} }\)cosh(x)) (функция) |
|
(C99)(C99) | вычисляет гиперболический тангенс (\({\small\tanh{x} }\)tanh(x)) (функция) |
|
(C99)(C99)(C99) | вычисляет обратный гиперболический синус (\({\small\operatorname{arsinh}{x} }\)arsinh(x)) (функция) |
|
(C99)(C99)(C99) | вычисляет комплексный гиперболический синус (функция) |
Документация C++ для sinh |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/math/sinh