A.5 指数和对数函数
1.指数函数
C语言数学函数库中的指数函数包括exp()、exp2()、expm1()、frexp()和ldexp()。TurboC2.0没有提供exp2()和expm1()。
1)exp()函数的原型为:
说明:该函数用于计算指数ex的值。其浮点类型的函数形式为expf(),长双精度型的函数原型为expl()。如果参数x的值太大,函数调用时可能发生错误。
2)frexp()函数的原型为:
说明:该函数用于将双精度类型的实数value表示成x∗2∗exp的形式。如果参数value不是浮点数,函数的返回结果是不确定的。否则,函数返回值就是x的值,∗exp将返回一个整数值。如果函数调用成功,x是在[1/2,1)内的数值,也有可能是0。如果参数value为0,函数返回值和(∗exp)都是零。如果参数x的值太大,函数调用时可能发生错误。
3)ldexp()函数的原型为:
说明:该函数用于求解表达式(x∗2exp)的值。如果参数比较大,有可能调用时由于计算结果太大,导致数值溢出。
4)exp2()函数的原型为:
说明:该函数用于计算指数2x的值。如果参数x的值太大,函数调用时可能发生错误。
5)函数expm1的原型为:
说明:该函数用于计算表达式(ex-1)的值。如果参数x的值太大,函数调用时可能发生错误。
2.对数函数
数学函数库中的对数函数主要包括ilogb()、logb()、log()、log10()、loglp()、log2()、modf()、scalbn()和scalbln()。其中,Turbo C 2.0的函数库中没有提供ilogb()、logb()、loglp()、log2()、scalbn()和scalbln()。
1)ilogb()函数的原型为intilogb(double x);
说明:该函数和logb()函数差不多,只不过功能更完善。如果参数x等于0,函数调用时参数x自动转换为FP_ILOGB0;如果x是无限数,函数调用时参数x自动转换为INT_MAX;如果x是NAN,函数调用时参数x自动转换为FP_ILOGBNAN;其他情况时,就相当于调用函数logb()。注意:函数返回值是整数,具有自动取整的功能。如果x等于0,函数调用时有可能发生错误。
2)logb()函数的原型为:
说明:在调用logb(x)函数时,假定返回值是y,存在指数函数关系x=2y,在表达式中,x即和logb()参数x一致,logb(x)的返回值即是y。如果参数x等于零,函数调用时会发生错误。
3)log()函数的原型为
说明:该函数是以e为底的自然对数,返回值是表达式(logxe)的值。参数x为零时,函数调用时会发生错误。
4)log10()函数的原型为
说明:该函数是以10为底的对数计算。如果参数x为0,函数调用时会发生错误。
5)loglp()函数的原型为
说明:该函数用于计算表达式(loge(1+x))的值。如果参数为-1,函数调用时会发生错误。
6)log2()函数的原型为
说明:该函数是以2为底的对数计算。如果参数x为0,函数调用时会发生错误。
7)modf()函数的原型为
说明:对于浮点数value,函数调用结束后,浮点数的整数部分保留在(∗iptr)中,函数的返回值是浮点数的小数部分。
例A-2
例A-2的执行效果如图A-2所示
图A-2 例A-2的执行效果