複素数オブジェクト¶
Python の複素数オブジェクトは、C API 側から見ると二つの別個の型として実装されています: 一方は Python プログラムに対して公開されている Python のオブジェクトで、他方は実際の複素数値を表現する C の構造体です。API では、これら双方を扱う関数を提供しています。
C 構造体としての複素数¶
複素数の C 構造体を引数として受理したり、戻り値として返したりする関数は、ポインタ渡しを行うのではなく 値渡し を行うので注意してください。これは API 全体を通して一貫しています。
-
type
Py_complex
¶ Python 複素数オブジェクトの値の部分に対応する C の構造体です。複素数オブジェクトを扱うほとんどの関数は、この型の構造体を場合に応じて入力や出力として使います。構造体は以下のように定義されています:
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 の場合は、このメソッドはゼロを返し、
errno
にEDOM
をセットします。
-
Py_complex
_Py_c_pow
(Py_complex num, Py_complex exp)¶ 指数 exp の num 乗を C の
Py_complex
型で返します。num が null で exp が正の実数でない場合は、このメソッドはゼロを返し、
errno
にEDOM
をセットします。
Python オブジェクトとしての複素数型¶
-
PyTypeObject
PyComplex_Type
¶ - Part of the Stable ABI.
この
PyTypeObject
のインスタンスは Python の複素数型を表現します。 Pythonレイヤのcomplex
と同じオブジェクトです。
-
int
PyComplex_Check
(PyObject *p)¶ 引数が
PyComplexObject
かPyComplexObject
のサブタイプであるときに真を返します。この関数は常に成功します。
-
int
PyComplex_CheckExact
(PyObject *p)¶ 引数が
PyComplexObject
であるがPyComplexObject
のサブタイプでないときに真を返します。この関数は常に成功します。
-
PyObject *
PyComplex_FromCComplex
(Py_complex v)¶ - Return value: New reference.
C の
Py_complex
型から Python の複素数値を生成します。
-
PyObject *
PyComplex_FromDoubles
(double real, double imag)¶ - Return value: New reference. Part of the Stable ABI.
新たな
PyComplexObject
オブジェクトを real と imag から生成します。
-
double
PyComplex_RealAsDouble
(PyObject *op)¶ - Part of the Stable ABI.
op の実数部分を C の
double
型で返します。
-
double
PyComplex_ImagAsDouble
(PyObject *op)¶ - Part of the Stable ABI.
op の虚数部分を C の
double
型で返します。
-
Py_complex
PyComplex_AsCComplex
(PyObject *op)¶ 複素数値 op から
Py_complex
型を生成します。op が Python の複素数オブジェクトではないが、
__complex__()
メソッドを持っていた場合、このメソッドが最初に呼ばれ、 op が Python の複素数オブジェクトに変換されます。__complex__()
が定義されていない場合は、__float__()
にフォールバックされます。__float__()
が定義されていない場合は、__index__()
にフォールバックされます。 処理が失敗した場合は、このメソッドは実数の-1.0
を返します。バージョン 3.8 で変更: 可能であれば
__index__()
を使うようになりました。