名前空間
変種
操作

log2, log2f, log2l

From cppreference.com
< c‎ | numeric‎ | math
 
 
 
共通の数学関数
関数
基本的な数学関数
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
最大/最小演算
(C99)
(C99)
指数関数
(C23)
(C99)
(C99)
(C23)
(C23)

log2
(C99)
(C99)(C23)
(C23)
(C23)
べき乗関数
(C99)
(C23)
(C23)

(C99)
(C23)
(C23)
三角関数と双曲線関数
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
最も近い整数浮動小数点数
(C99)(C99)(C99)
(C99)

(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
浮動小数点操作
(C99)(C99)
(C99)(C23)
(C99)
縮小演算
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
量子および量子指数
Decimal再エンコーディング関数
総順序およびペイロード関数
分類
(C99)
(C99)
(C99)
(C23)
誤差関数とガンマ関数
(C99)
(C99)
(C99)
(C99)
マクロ定数
特殊な浮動小数点値
(C99)(C23)
引数と戻り値
エラーハンドリング
高速演算インジケータ
 
ヘッダー <math.h> で定義
float       log2f( float arg );
(1) (C99以降)
double      log2( double arg );
(2) (C99以降)
long double log2l( long double arg );
(3) (C99以降)
ヘッダー <tgmath.h> で定義
#define log2( arg )
(4) (C99以降)
1-3) 引数argの底2対数値を計算します。
4) 型汎用マクロ: argの型がlong doubleの場合、log2lが呼び出されます。そうでない場合、argの型が整数型またはdoubleの場合、log2が呼び出されます。それ以外の場合、log2fが呼び出されます。

目次

[編集] パラメータ

arg - 浮動小数点値

[編集] 戻り値

エラーが発生しなかった場合、argの底-2対数値(log2(arg)またはlb(arg))が返されます。

領域エラーが発生した場合、実装定義の値が返される (サポートされている場合はNaN)。

極値エラーが発生した場合、-HUGE_VAL-HUGE_VALF、または-HUGE_VALLが返されます。

[編集] エラー処理

エラーは math_errhandling で指定されたとおりに報告されます。

argが負の場合、定義域エラーが発生します。

argがゼロの場合、極値エラーが発生する可能性があります。

実装がIEEE浮動小数点算術 (IEC 60559) をサポートしている場合、

  • 引数が±0の場合、-∞が返され、FE_DIVBYZEROが設定されます。
  • 引数が1の場合、+0が返されます。
  • 引数が負の場合、NaNが返され、FE_INVALIDが設定されます。
  • 引数が+∞の場合、+∞が返されます。
  • 引数がNaNの場合、NaNが返されます。

[編集] 注意

整数argの場合、二進対数は入力における最上位の1ビットのゼロベースのインデックスとして解釈できます。

[編集]

#include <stdio.h>
#include <math.h>
#include <float.h>
#include <errno.h>
#include <fenv.h>
// #pragma STDC FENV_ACCESS ON
int main(void)
{
    printf("log2(65536) = %f\n", log2(65536));
    printf("log2(0.125) = %f\n", log2(0.125));
    printf("log2(0x020f) = %f (highest set bit is in position 9)\n", log2(0x020f));
    printf("base-5 logarithm of 125 = %f\n", log2(125)/log2(5));
    // special values
    printf("log2(1) = %f\n", log2(1));
    printf("log2(+Inf) = %f\n", log2(INFINITY));
    //error handling
    errno = 0; feclearexcept(FE_ALL_EXCEPT);
    printf("log2(0) = %f\n", log2(0));
    if(errno == ERANGE) perror("    errno == ERANGE");
    if(fetestexcept(FE_DIVBYZERO)) puts("    FE_DIVBYZERO raised");
}

実行結果の例

log2(65536) = 16.000000
log2(0.125) = -3.000000
log2(0x020f) = 9.041659 (highest set bit is in position 9)
base-5 logarithm of 125 = 3.000000
log2(1) = 0.000000
log2(+Inf) = inf
log2(0) = -inf
    errno == ERANGE: Numerical result out of range
    FE_DIVBYZERO raised

[編集] 参照

  • C17標準 (ISO/IEC 9899:2018)
  • 7.12.6.10 The log2 functions (p: 179)
  • 7.25 型総称数学関数 <tgmath.h> (p: 272-273)
  • F.10.3.10 The log2 functions (p: 381)
  • C11標準 (ISO/IEC 9899:2011)
  • 7.12.6.10 The log2 functions (p: 246)
  • 7.25 型総称数学関数 <tgmath.h> (p: 373-375)
  • F.10.3.10 The log2 functions (p: 522)
  • C99標準 (ISO/IEC 9899:1999)
  • 7.12.6.10 The log2 functions (p: 226)
  • 7.22 型総称数学関数 <tgmath.h> (p: 335-337)
  • F.9.3.10 The log2 functions (p: 459)

[編集] 関連項目

(C99)(C99)
自然(底-e)対数を計算する (ln(x))
(関数) [編集]
常用(底-10)対数を計算する (log10(x))
(関数) [編集]
(C99)(C99)(C99)
指定された数に1を加えた数の自然(底-e)対数を計算する (ln(1+x))
(関数) [編集]
(C99)(C99)(C99)
指定されたべき乗の2を計算する (2x)
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)