標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
XPG4.2 |
両方 | logbf()、logbl() の場合は z/OS® V1R7 |
#define _XOPEN_SOURCE_EXTENDED 1
#include <math.h>
double logb(double x);
#define _ISOC99_SOURCE
#include <math.h>
float logbf(float x);
long double logbl(long double x);
#define _TR1_C99
#include <math.h>
float logb(float x);
long double logb(long double x);
関数 | Hex | IEEE |
---|---|---|
logb | X | X |
logbf | X | X |
logbl | X | X |
正常に実行された場合、logb() は x の指数を戻します。
logb() は、x が 0.0 だと失敗します。その場合、logb() は -HUGE_VAL を戻し、errno に EDOM を設定します。
/*
* This program illustrates the use of logb() function
*
*/
#define _ISOC99_SOURCE
#include <math.h>
#include <float.h> /* Needed for FLT_RADIX */
#include <stdio.h>
void main() {
int i;
union {
double number;
unsigned char uchars [sizeof(double)];
} dblval;
double logbx;
printf("Illustrates the logb() function");
#ifdef __BFP__
printf(" (IEEE version)¥n¥n");
#else
printf(" (HFP version)¥n¥n");
#endif
/* generate the smallest possible double number */
for (i=0; i<sizeof(double); i++)
dblval.uchars[i] = 0;
dblval.uchars[1] = 0x10;
logbx = logb(dblval.number);
printf("x = %g¥n",dblval.number);
printf("logb(x) = %f¥n¥n", logbx);
printf("pow(FLT_RADIX, logb(x) ) should equal x¥n");
printf("pow(%d,%f) = %g¥n",FLT_RADIX, logbx, pow(FLT_RADIX, logbx));
}
出力:
Illustrates the logb() function (IEEE version)
x = 2.22507e-308
logb(x) = -1022.000000
pow(FLT_RADIX, logb(x) ) should equal x
pow(2,-1022.000000) = 2.22507e-308