A.5  指数和对数函数

A.5 指数和对数函数

1.指数函数

C语言数学函数库中的指数函数包括exp()、exp2()、expm1()、frexp()和ldexp()。TurboC2.0没有提供exp2()和expm1()。

1)exp()函数的原型为:

978-7-111-51399-5-Chapter18-5.jpg

说明:该函数用于计算指数ex的值。其浮点类型的函数形式为expf(),长双精度型的函数原型为expl()。如果参数x的值太大,函数调用时可能发生错误。

2)frexp()函数的原型为:

978-7-111-51399-5-Chapter18-6.jpg

说明:该函数用于将双精度类型的实数value表示成x∗2∗exp的形式。如果参数value不是浮点数,函数的返回结果是不确定的。否则,函数返回值就是x的值,∗exp将返回一个整数值。如果函数调用成功,x是在[1/2,1)内的数值,也有可能是0。如果参数value为0,函数返回值和(exp)都是零。如果参数x的值太大,函数调用时可能发生错误。

3)ldexp()函数的原型为:

978-7-111-51399-5-Chapter18-7.jpg

说明:该函数用于求解表达式(x2exp)的值。如果参数比较大,有可能调用时由于计算结果太大,导致数值溢出。

4)exp2()函数的原型为:

978-7-111-51399-5-Chapter18-8.jpg

说明:该函数用于计算指数2x的值。如果参数x的值太大,函数调用时可能发生错误。

5)函数expm1的原型为:

978-7-111-51399-5-Chapter18-9.jpg

说明:该函数用于计算表达式(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()函数的原型为:

978-7-111-51399-5-Chapter18-10.jpg

说明:在调用logb(x)函数时,假定返回值是y,存在指数函数关系x=2y,在表达式中,x即和logb()参数x一致,logb(x)的返回值即是y。如果参数x等于零,函数调用时会发生错误。

3)log()函数的原型为

978-7-111-51399-5-Chapter18-11.jpg

说明:该函数是以e为底的自然对数,返回值是表达式(logxe)的值。参数x为零时,函数调用时会发生错误。

4)log10()函数的原型为

978-7-111-51399-5-Chapter18-12.jpg

说明:该函数是以10为底的对数计算。如果参数x为0,函数调用时会发生错误。

5)loglp()函数的原型为

978-7-111-51399-5-Chapter18-13.jpg

说明:该函数用于计算表达式(loge(1+x)的值。如果参数为-1,函数调用时会发生错误。

6)log2()函数的原型为

978-7-111-51399-5-Chapter18-14.jpg

说明:该函数是以2为底的对数计算。如果参数x为0,函数调用时会发生错误。

7)modf()函数的原型为

978-7-111-51399-5-Chapter18-15.jpg

说明:对于浮点数value,函数调用结束后,浮点数的整数部分保留在(iptr)中,函数的返回值是浮点数的小数部分。

例A-2

978-7-111-51399-5-Chapter18-16.jpg

例A-2的执行效果如图A-2所示

978-7-111-51399-5-Chapter18-17.jpg

图A-2 例A-2的执行效果