複素数オブジェクト
******************

type PyComplexObject

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

   Py_complex cval

      The complex number value, using the C "Py_complex"
      representation.

      バージョン 3.15 で非推奨、バージョン 3.20 で削除予定: Use
      "PyComplex_AsCComplex()" and "PyComplex_FromCComplex()" to
      convert a Python complex number to/from the C "Py_complex"
      representation.

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.*

   Return a new "PyComplexObject" object from *real* and *imag*.
   Return "NULL" with 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 call "PyFloat_AsDouble()" and returns
   its result.

   Upon failure, this method returns "-1.0" with an exception set, so
   one should call "PyErr_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 call "PyFloat_AsDouble()" and returns
   "0.0" on success.

   Upon failure, this method returns "-1.0" with an exception set, so
   one should call "PyErr_Occurred()" to check for errors.

   バージョン 3.13 で変更: Use "__complex__()" if available.

type Py_complex

   This C structure defines an export format for a Python complex
   number object.

   double real
   double imag

   The structure is defined as:

      typedef struct {
          double real;
          double imag;
      } Py_complex;

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

   Create a new Python complex number object from a C "Py_complex"
   value. Return "NULL" with an exception set on error.

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_complex" with "real" set to
   "-1.0" and with an exception set, so one should call
   "PyErr_Occurred()" to check for errors.

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


C 構造体としての複素数
======================

The API also provides functions for working with complex numbers,
using the "Py_complex" representation.  Note that the functions which
accept these structures as parameters and return them as results do so
*by value* rather than dereferencing them through pointers.

Please note, that these functions are *soft deprecated* since Python
3.15.  Avoid using this API in a new code to do complex arithmetic:
either use the Number Protocol API or use native complex types, like
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* が null の場合は、このメソッドはゼロを返し、 "errno" に
   "EDOM" をセットします。

   バージョン 3.15 で非推奨.

Py_complex _Py_c_pow(Py_complex num, Py_complex exp)

   指数 *exp* の *num* 乗を C の "Py_complex" 型で返します。

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

   Set "errno" to "ERANGE" on overflows.

   バージョン 3.15 で非推奨.

double _Py_c_abs(Py_complex num)

   Return the absolute value of the complex number *num*.

   Set "errno" to "ERANGE" on overflows.

   バージョン 3.15 で非推奨.
