بکندباز

تابع ‎ilogb()‎‎ در ‎C++‎

با استفاده ازFLT_RADIX به عنوان پایه لگاریتم، بخش صحیح لگاریتم  |x|را بر می گرداند.

این توان در داخل ماشین استفاده می شود و در مواقعی که بخش کسری عددی بین 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 ممکن است باعث خطای دامنه یا خطای سرریز محدوده شود.


اگر سوالی در رابطه با این تابع داری، می تونی توی بخش کامنت ها بپرسی:

backendbaz

مدیر وب سایت بکندباز

دیدگاه‌ها

*
*