複素数オブジェクト

Python の複素数オブジェクトは、C API 側から見ると二つの別個の型として実装されています: 一方は Python プログラムに対して公開されている Python のオブジェクトで、他方は実際の複素数値を表現する C の構造体です。API では、これら双方を扱う関数を提供しています。

C 構造体としての複素数

複素数の C 構造体を引数として受理したり、戻り値として返したりする関数は、ポインタ渡しを行うのではなく 値渡し を行うので注意してください。これは API 全体を通して一貫しています。

type Py_complex

The C structure which corresponds to the value portion of a Python complex number object. Most of the functions for dealing with complex number objects use structures of this type as input or output values, as appropriate. It is defined as:

typedef struct {
   double real;
   double imag;
} Py_complex;
Py_complex _Py_c_sum(Py_complex left, Py_complex right)

二つの複素数の和を C の Py_complex 型で返します。

Py_complex _Py_c_diff(Py_complex left, Py_complex right)

二つの複素数の差を C の Py_complex 型で返します。

Py_complex _Py_c_neg(Py_complex num)

複素数 num の符号反転 C の Py_complex 型で返します。

Py_complex _Py_c_prod(Py_complex left, Py_complex right)

二つの複素数の積を C の Py_complex 型で返します。

Py_complex _Py_c_quot(Py_complex dividend, Py_complex divisor)

二つの複素数の商を C の Py_complex 型で返します。

divisor が null の場合は、このメソッドはゼロを返し、 errnoEDOM をセットします。

Py_complex _Py_c_pow(Py_complex num, Py_complex exp)

指数 expnum 乗を C の Py_complex 型で返します。

num が null で exp が正の実数でない場合は、このメソッドはゼロを返し、 errnoEDOM をセットします。

Python オブジェクトとしての複素数型

type PyComplexObject

この PyObject のサブタイプは Python の複素数型を表現します。

PyTypeObject PyComplex_Type
次に属します: Stable ABI.

この PyTypeObject のインスタンスは Python の複素数型を表現します。 Pythonレイヤの complex と同じオブジェクトです。

int PyComplex_Check(PyObject *p)

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

int PyComplex_CheckExact(PyObject *p)

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

PyObject *PyComplex_FromCComplex(Py_complex v)
戻り値: 新しい参照。

Create a new Python complex number object from a C Py_complex value.

PyObject *PyComplex_FromDoubles(double real, double imag)
戻り値: 新しい参照。 次に属します: Stable ABI.

Return a new PyComplexObject object from real and imag.

double PyComplex_RealAsDouble(PyObject *op)
次に属します: Stable ABI.

op の実数部分を C の double 型で返します。

double PyComplex_ImagAsDouble(PyObject *op)
次に属します: Stable ABI.

op の虚数部分を C の double 型で返します。

Py_complex PyComplex_AsCComplex(PyObject *op)

複素数値 op から Py_complex 型を生成します。

If op is not a Python complex number object but has a __complex__() method, this method will first be called to convert op to a Python complex number object. If __complex__() is not defined then it falls back to __float__(). If __float__() is not defined then it falls back to __index__(). Upon failure, this method returns -1.0 as a real value.

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