头文件math.h包含了函数库中部分数学函数的声明。这些函数的返回值以及大多数参数都是double类型。
double sin( double angle );
double cos( double angle );
double tan( double angle );
double asin( double value );
double acos( double value );
double atan( double value );
double atan2( double x, double y );
sin、cos和tan函数的参数是用弧度表示的角度,这些函数分别返回这个角度的正弦、余弦和正切值。
asin、acos和atan函数分别返回反正弦、反余弦和反正切值。如果asin和acos的参数不在-1和1之间,就会出现一个定义域错误。
atan2函数返回表达式y/x的反正切值,并使用这两个参数的符号来决定结构位于哪个象限。
double sinh( double angle );
double cosh( double angle );
double tanh( double angle );
这些函数分别返回双曲正弦、双曲余弦和双曲正切值。每个函数的参数都是用弧度表示的角度。
double exp( double x );
double log( double x );
double log10( double x );
exp函数返回e值的x次幂,也就是e^x。
log函数返回x以e为底的对数,也就是自然对数。
log10函数返回x以10为底的对数。
double frexp( double value, int *exponent );
double ldexp( double fraction, int exponent );
double modf( double value, double *ipart );
frexp函数计算一个指数(exponent)和小数(fractioin):value=fraction×2^exponent,其中0.5≤fraction<1。exponent是一个整数。exponent存储于第二个参数所指向的内存位置,函数返回fraction的值。
ldexp函数的返回值是fraction×2^exponent。
modf函数把一个浮点值分成整数和小数两部分,每个部分都具有和原值一样的符号。整数部分以double类型存储于第2个参数所指向的内存位置,小数部分作为函数的返回值返回。
double pow( double x,double y);
double sqrt( double x);
pow函数返回x^y的值。
sqrt函数返回其参数的平方根。
double floor ( double x);
double ceil( double x );
double fabs( double x );
double fmod( double x, double y );
floor函数返回不大于其参数的最大整数值,即向零取整
ceil函数返回不小于其参数的最小整数值,即向无穷取整。
fabs函数返回其参数的绝对值。
fmod函数返回x除以y所产生的余数。
double atof( char const *string );
double strtod( char const *string, char **unused );
atof函数把除了前导空白字符外后面的字符转换为一个double值,并忽略非法缀尾字符。
strtod函数使用方法和atof类似。第二个参数unused如果不是NULL,可以保存被转换后的字符串后面的第一个字符的指针。
参考资料:
Reek K A, 徐波. C 和指针[M]. 人民邮电出版社, 2008.