名前空間
変種
操作

nan, nanf, nanl, nand32, nand64, nand128

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

(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       nanf( const char* arg );
(1) (C99以降)
double      nan( const char* arg );
(2) (C99以降)
long double nanl( const char* arg );
(3) (C99以降)
_Decimal32  nand32( const char* arg );
(4) (C23以降)
_Decimal64  nand64( const char* arg );
(5) (C23以降)
_Decimal128 nand128( const char* arg );
(6) (C23以降)

引数argで指定された実装定義の文字列を、対応する非数(Quiet NaN)の値に変換します。これは、適切な解析関数strtoXを呼び出すのと同じです。

  • nan("n-char-sequence")という呼び出しでは、n-char-sequenceが数字、ラテン文字、アンダースコアのシーケンスである場合、/*strtoX*/("NAN(n-char-sequence)", (char**)NULL);という呼び出しと同等です。
  • nan("")という呼び出しは、/*strtoX*/("NAN()", (char**)NULL);という呼び出しと同等です。
  • nan("string")という呼び出しでは、stringn-char-sequenceでも空文字列でもない場合、/*strtoX*/("NAN", (char**)NULL);という呼び出しと同等です。
1) 解析関数はstrtofです。
2) 解析関数はstrtodです。
3) 解析関数はstrtoldです。
4) 解析関数はstrtod32です。
5) 解析関数はstrtod64です。
6) 解析関数はstrtod128です。

10進浮動小数点値を返す関数は、実装が__STDC_IEC_60559_DFP__を事前に定義している(つまり、実装が10進浮動小数点数をサポートしている)場合にのみ宣言されます。

(C23以降)

目次

[編集] 引数

arg - NaNの内容を識別するナロー文字文字列

[編集] 戻り値

識別文字列argに対応する非数(Quiet NaN)の値。実装が非数(Quiet NaN)をサポートしていない場合はゼロ。

実装がIEEE浮動小数点演算(IEC 60559)をサポートしている場合、非数(Quiet NaN)もサポートします。

[編集] エラー処理

この関数は、math_errhandlingで指定されたエラー条件のいずれにも影響されません。

[編集]

#include <stdio.h>
#include <math.h>
#include <stdint.h>
#include <inttypes.h>
#include <string.h>
 
int main(void)
{
    double f1 = nan("1");
    uint64_t f1n; memcpy(&f1n, &f1, sizeof f1);
    printf("nan(\"1\")   = %f (%" PRIx64 ")\n", f1, f1n);
 
    double f2 = nan("2");
    uint64_t f2n; memcpy(&f2n, &f2, sizeof f2);
    printf("nan(\"2\")   = %f (%" PRIx64 ")\n", f2, f2n);
 
    double f3 = nan("0xF");
    uint64_t f3n; memcpy(&f3n, &f3, sizeof f3);
    printf("nan(\"0xF\") = %f (%" PRIx64 ")\n", f3, f3n);
}

実行結果の例

nan("1")   = nan (7ff8000000000001)
nan("2")   = nan (7ff8000000000002)
nan("0xF") = nan (7ff800000000000f)

[編集] 参考文献

  • C17標準 (ISO/IEC 9899:2018)
  • 7.12.11.2 The nan functions (p: 186-187)
  • F.10.8.2 The nan functions (p: 386)
  • C11標準 (ISO/IEC 9899:2011)
  • 7.12.11.2 The nan functions (p: 256)
  • F.10.8.2 The nan functions (p: 529)
  • C99標準 (ISO/IEC 9899:1999)
  • 7.12.11.2 The nan functions (p: 237)
  • F.9.8.2 The fabs functions (p: 465)

[編集] 関連項目

(C99)
与えられた数値が NaN かチェックする
(関数マクロ) [編集]
(C99)
float型のquiet NaNに評価される
(マクロ定数) [編集]
nanf, nan, nanlC++ドキュメント
English 日本語 中文(简体) 中文(繁體)