数学头文件定义了很多数学函数。
宏:
HUGE_VAL
函数:
acos();
asin();
atan();
atan2();
ceil();
cos();
cosh();
exp();
fabs();
floor();
fmod();
frexp();
ldexp();
log();
log10();
modf();
pow();
sin();
sinh();
sqrt();
tan();
tanh();
错误条件
所有math.h函数产生错误的情形都是类似的。
当传递给函数的参数超出了函数要求的参数定义域时,变量errno被设置为EDOM。函数的返回值是依实现而定的。
当返回值太大而超出了double的数值范围时,函数返回宏值HUGE_VAL,并且设置变量errno为ERANGE来表示溢出。如果值太小以至于无法表示为double,则函数返回0。在这种情况下,errno是否被设置为ERANGE是依实现而定。
errno,EDOM,和ERANGE在头文件errno.h中定义。
注意在所有没有定义域限制的情形(即默认情况)下,参数的值被double类型的最大值和最小值所限制。
#include <stdio.h>
#include <math.h>
/*
=========================================================
time: 2017年1月24日11:29:21
objective: test C language's head file of <math.h>
version: Microsoft Visual C++
author: ChenFei
remark: 日文system,,有些字没法打,要用拼音代替
=========================================================
*/
int main(void)
{
double a = 10;
double b = 3;
double c;
c = pow(a, b); // a的b 次方 double pow(double x, double y);
printf("%f\n",c);
double d;
d = fmod(a,b); // a/b 的余数 double fmod(double x, double y);
printf("%f\n",d);
double e;
e = sqrt(a); // a 的平方根 double sqrt(double x, double y);
printf("%f\n",e);
double f;
f = exp(a); // exp:自然dui数 e yu等于 2.718282
printf("%f\n",f); // exp(a) -> e的 a次方 double exp(double x, double y);
double g, h;
g = log(a); // e的 g次方 = a,求g (求 以e wei底 a 的 dui数) double log(double x);
h = log10(a); // 10的 h次方 = a,求h (求 以10 wei底 a 的 dui数) double log10(double x);
printf("%f\n",g);
printf("%f\n",h);
double i, j;
i = ceil(a); // 向上舍入:i >= a ,求整数i,返回double type。(jin一法) double ceil(double x);
j = floor(11.1); // 向下舍入:j <= a ,求整数j,返回double type。(去尾法) double florr(double x);
printf("%f\n",i); // %d 无效 == 0
printf("%f\n",j);
double k;
k = fabs(a); // k = |a| double fabs(double x);
printf("%f\n",k);
double l;
l = ldexp(a, 1); // l = a * 2 的 1次方 double ldexp(double x, int n);
printf("%f\n",l);
double m;
int aa;
m = frexp(a, &aa); // a = m * 2^aa 求m double frexp(double x, int* exp);
printf("%f,%d\n",m,aa);
double n;
double ba;
n = modf(-2.02, &ba); // 分解-2.02,n wei小数部分,ba wei整数部分 double modf(double x, double* ip);
printf("%f,%f\n",n,ba);
//正弦 余弦 正切
double sin(double x);
double cos(double x);
double tan(double x);
//反正弦 反余弦 反正切1 反正切2
double asin(double x);
double acos(double x);
double atan(double x);
double atan2(double y, double x);
//双曲正弦 双曲余弦 双曲正切
double sinh(double x);
double cosh(double x);
double tanh(double x);
return 0;
}