闲话少叙,直接来吧。
math.h
math.h作为C标准库的一部分,提供了部分数学运算函数以及数学常量。其中绝大部分函数都只在头文件内完成声明和定义,仅有部分需要链接数学库(linux)。
math.h中提供的函数的返回类型和参数类型几乎都是double。
作为标准库的一部分,为了实现兼容,math.h的内容非常复杂,很难一一列举,我仅仅举出了部分内容,仅供参考。
宏常量
-
INFINITY : 正无穷,返回一个 float。
#ifdef __USE_ISOC99 /* IEEE positive infinity. */ # if __GNUC_PREREQ (3, 3) # define INFINITY (__builtin_inff ()) # else # define INFINITY HUGE_VALF # endif
-
NAN :非数字(Not-A-Number),返回一个float。
/* IEEE Not A Number. */ # if __GNUC_PREREQ (3, 3) # define NAN (__builtin_nanf ("")) # else /* This will raise an "invalid" exception outside static initializers, but is the best that can be done in ISO C while remaining a constant expression. */ # define NAN (0.0f / 0.0f) # endif #endif /* __USE_ISOC99 */
实际上还有很多宏,无法完全列举,请查阅标准库头文件。
类型
-
float_t : (当前系统)最有效执行 float 运算的类型,宽度至少与 float 一样。
-
double_t : (当前系统)最有效执行 double 运算的类型,宽度至少与 double 一样。
可能存在更多类型定义,具体视实现而定
函数
-
三角函数
函数原型 描述 double acos(double x) 反余弦(x为弧度制,下同) double asin(double x) 反正弦 double atan(double x) 反正切 double atan2(double y, double x) y/x 的反正切,y 和 x 的符号决定象限 double cos(double x) 余弦 double sin(double x) 正弦 -
双曲函数
函数原型 描述 double cosh(double x) 双曲余弦 double sinh(double x) 双曲正弦 double tanh(double x) 双曲正切 -
指数,对数函数
函数原型 描述 double exp(double x) 自然数e 的 x 次幂 double log(double x) x 的自然对数 double log10(double x) x 的常用对数 double sqrt(double x) 平方根 double pow(double x, double y) x 的 y 次幂 double modf(double x, double *integer) x 的常用对数 double log(double x) x 的自然对数 double ldexp(double x, int exponent) x 乘以 2 的 exponent 次幂 -
其他
函数原型 描述 double floor(double x) 小于或等于 x 的最大的整数值。 double fmod(double x, double y) x 除以 y 的余数。 double fabs(double x) 绝对值 double ceil(double x) 大于或等于 x 的最小的整数值 double frexp(double x, int *exponent) 把浮点数 x 分解成尾数和指数。返回值是尾数,并将指数存入 exponent 中。所得的值是 x = mantissa * 2 ^ exponent
其他
-
math.h中进行了庞大的编译器判断,以使用在当前平台速度最快的数据类型。
-
math.h是十分重要的,它补充了C/C++相比于更新的语言在运算符上的不足,并且提供了一套简单易用,且通用,高效的数学运算。
参考资料
glibc标准库头文件
标准库 - math.h - 《阮一峰《C 语言教程》》 - 书栈网 · BookStack