.. highlightlang:: c .. _complexobjects: Complex Number Objects ---------------------- .. index:: object: complex number Python's complex number objects are implemented as two distinct types when viewed from the C API: one is the Python object exposed to Python programs, and the other is a C structure which represents the actual complex number value. The API provides functions for working with both. Complex Numbers as C Structures ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 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. This is consistent throughout the API. .. c: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. It is defined as:: typedef struct { double real; double imag; } Py_complex; .. c:function:: Py_complex _Py_c_sum(Py_complex left, Py_complex right) Return the sum of two complex numbers, using the C :c:type:`Py_complex` representation. .. c:function:: Py_complex _Py_c_diff(Py_complex left, Py_complex right) Return the difference between two complex numbers, using the C :c:type:`Py_complex` representation. .. c:function:: Py_complex _Py_c_neg(Py_complex complex) Return the negation of the complex number *complex*, using the C :c:type:`Py_complex` representation. .. c:function:: Py_complex _Py_c_prod(Py_complex left, Py_complex right) Return the product of two complex numbers, using the C :c:type:`Py_complex` representation. .. c:function:: Py_complex _Py_c_quot(Py_complex dividend, Py_complex divisor) Return the quotient of two complex numbers, using the C :c:type:`Py_complex` representation. If *divisor* is null, this method returns zero and sets :c:data:`errno` to :c:data:`EDOM`. .. c:function:: Py_complex _Py_c_pow(Py_complex num, Py_complex exp) Return the exponentiation of *num* by *exp*, using the C :c:type:`Py_complex` representation. If *num* is null and *exp* is not a positive real number, this method returns zero and sets :c:data:`errno` to :c:data:`EDOM`. Complex Numbers as Python Objects ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. c:type:: PyComplexObject This subtype of :c:type:`PyObject` represents a Python complex number object. .. c:var:: PyTypeObject PyComplex_Type This instance of :c:type:`PyTypeObject` represents the Python complex number type. It is the same object as ``complex`` and ``types.ComplexType``. .. c:function:: int PyComplex_Check(PyObject *p) Return true if its argument is a :c:type:`PyComplexObject` or a subtype of :c:type:`PyComplexObject`. .. versionchanged:: 2.2 Allowed subtypes to be accepted. .. c:function:: int PyComplex_CheckExact(PyObject *p) Return true if its argument is a :c:type:`PyComplexObject`, but not a subtype of :c:type:`PyComplexObject`. .. versionadded:: 2.2 .. c:function:: PyObject* PyComplex_FromCComplex(Py_complex v) Create a new Python complex number object from a C :c:type:`Py_complex` value. .. c:function:: PyObject* PyComplex_FromDoubles(double real, double imag) Return a new :c:type:`PyComplexObject` object from *real* and *imag*. .. c:function:: double PyComplex_RealAsDouble(PyObject *op) Return the real part of *op* as a C :c:type:`double`. .. c:function:: double PyComplex_ImagAsDouble(PyObject *op) Return the imaginary part of *op* as a C :c:type:`double`. .. c:function:: Py_complex PyComplex_AsCComplex(PyObject *op) Return the :c:type:`Py_complex` value of the complex number *op*. Upon failure, this method returns ``-1.0`` as a real value. .. versionchanged:: 2.6 If *op* is not a Python complex number object but has a :meth:`__complex__` method, this method will first be called to convert *op* to a Python complex number object.
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
abstract.txt | File | 702 B | 0644 |
|
allocation.txt | File | 4.63 KB | 0644 |
|
arg.txt | File | 25.33 KB | 0644 |
|
bool.txt | File | 1.27 KB | 0644 |
|
buffer.txt | File | 22.15 KB | 0644 |
|
bytearray.txt | File | 2.13 KB | 0644 |
|
capsule.txt | File | 5.67 KB | 0644 |
|
cell.txt | File | 1.89 KB | 0644 |
|
class.txt | File | 1.81 KB | 0644 |
|
cobject.txt | File | 1.83 KB | 0644 |
|
code.txt | File | 1.59 KB | 0644 |
|
codec.txt | File | 4.5 KB | 0644 |
|
complex.txt | File | 3.98 KB | 0644 |
|
concrete.txt | File | 1.92 KB | 0644 |
|
conversion.txt | File | 6.92 KB | 0644 |
|
datetime.txt | File | 6.26 KB | 0644 |
|
descriptor.txt | File | 1.27 KB | 0644 |
|
dict.txt | File | 7.4 KB | 0644 |
|
exceptions.txt | File | 29.17 KB | 0644 |
|
file.txt | File | 6.02 KB | 0644 |
|
float.txt | File | 3.29 KB | 0644 |
|
function.txt | File | 2.36 KB | 0644 |
|
gcsupport.txt | File | 6.12 KB | 0644 |
|
gen.txt | File | 919 B | 0644 |
|
import.txt | File | 10.95 KB | 0644 |
|
index.txt | File | 578 B | 0644 |
|
init.txt | File | 47.74 KB | 0644 |
|
int.txt | File | 4.47 KB | 0644 |
|
intro.txt | File | 27.8 KB | 0644 |
|
iter.txt | File | 1.21 KB | 0644 |
|
iterator.txt | File | 1.75 KB | 0644 |
|
list.txt | File | 6.21 KB | 0644 |
|
long.txt | File | 8.45 KB | 0644 |
|
mapping.txt | File | 2.81 KB | 0644 |
|
marshal.txt | File | 3.88 KB | 0644 |
|
memory.txt | File | 8.39 KB | 0644 |
|
method.txt | File | 2.05 KB | 0644 |
|
module.txt | File | 3.76 KB | 0644 |
|
none.txt | File | 689 B | 0644 |
|
number.txt | File | 11.64 KB | 0644 |
|
objbuffer.txt | File | 2.46 KB | 0644 |
|
object.txt | File | 16.54 KB | 0644 |
|
objimpl.txt | File | 305 B | 0644 |
|
refcounting.txt | File | 2.87 KB | 0644 |
|
reflection.txt | File | 1.53 KB | 0644 |
|
sequence.txt | File | 8.18 KB | 0644 |
|
set.txt | File | 6.41 KB | 0644 |
|
slice.txt | File | 2.62 KB | 0644 |
|
string.txt | File | 15.05 KB | 0644 |
|
structures.txt | File | 12.09 KB | 0644 |
|
sys.txt | File | 5.58 KB | 0644 |
|
tuple.txt | File | 5.36 KB | 0644 |
|
type.txt | File | 2.48 KB | 0644 |
|
typeobj.txt | File | 61.98 KB | 0644 |
|
unicode.txt | File | 43.95 KB | 0644 |
|
utilities.txt | File | 415 B | 0644 |
|
veryhigh.txt | File | 13.04 KB | 0644 |
|
weakref.txt | File | 2.75 KB | 0644 |
|