Man page - frexp(3)

Packages contains this manual

Available languages:

en fr pt_BR es pl ja ru ro

Manual

FREXP

名 前
書 式
説 明
返 り 値
エ ラ ー
属 性
準 拠

プ ロ グ ラ ム の ソ ー ス
関 連 項 目
こ の 文 書 に つ い て

名 前

frexp, frexpf, frexpl - 浮 動 小 数 点 実 数 を 小 数 成 分 と 整 数 成 分 に 変 換 す る

書 式

#include <math.h>

double frexp(double x , int * exp );
float frexpf(float
x , int * exp );
long double frexpl(long double
x , int * exp );

-lm で リ ン ク す る 。

glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 ( feature_test_macros (7) 参 照 ):

frexpf (), frexpl ():

_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
|| /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

説 明

こ れ ら の 関 数 は 浮 動 小 数 点 実 数 x を 正 規 化 小 数 と 指 数 に 分 解 し 、 指 数 を * exp に 格 納 す る 。

返 り 値

こ れ ら の 関 数 は 正 規 化 小 数 を 返 す 。 引 数 x が ゼ ロ で な い 場 合 、 こ の 正 規 化 小 数 は x に 2 の 累 乗 を 乗 じ た も の で あ り 、 そ の 絶 対 値 は 常 に 1/2 以 上 1 未 満 、 つ ま り [0.5,1) と な る 。

x が ゼ ロ の 場 合 、 正 規 化 小 数 は ゼ ロ に な り * exp に は ゼ ロ が 格 納 さ れ る 。

x が NaN の 場 合 、 NaN が 返 さ れ る 。 *exp の 値 は 不 定 で あ る 。

x が 正 の 無 限 大 (負 の 無 限 大 ) の 場 合 、 正 の 無 限 大 (負 の 無 限 大 ) が 返 さ れ る 。 *exp の 値 は 不 定 で あ る 。

エ ラ ー

エ ラ ー は 発 生 し な い 。

属 性

こ の 節 で 使 用 さ れ て い る 用 語 の 説 明 に つ い て は 、 attributes (7) を 参 照 。

Image grohtml-20855-1.png

準 拠

C99, POSIX.1-2001, POSIX.1-2008.

double 版 の 関 数 は SVr4, 4.3BSD, C89 に も 準 拠 し て い る 。

こ の プ ロ グ ラ ム を 実 行 す る と 以 下 の よ う な 結 果 と な る :

$ ./a.out 2560
frexp(2560, &e) = 0.625: 0.625 * 2^12 = 2560
$ ./a.out -4
frexp(-4, &e) = -0.5: -0.5 * 2^3 = -4

プ ロ グ ラ ム の ソ ー ス

#include <math.h>
#include <float.h>
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[])
{
double x, r;
int exp;

x = strtod(argv[1], NULL);
r = frexp(x, &exp);

printf("frexp(%g, &e) = %g: %g * %d^%d = %g\n",
x, r, r, FLT_RADIX, exp, x);
exit(EXIT_SUCCESS);
}

関 連 項 目

ldexp (3), modf (3)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。