C 库函数 - tanh()
描述
C 库函数 double tanh(double x) 返回 x 的双曲正切。
tan
是 C 标准库 <math.h>
中的一个函数,用于计算双曲正切值。双曲正切函数(tanh)在许多数学、物理和工程应用中有广泛的用途。
双曲正切函数的定义为:
声明
下面是 tanh() 函数的声明。
#include <math.h> double tanh(double x); float tanhf(float x); long double tanhl(long double x);
参数
- x -- 输入的实数,表示双曲正切函数的自变量。
返回值
该函数返回 x 的双曲正切。结果的范围是 [-1, 1]。
实例
下面的实例演示了 tanh() 函数的用法。
实例
#include <stdio.h>
#include <math.h>
int main ()
{
double x, ret;
x = 0.5;
ret = tanh(x);
printf("%lf 的双曲正切是 %lf 度", x, ret);
return(0);
}
#include <math.h>
int main ()
{
double x, ret;
x = 0.5;
ret = tanh(x);
printf("%lf 的双曲正切是 %lf 度", x, ret);
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
0.500000 的双曲正切是 0.462117 度
计算多个值的双曲正切
以下示例展示了如何计算多个值的双曲正切:
实例
#include <stdio.h>
#include <math.h>
int main() {
double values[] = {0, 0.5, 1, 1.5, 2};
int num_values = sizeof(values) / sizeof(values[0]);
for (int i = 0; i < num_values; i++) {
double x = values[i];
double result = tanh(x);
printf("tanh(%f) = %f\n", x, result);
}
return 0;
}
#include <math.h>
int main() {
double values[] = {0, 0.5, 1, 1.5, 2};
int num_values = sizeof(values) / sizeof(values[0]);
for (int i = 0; i < num_values; i++) {
double x = values[i];
double result = tanh(x);
printf("tanh(%f) = %f\n", x, result);
}
return 0;
}
代码解析
- 定义一个包含多个值的数组
values
。 - 使用
for
循环遍历每个值,计算双曲正切值并打印结果。
让我们编译并运行上面的程序,这将产生以下结果:
tanh(0.000000) = 0.000000 tanh(0.500000) = 0.462117 tanh(1.000000) = 0.761594 tanh(1.500000) = 0.905148 tanh(2.000000) = 0.964028
错误处理
tanh()
函数对于所有实数输入都是有效的,因此不需要特殊的错误处理。函数不会设置 errno
,也不会返回 NaN,除非输入本身是 NaN。在这种情况下,返回的结果将是 NaN。
以下示例展示了如何处理特殊值(如 NaN 和无穷大):
实例
#include <stdio.h>
#include <math.h>
int main() {
double values[] = {0, NAN, INFINITY, -INFINITY};
int num_values = sizeof(values) / sizeof(values[0]);
for (int i = 0; i < num_values; i++) {
double x = values[i];
double result = tanh(x);
if (isnan(x)) {
printf("tanh(NaN) = NaN\n");
} else if (isinf(x)) {
printf("tanh(%f) = %f\n", x, result);
} else {
printf("tanh(%f) = %f\n", x, result);
}
}
return 0;
}
#include <math.h>
int main() {
double values[] = {0, NAN, INFINITY, -INFINITY};
int num_values = sizeof(values) / sizeof(values[0]);
for (int i = 0; i < num_values; i++) {
double x = values[i];
double result = tanh(x);
if (isnan(x)) {
printf("tanh(NaN) = NaN\n");
} else if (isinf(x)) {
printf("tanh(%f) = %f\n", x, result);
} else {
printf("tanh(%f) = %f\n", x, result);
}
}
return 0;
}
代码解析
- 定义一个包含特殊值(如 NaN 和无穷大)的数组
values
。 - 使用
for
循环遍历每个值,计算双曲正切值并打印结果。 - 使用
isnan()
和isinf()
函数检查输入值是否为 NaN 或无穷大,并相应地处理和打印结果。
让我们编译并运行上面的程序,这将产生以下结果:
tanh(0.000000) = 0.000000 tanh(NaN) = NaN tanh(inf) = 1.000000 tanh(-inf) = -1.000000
总结
tanh()
函数用于计算给定值的双曲正切,是处理双曲函数运算的重要工具。通过合理使用 tanh()
函数,可以在数学计算、物理模拟和工程应用中得到准确的结果。