1、三角函数
double sin(double); 正弦
double cos(double); 余弦
double tan(double); 正切
2、反三角函数
double asin(double); 反正弦,结果介于[-PI/2, PI/2]
double acos(double); 反余弦,结果介于[0, PI]
double atan(double); 反正切(主值), 结果介于[-PI/2, PI/2]
double atan2(double, double); 反正切(整圆值), 结果介于[-PI, PI]
3、双曲三角函数
double sinh (double); 双曲正弦
double cosh (double); 双曲余弦
double tanh (double); 双曲正切
4、反双曲三角函数
double asinh(double); 反双曲正弦
double acosh(double); 反双曲余弦
double atanh(double); 反双曲正切
5、指数、对数、开根
double sqrt(double n); 求 n的平方根
double cbrt(double n); 求 n的立方根
double hypot(double, double); 已知直角三角形两个直角边长度,求斜边长度,即两数平方之和开根
double result = hypot(3, 4) = 5.000000;
double pow(double x, double n); 求 x的n次方
double exp(double n); 求 e=2.71828的n次方
double result = exp(8) = 2980.957987;
double exp2(double n); 求 2的n次方
double result = exp2(8) = 256.000000;
double expm1(double n); 求 e=2.71828的n次方 - 1
double result = expm1(8) = 2979.957987;
double log(double n); 求 以e为底的n的对数
double result = log(exp(8) = 8.000000;
double log10(double n); 求 以10为底的n的对数
double result = log10(100) = 2.000000;
double log2(double n); 求 以2为底的n的对数
double result = log2(8) = 3.000000;
6、取整和取余
double fabs(double n); n的绝对值
double copysign(double a, double b); 使a的符号和b一样
extern double ceil(double); 向上取整
double result = ceil(4.1) = 5.0;
extern double floor(double); 向下取整
double result = floor(4.9) = 4.0;
double rint(double n); / double nearbyint(double n); 最接近n的整数,一样近优先偶数。
double result = nearbyint(1.5) = 2;
double result = nearbyint(2.5) = 2;
double result = nearbyint(1.411) = 1;
double round(double); 四舍五入
double trunc(double); 去除小数部分
double fmod(double x, double y); x/y取余
double remainder(double, double); x/y取余,余数可以为负数,取绝对值最小的余数
double result = remainder(0.6, 0.13) = -0.05
0.6 / 0.13 = 4 ... 0.08
0.6 / 0.13 = 5 ... -0.05 (这个绝对值最小)
double remquo(double, double, int *); 策略与remainder()一致, 商通过指针回传
int quotient = 0;
double result = remquo(0.6, 0.13, "ient) = -0.05;
quotient = 5;
double modf(double x, double *y); 将参数x的整数部分通过指针传给y,返回值为小数部分
double integer = 0;
double decimal = modf(3.1415926, &integer);
integer = 3.000000;
decimal = 0.141593;
7、比较
double fdim(double a, double b); x = a - b <= 0 ? 0 : a - b
double fmax(double, double); 取最大值
double fmin(double, double); 取最小值
double fma(double a, double b, double c); x = a * b + c
8、标准化浮点数
double frexp (double f, int *p); 标准化浮点数,f = x * 2^p,已知 f 求 x,p ( x介于[0.5, 1] )
double x = frexp(8, &p) = 0.05;
p = 4;
double ldexp (double x, int p); 与 frexp 相反, 已知 x,p 求 f