C Standard Library 简明教程
C Library - <tgmath.h>
C 库 <tgmath.h> 包含头文件 <math.h> 和 <complex.h>,并定义了各种类型的宏。此函数适用于根据参数(类型)调用的实函数或复函数。
Syntax
以下是 C 库头文件 <tgmath.h> 提供的语法,它提供多种内置函数−
pow(var1, var2)
Or,
fmod(var1, var2)
Or,
sin(var1, var2) etc.
Example 1
C 库头文件 <tgmath.h> 说明了函数 fmod(),该函数接受两个不同数据类型的参数,并计算两个数字相除的余数。
#include <tgmath.h>
#include <stdio.h>
int main() {
float f = 3.0f;
double d = 3.0;
// result is of type double
double result = fmod(f, d);
printf("The result of fmod(%f, %f) = %f\n", f, d, result);
return 0;
}
以上代码生成以下结果 −
The result of fmod(3.000000, 3.000000) = 0.000000
Example 2
以下示例说明了 cabs() 函数的用法,该函数确定复数的绝对值并显示结果。
#include <tgmath.h>
#include <complex.h>
#include <stdio.h>
int main() {
float complex fc = 3.0f + 4.0f * I;
double complex dc = 3.0 + 4.0 * I;
long double complex ldc = 3.0l + 4.0l * I;
// res_fc is of type float
float res_fc = cabs(fc);
// res_dc is of type double
double res_dc = cabs(dc);
// res_ldc is of type long double
long double res_ldc = cabs(ldc);
printf("cabs(%f + %fi) = %f\n", crealf(fc), cimagf(fc), res_fc);
printf("cabs(%f + %fi) = %f\n", creal(dc), cimag(dc), res_dc);
printf("cabs(%Lf + %Lfi) = %Lf\n", creall(ldc), cimagl(ldc), res_ldc);
return 0;
}
执行以上代码,将获得以下结果 −
cabs(3.000000 + 4.000000i) = 5.000000
cabs(3.000000 + 4.000000i) = 5.000000
cabs(3.000000 + 4.000000i) = 5.000000
Example 3
这里,我们使用三角函数来表示数据类型的值−浮点、双精度和长双精度。
#include <tgmath.h>
#include <stdio.h>
int main() {
float f = 3.0f;
double d = 3.0;
long double ld = 3.0l;
// result_f is of type float
double result_f = sin(f);
// result_d is of type double
double result_d = sin(d);
// result_ld is of type long double
double result_ld = sin(ld);
printf("The value of float [sin(%f)] = %f\n", f, result_f);
printf("The value of double [sin(%f)] = %f\n", d, result_d);
printf("The value of long [double sin(%Lf)] = %f\n", ld, result_ld);
return 0;
}
执行上述代码后,我们将获得以下结果:
The value of float [sin(3.000000)] = 0.141120
The value of double [sin(3.000000)] = 0.141120
The value of long [double sin(3.000000)] = 0.141120