این توان در داخل ماشین استفاده می شود و در مواقعی که بخش کسری عددی بین 1.0
و FLT_RADIX است برای نمایش مقدار ممیز شناور x بکار می رود. بطوریکه برای x مثبت:
x = significand * FLT_RADIX exponent
به طور کلی FLT_RADIX برابر 2 است، و مقدار بازگردانده شده توسط این تابع یکی کمتر از توان بدست آمده توسط frexp است. (این مساله به دلیل نرمال سازی متفاوت بخش کسری است چون بازه[1.0,2.0)
به جای [0.5,1.0)
استفاده شده است)
این تابع می تواند دو ثابت ماکروی زیررا برای نمایش حالت های خاص ذکر شده برگرداند:
macro | description |
---|---|
FP_ILOGB0 | x is zero |
FP_ILOGBNAN | x is NaN |
این ثوابت ماکرو در header مقابل تعریف می شوند: (<cmath>)
/* ilogb example */
#include <stdio.h>/* printf */
#include <math.h>/* ilogb */
int main ()
{
double param;
int result;
param = 10.0;
result = ilogb (param);
printf ("ilogb(%f) = %dn", param, result);
return 0;
}
پارامتر های ورودی
- x
- مقداری که می خواهیم ilogb آن برگردانده شود.
مقدار خروجی
اگر x نرمال باشد لگاریتم پایه FLT_RADIX x است.
اگر x غیر نرمال باشد مقدار بازگردانده شده همان مقداری است که با فرم نرمال شده (توان منفی) مطابقت دارد.
اگر x صفر باشد، FP_LOGB0 را بر می گرداند (مقدار خاصی که فقط توسط این تابع بازگردانده می شود در <cmath> تعریف شده است)
اگر x بینهایت باشد، INT_MAX را بر می گرداند.
اگر x برابر NaN باشد، FP_ILOGBNAN را بر می گرداند( مقدار خاصی که فقط توسط این تابع بازگردانده می شود در <cmath> تعریف شده است)
اگر اندازه نتیجه برای نمایش مقداری از نوع بازگشتی بیش از حد بزرگ باشد، تابع مقدار نامشخصی را بر می گرداند و خطای سرریز محدوده اتفاق می افتد.
مقدار صفر، بینهایت یا NaN برای x ممکن است باعث خطای دامنه یا خطای سرریز محدوده شود.
دیدگاهها