ldexp, ldexpf, ldexpl

浮動小数点数に整数である 2 の累乗を乗算します。

構文

double ldexp(
   double x,
   int exp
);
float ldexpf(
   float x,
   int exp
);
long double ldexpl(
   long double x,
   int exp
);
#define ldexp(X, INT) // Requires C11 or higher

float ldexp(
   float x,
   int exp
);  // C++ only
long double ldexp(
   long double x,
   int exp
);  // C++ only

パラメーター

x
浮動小数点値。

exp
整数の指数。

戻り値

成功した場合、関数は ldexp * 2expx値を返します。 オーバーフローが発生すると、符号xldexpに応じて +/- HUGE_VALerrno が返されます。値は ERANGE.

エラーの戻り値と考えられる値のerrno詳細については、「、、_doserrno、、_sys_errlist_sys_nerrを参照してくださいerrno

解説

C++ ではオーバーロードが可能であるため、ldexp または float 型を受け取る long double のオーバーロードを呼び出すことができます。 C プログラムでは、tgmath.h マクロを<使用してこの関数を呼び出さない限り、ldexp常に a と an doubleint受け取り、double.>

<tgmath.h>ldexp() マクロを使用する場合は、引数の型によって、この関数のどのバージョンが選択されるかが決定されます。 詳細については、「ジェネリック型数値演算」を参照してください。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください

必要条件

ルーチンによって返される値 C ヘッダー C++ ヘッダー
ldexp, ldexpf, ldexpl <math.h> <cmath>
ldexp マクロ <tgmath.h>

互換性の詳細については、「互換性」を参照してください。

// crt_ldexp.c

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

int main( void )
{
   double x = 4.0, y;
   int p = 3;

   y = ldexp( x, p );
   printf( "%2.1f times two to the power of %d is %2.1f\n", x, p, y );
}

出力

4.0 times two to the power of 3 is 32.0

関連項目

数学と浮動小数点のサポート
frexp
modf, modff, modfl