複素数オブジェクト
Pythonの複素数オブジェクトは、C APIから見たときに2つの異なるタイプとして実装されます。1つはPythonプログラムに公開されるPythonオブジェクトであり、もう1つは実際の複素数の値を表すC構造です。 APIは、両方を操作するための関数を提供します。
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 表現を使用して、2つの複素数の合計を返します。
- Py_complex _Py_c_diff(Py_complex left, Py_complex right)
- C Py_complex 表現を使用して、2つの複素数の差を返します。
- Py_complex _Py_c_neg(Py_complex complex)
- C Py_complex 表現を使用して、複素数 complex の否定を返します。
- Py_complex _Py_c_prod(Py_complex left, Py_complex right)
- C Py_complex 表現を使用して、2つの複素数の積を返します。
- Py_complex _Py_c_quot(Py_complex dividend, Py_complex divisor)
C Py_complex 表現を使用して、2つの複素数の商を返します。
除数がnullの場合、このメソッドはゼロを返し、
errno
をEDOM
に設定します。
- Py_complex _Py_c_pow(Py_complex num, Py_complex exp)
C Py_complex 表現を使用して、 exp による num のべき乗を返します。
num がnullで、 exp が正の実数でない場合、このメソッドはゼロを返し、
errno
をEDOM
に設定します。
Pythonオブジェクトとしての複素数
- type PyComplexObject
- PyObject のこのサブタイプは、Pythonの複素数オブジェクトを表します。
- PyTypeObject PyComplex_Type
- PyTypeObject のこのインスタンスは、Pythonの複素数型を表します。 Pythonレイヤーの complex と同じオブジェクトです。
- int PyComplex_Check(PyObject *p)
- 引数が PyComplexObject または PyComplexObject のサブタイプである場合はtrueを返します。
- int PyComplex_CheckExact(PyObject *p)
- 引数が PyComplexObject であるが、 PyComplexObject のサブタイプではない場合、trueを返します。
- PyObject *PyComplex_FromCComplex(Py_complex v)
- C Py_complex 値から新しいPython複素数オブジェクトを作成します。
- PyObject *PyComplex_FromDoubles(double real, double imag)
- real および imag から新しい PyComplexObject オブジェクトを返します。
- double PyComplex_RealAsDouble(PyObject *op)
- op の実数部をC
double
として返します。
- double PyComplex_ImagAsDouble(PyObject *op)
- op の虚数部をC
double
として返します。
- Py_complex PyComplex_AsCComplex(PyObject *op)
複素数 op の Py_complex 値を返します。
op がPythonの複素数オブジェクトではなく、
__complex__()
メソッドがある場合、このメソッドが最初に呼び出されて、 op がPythonの複素数オブジェクトに変換されます。 失敗すると、このメソッドは-1.0
を実際の値として返します。