複素数オブジェクト¶
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.
The structure 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 の場合は、このメソッドはゼロを返し、
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¶
- 次に属します: 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)¶
- 戻り値: 新しい参照。
Create a new Python complex number object from a C
Py_complexvalue. ReturnNULLwith an exception set on error.
-
PyObject *PyComplex_FromDoubles(double real, double imag)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
Return a new
PyComplexObjectobject from real and imag. ReturnNULLwith an exception set on error.
-
double PyComplex_RealAsDouble(PyObject *op)¶
- 次に属します: Stable ABI.
op の実数部分を C の double 型で返します。
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 callPyFloat_AsDouble()and returns its result.Upon failure, this method returns
-1.0with an exception set, so one should callPyErr_Occurred()to check for errors.バージョン 3.13 で変更: Use
__complex__()if available.
-
double PyComplex_ImagAsDouble(PyObject *op)¶
- 次に属します: Stable ABI.
op の虚数部分を C の double 型で返します。
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 callPyFloat_AsDouble()and returns0.0on success.Upon failure, this method returns
-1.0with an exception set, so one should callPyErr_Occurred()to check for errors.バージョン 3.13 で変更: Use
__complex__()if available.
-
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
Py_complexwithrealset to-1.0and with an exception set, so one should callPyErr_Occurred()to check for errors.バージョン 3.8 で変更: 可能であれば
__index__()を使うようになりました。