浮動小数点オブジェクト
**********************

type PyFloatObject

   この "PyObject" のサブタイプは Python の浮動小数点オブジェクトを表
   します。

PyTypeObject PyFloat_Type
    * 次に属します: Stable ABI.*

   この "PyTypeObject" のインスタンスは Python の浮動小数点型を表しま
   す。 Python レベルの "float" と同じオブジェクトです。

int PyFloat_Check(PyObject *p)

   引数が "PyFloatObject" か "PyFloatObject" のサブタイプであるときに
   真を返します。この関数は常に成功します。

int PyFloat_CheckExact(PyObject *p)

   引数が "PyFloatObject" であるが "PyFloatObject" のサブタイプでない
   ときに真を返します。この関数は常に成功します。

PyObject *PyFloat_FromString(PyObject *str)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.*

   *str* の文字列値をもとに "PyFloatObject" オブジェクトを生成します。
   失敗すると "NULL" を返します。

PyObject *PyFloat_FromDouble(double v)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.*

   *v* から "PyFloatObject" オブジェクトを生成して返します。 失敗する
   と "NULL" を返します。

double PyFloat_AsDouble(PyObject *pyfloat)
    * 次に属します: Stable ABI.*

   "pyfloat" の値を C の double で返します。 "pyfloat" が Python の浮
   動小数点オブジェクトでなく、"__float__()" メソッドを持つ場合は、ま
   ずそのメソッドを呼び出して "pyfloat" を float に変換します。
   "__float__()" が定義されていなければ "__index__()" を使います。 失
   敗した場合は "-1.0" を返すので、"PyErr_Occurred()" を呼び出してエラ
   ーの有無を確認する必要があります。

   バージョン 3.8 で変更: 可能であれば "__index__()" を使うようになり
   ました。

double PyFloat_AS_DOUBLE(PyObject *pyfloat)

   *pyfloat* の指す値を、 C の double 型表現で返しますが、エラーチェッ
   クを行いません。

PyObject *PyFloat_GetInfo(void)
    *戻り値: 新しい参照。** 次に属します: Stable ABI.*

   float の精度、最小値、最大値に関する情報を含む structseq インスタン
   スを返します。これは、 "float.h" ファイルの薄いラッパーです。

double PyFloat_GetMax()
    * 次に属します: Stable ABI.*

   表現できる最大の有限の浮動小数点数 *DBL_MAX* を C の double として
   返します。

double PyFloat_GetMin()
    * 次に属します: Stable ABI.*

   float の正規化された最小の正の値 *DBL_MIN* を C の double 型で返し
   ます。

Py_INFINITY

   正の無限大を表す double 型の定数式に展開されるマクロです。

   C11 標準の "<math.h>" ヘッダの "INFINITY" マクロと同等です。

   バージョン 3.15 で ソフト非推奨 <Soft deprecated>.

Py_NAN

   静かな非数 (qNaN) を表す double 型の定数式に展開されるマクロです。

   ほとんどのプラットフォームでは、C11 標準の "<math.h>" ヘッダの
   "NAN" マクロと同等です。

Py_HUGE_VAL

   "INFINITY" と同等です。

   バージョン 3.14 で ソフト非推奨 <Soft deprecated>.

Py_MATH_E

   "math.e" 定数の定義です (double 型の精度)。

Py_MATH_El

   "e" 定数の高精度 (long double) の定義です。

   バージョン 3.15 で非推奨、バージョン 3.20 で削除予定.

Py_MATH_PI

   "math.pi" 定数の定義です (double 型の精度)。

Py_MATH_PIl

   "pi" 定数の高精度 (long double) の定義です。

   バージョン 3.15 で非推奨、バージョン 3.20 で削除予定.

Py_MATH_TAU

   "math.tau" 定数の定義です (double 型の精度)。

   Added in version 3.6.

Py_RETURN_NAN

   関数から "math.nan" を返します。

   ほとんどのプラットフォームでは、"return PyFloat_FromDouble(NAN)" と
   同等です。

Py_RETURN_INF(sign)

   "sign" の符号に応じて、関数から "math.inf" または "-math.inf" を返
   します。

   ほとんどのプラットフォームでは、次と同等です。

      return PyFloat_FromDouble(copysign(INFINITY, sign));

Py_IS_FINITE(X)

   指定された浮動小数点数 "X" が有限、つまり正規化数、非正規化数、ゼロ
   のいずれかであり、無限大や NaN でなければ "1" を返します。 それ以外
   の場合は "0" を返します。

   バージョン 3.14 で ソフト非推奨 <Soft deprecated>: 代わりに
   "isfinite" を使ってください。

Py_IS_INFINITY(X)

   指定された浮動小数点数 "X" が正または負の無限大の場合に "1" を返し
   ます。 それ以外の場合は "0" を返します。

   バージョン 3.14 で ソフト非推奨 <Soft deprecated>: 代わりに "isinf"
   を使ってください。

Py_IS_NAN(X)

   指定された浮動小数点数 "X" が非数 (NaN) の場合に "1" を返します。
   それ以外の場合は "0" を返します。

   バージョン 3.14 で ソフト非推奨 <Soft deprecated>: 代わりに "isnan"
   を使ってください。


パック関数とアンパック関数
==========================

パック関数とアンパック関数は、浮動小数点数をバイト列として格納するため
の、効率的でプラットフォームに依存しない方法を提供します。 パック関数
は C の double からバイト列を作成し、アンパック関数はそのバイト列から
C の double を作成します。 接尾辞 (2、4、8) はバイト列のバイト数を表し
ます。

* 2 バイト形式は IEEE 754 binary16 半精度形式です。

* 4 バイト形式は IEEE 754 binary32 単精度形式です。

* 8 バイト形式は IEEE 754 binary64 倍精度形式です。

32 ビットモードの x86 システムなど、一部のプラットフォームでは、アンパ
ック時に NaN の種類が保持されないことがあります (シグナリング NaN が静
かな NaN になります)。

double 型は IEEE 754 binary64 倍精度形式であると仮定しています。 そう
でない場合の動作は、残念ながら一部が偶然に左右されます。 IEEE 形式でな
く、IEEE 754 よりも精度やダイナミックレンジが大きいプラットフォームで
は、パックできない値があります。 逆に精度やダイナミックレンジが小さい
プラットフォームでは、アンパックできない値があります。 INF や NaN のよ
うな特殊な数値 (そのプラットフォームに存在する場合) のパックは、正しく
処理されないことがあります。 また、IEEE の INF や NaN を含むバイト列を
アンパックしようとすると例外が発生することがあります。

Added in version 3.11.


パック関数
----------

パック関数は "p" を先頭として 2、4、8 バイトを書き込みます。 "le" は
int 型の引数で、リトルエンディアン形式 (指数部が末尾の "p+1"、"p+3"、
または "p+6" と "p+7" にある形式) にする場合は非ゼロ、ビッグエンディア
ン形式 (指数部が先頭の "p" にある形式) にする場合はゼロを指定します。
ネイティブのエンディアンを選ぶには "PY_LITTLE_ENDIAN" 定数を使ってくだ
さい。 この定数は、ビッグエンディアンのプロセッサでは "0"、リトルエン
ディアンのプロセッサでは "1" です。

戻り値は、成功した場合は "0"、エラーの場合は "-1" です (例外も設定され
、通常は "OverflowError" です)。

int PyFloat_Pack2(double x, char *p, int le)

   C の double を IEEE 754 binary16 半精度形式にパックします。

int PyFloat_Pack4(double x, char *p, int le)

   C の double を IEEE 754 binary32 単精度形式にパックします。

int PyFloat_Pack8(double x, char *p, int le)

   C の double を IEEE 754 binary64 倍精度形式にパックします。


アンパック関数
--------------

アンパック関数は "p" を先頭として 2、4、8 バイトを読み取ります。 "le"
は int 型の引数で、バイト列がリトルエンディアン形式 (指数部が末尾の
"p+1"、"p+3"、または "p+6" と "p+7" にある形式) なら非ゼロ、ビッグエン
ディアン形式 (指数部が先頭の "p" にある形式) ならゼロを指定します。 ネ
イティブのエンディアンを選ぶには "PY_LITTLE_ENDIAN" 定数を使ってくださ
い。 この定数は、ビッグエンディアンのプロセッサでは "0"、リトルエンデ
ィアンのプロセッサでは "1" です。

戻り値は、アンパックした double です。 エラーの場合は "-1.0" を返し、
"PyErr_Occurred()" が真になります (例外も設定され、通常は
"OverflowError" です)。

double PyFloat_Unpack2(const char *p, int le)

   IEEE 754 binary16 半精度形式を C の double にアンパックします。

double PyFloat_Unpack4(const char *p, int le)

   IEEE 754 binary32 単精度形式を C の double にアンパックします。

double PyFloat_Unpack8(const char *p, int le)

   IEEE 754 binary64 倍精度形式を C の double にアンパックします。
