tanh, tanhf, tanhl

< c‎ | numeric‎ | math
在标头 <math.h> 定义
float       tanhf( float arg );
(1) (C99 起)
double      tanh( double arg );
(2)
long double tanhl( long double arg );
(3) (C99 起)
在标头 <tgmath.h> 定义
#define tanh( arg )
(4) (C99 起)
1-3) 计算 arg 的双曲正切。
4) 泛型宏:若实参拥有 long double 类型,则调用 tanhl。否则,若实参拥有整数类型或 double 类型,则调用 tanh。否则调用 tanhf 若实参为复数,则宏调用对应的复数函数(ctanhfctanhctanhl)。

参数

arg - 表示双曲角的浮点值

返回值

若不出现错误,则返回 arg 的双曲正切(tanh(arg)
earg
-e-arg
earg
+e-arg
)。

若发生下溢所致的错误,则返回(舍入后的)正确结果。

错误处理

报告 math_errhandling 中指定的错误。

若实现支持 IEEE 浮点算术(IEC 60559),则

  • 若参数为 ±0,则返回 ±0
  • 若参数为 ±∞,则返回 ±1
  • 若参数为 NaN,则返回 NaN

注解

POSIX 指定在下溢的情况中,返回不修改的 arg,而且若不支持这么做,则返回不大于 DBL_MINFLT_MINLDBL_MIN 的实现定义值。

示例

#include <math.h>
#include <stdio.h>
 
int main(void)
{
    printf("tanh(1) = %f\ntanh(-1) = %f\n", tanh(1), tanh(-1));
    printf("tanh(0.1)*sinh(0.2)-cosh(0.2) = %f\n", tanh(0.1) * sinh(0.2) - cosh(0.2));
    // 特殊值
    printf("tanh(+0) = %f\ntanh(-0) = %f\n", tanh(0.0), tanh(-0.0));
}

输出:

tanh(1) = 0.761594
tanh(-1) = -0.761594
tanh(0.1)*sinh(0.2)-cosh(0.2) = -1.000000
tanh(+0) = 0.000000
tanh(-0) = -0.000000

引用

  • C23 标准(ISO/IEC 9899:2024):
  • 7.12.5.6 The tanh functions (第 TBD 页)
  • 7.25 Type-generic math <tgmath.h> (第 TBD 页)
  • F.10.2.6 The tanh functions (第 TBD 页)
  • C17 标准(ISO/IEC 9899:2018):
  • 7.12.5.6 The tanh functions (第 TBD 页)
  • 7.25 Type-generic math <tgmath.h> (第 TBD 页)
  • F.10.2.6 The tanh functions (第 TBD 页)
  • C11 标准(ISO/IEC 9899:2011):
  • 7.12.5.6 The tanh functions (第 242 页)
  • 7.25 Type-generic math <tgmath.h> (第 373-375 页)
  • F.10.2.6 The tanh functions (第 520 页)
  • C99 标准(ISO/IEC 9899:1999):
  • 7.12.5.6 The tanh functions (第 222-223 页)
  • 7.22 Type-generic math <tgmath.h> (第 335-337 页)
  • F.9.2.6 The tanh functions (第 457 页)
  • C89/C90 标准(ISO/IEC 9899:1990):
  • 4.5.3.3 The tanh function

参阅

(C99)(C99)
计算双曲正弦(sinh(x)
(函数)
(C99)(C99)
计算双曲余弦(cosh(x)
(函数)
(C99)(C99)(C99)
计算反双曲正切(artanh(x)
(函数)
(C99)(C99)(C99)
计算复数双曲正切
(函数)