複素数オブジェクト¶
-
type PyComplexObject¶
この
PyObjectのサブタイプは Python の複素数型を表現します。-
Py_complex cval¶
C の
Py_complex表現による複素数の値。バージョン 3.15 で非推奨、バージョン 3.20 で削除予定: Python の複素数と C の
Py_complex表現を相互に変換するには、PyComplex_AsCComplex()とPyComplex_FromCComplex()を使ってください。
-
Py_complex cval¶
-
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_FromDoubles(double real, double imag)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
real と imag から新しい
PyComplexObjectオブジェクトを作成して返します。 エラーの場合は例外を設定してNULLを返します。
-
double PyComplex_RealAsDouble(PyObject *op)¶
- 次に属します: Stable ABI.
op の実数部分を C の double 型で返します。
op が Python の複素数オブジェクトでなく、
__complex__()メソッドを持つ場合は、まずこのメソッドを呼び出し、op を Python の複素数オブジェクトに変換します。__complex__()が定義されていなければ、代わりにPyFloat_AsDouble()を呼び出し、その結果を返します。失敗すると、例外を設定して
-1.0を返します。 そのため、エラーの有無を確認するにはPyErr_Occurred()を呼び出してください。バージョン 3.13 で変更: 利用可能なら
__complex__()を使うようになりました。
-
double PyComplex_ImagAsDouble(PyObject *op)¶
- 次に属します: Stable ABI.
op の虚数部分を C の double 型で返します。
op が Python の複素数オブジェクトでなく、
__complex__()メソッドを持つ場合は、まずこのメソッドを呼び出し、op を Python の複素数オブジェクトに変換します。__complex__()が定義されていなければ、代わりにPyFloat_AsDouble()を呼び出し、成功時に0.0を返します。失敗すると、例外を設定して
-1.0を返します。 そのため、エラーの有無を確認するにはPyErr_Occurred()を呼び出してください。バージョン 3.13 で変更: 利用可能なら
__complex__()を使うようになりました。
-
type Py_complex¶
この C 構造体は、Python の複素数オブジェクトをエクスポートする形式を定義します。
構造体は次のように定義されています。
typedef struct { double real; double imag; } Py_complex;
-
PyObject *PyComplex_FromCComplex(Py_complex v)¶
- 戻り値: 新しい参照。
C の
Py_complex値から、新しい Python の複素数オブジェクトを作成します。 エラーの場合は例外を設定してNULLを返します。
-
Py_complex PyComplex_AsCComplex(PyObject *op)¶
複素数 op の値を
Py_complexとして返します。op が Python の複素数オブジェクトでなく、
__complex__()メソッドを持つ場合は、まずこのメソッドを呼び出し、op を Python の複素数オブジェクトに変換します。__complex__()が定義されていなければ、代わりに__float__()を使います。__float__()も定義されていなければ、代わりに__index__()を使います。失敗すると、例外を設定し、
realを-1.0にしたPy_complexを返します。 そのため、エラーの有無を確認するにはPyErr_Occurred()を呼び出してください。バージョン 3.8 で変更: 可能であれば
__index__()を使うようになりました。
C 構造体としての複素数¶
この API は、Py_complex 表現を使って複素数を扱う関数も提供します。
これらの構造体を引数として受け取り、結果として返す関数は、ポインタを介して参照するのではなく、値渡し を行う点に注意してください。
これらの関数は Python 3.15 以降、ソフト非推奨 です。 新しいコードでは、複素数演算にこの API を使うのは避けてください。 代わりに 数値プロトコル の API を使うか、double complex などのネイティブな複素数型を使ってください。
-
Py_complex _Py_c_sum(Py_complex left, Py_complex right)¶
二つの複素数の和を C の
Py_complex型で返します。バージョン 3.15 で非推奨.
-
Py_complex _Py_c_diff(Py_complex left, Py_complex right)¶
二つの複素数の差を C の
Py_complex型で返します。バージョン 3.15 で非推奨.
-
Py_complex _Py_c_neg(Py_complex num)¶
複素数 num の符号反転 C の
Py_complex型で返します。バージョン 3.15 で非推奨.
-
Py_complex _Py_c_prod(Py_complex left, Py_complex right)¶
二つの複素数の積を C の
Py_complex型で返します。バージョン 3.15 で非推奨.
-
Py_complex _Py_c_quot(Py_complex dividend, Py_complex divisor)¶
二つの複素数の商を C の
Py_complex型で返します。divisor がゼロの場合、この関数はゼロを返し、
errnoにEDOMを設定します。バージョン 3.15 で非推奨.
-
Py_complex _Py_c_pow(Py_complex num, Py_complex exp)¶
num の exp 乗を、C の
Py_complex表現で返します。num がゼロで、exp が正の実数でない場合、この関数はゼロを返し、
errnoにEDOMを設定します。オーバーフロー時は
errnoにERANGEを設定します。バージョン 3.15 で非推奨.
-
double _Py_c_abs(Py_complex num)¶
複素数 num の絶対値を返します。
オーバーフロー時は
errnoにERANGEを設定します。バージョン 3.15 で非推奨.