Objetos números complexos¶
Os objetos números complexos do Python são implementados como dois tipos distintos quando visualizados na API C: um é o objeto Python exposto aos programas Python e o outro é uma estrutura C que representa o valor real do número complexo. A API fornece funções para trabalhar com ambos.
Números complexos como estruturas C.¶
Observe que as funções que aceitam essas estruturas como parâmetros e as retornam como resultados o fazem por valor em vez de desreferenciá-las por meio de ponteiros. Isso é consistente em toda a API.
-
type Py_complex¶
A estrutura C que corresponde à parte do valor de um objeto de número complexo Python. A maioria das funções para lidar com objetos de números complexos usa estruturas desse tipo como valores de entrada ou saída, conforme apropriado.
A estrutura é definida como:
typedef struct { double real; double imag; } Py_complex;
-
Py_complex _Py_c_sum(Py_complex left, Py_complex right)¶
Retorna a soma de dois números complexos, utilizando a representação C
Py_complex.
-
Py_complex _Py_c_diff(Py_complex left, Py_complex right)¶
Retorna a diferença entre dois números complexos, utilizando a representação C
Py_complex.
-
Py_complex _Py_c_neg(Py_complex num)¶
Retorna a negação do número complexo num, utilizando a representação C
Py_complex.
-
Py_complex _Py_c_prod(Py_complex left, Py_complex right)¶
Retorna o produto de dois números complexos, utilizando a representação C
Py_complex.
-
Py_complex _Py_c_quot(Py_complex dividend, Py_complex divisor)¶
Retorna o quociente de dois números complexos, utilizando a representação C
Py_complex.Se divisor é nulo, este método retorna zero e define
errnoparaEDOM.
-
Py_complex _Py_c_pow(Py_complex num, Py_complex exp)¶
Retorna a exponenciação de num por exp, utilizando a representação C
Py_complexSe num for nulo e exp não for um número real positivo, este método retorna zero e define
errnoparaEDOM.
Números complexos como objetos Python¶
-
PyTypeObject PyComplex_Type¶
- Parte da ABI Estável.
Esta instância de
PyTypeObjectrepresenta o tipo de número complexo Python. É o mesmo objeto quecomplexna camada Python.
-
int PyComplex_Check(PyObject *p)¶
Retorna true se seu argumento é um
PyComplexObjectou um subtipo dePyComplexObject. Esta função sempre tem sucesso.
-
int PyComplex_CheckExact(PyObject *p)¶
Retorna true se seu argumento é um
PyComplexObject, mas não um subtipo dePyComplexObject. Esta função sempre tem sucesso.
-
PyObject *PyComplex_FromCComplex(Py_complex v)¶
- Retorna valor: Nova referência.
Cria um novo objeto de número complexo Python a partir de um valor C
Py_complex. RetornaNULLcom uma exceção definida ao ocorrer um erro.
-
PyObject *PyComplex_FromDoubles(double real, double imag)¶
- Retorna valor: Nova referência. Parte da ABI Estável.
Retorna um novo objeto
PyComplexObjectde real e imag. RetornaNULLcom uma exceção definida ao ocorrer um erro.
-
double PyComplex_RealAsDouble(PyObject *op)¶
- Parte da ABI Estável.
Retorna a parte real de op como um double C.
Se op não é um objeto de número complexo Python, mas tem um método
__complex__(), este método será primeiro chamado para converter op em um objeto de número complexo Python. Se__complex__()não estiver definido, ele volta a chamarPyFloat_AsDouble()e retorna seu resultado.Em caso de falha, este método retorna
-1.0com uma exceção definida, então deve-se chamarPyErr_Occurred()para verificar se há erros.Alterado na versão 3.13: Usa
__complex__(), se disponível.
-
double PyComplex_ImagAsDouble(PyObject *op)¶
- Parte da ABI Estável.
Retorna a parte imaginária de op como um double C.
Se op não é um objeto de número complexo Python, mas tem um método
__complex__(), este método será primeiro chamado para converter op em um objeto de número complexo Python. Se__complex__()não estiver definido, ele volta a chamarPyFloat_AsDouble()e retorna0.0em caso de sucesso.Em caso de falha, este método retorna
-1.0com uma exceção definida, então deve-se chamarPyErr_Occurred()para verificar se há erros.Alterado na versão 3.13: Usa
__complex__(), se disponível.
-
Py_complex PyComplex_AsCComplex(PyObject *op)¶
Retorna o valor
Py_complexdo número complexo op.Se op não é um objeto de número complexo Python, mas tem um método
__complex__(), este método será primeiro chamado para converter op em um objeto de número complexo Python. Se__complex__()não for definido, então ele recorre a__float__(). Se__float__()não estiver definido, então ele volta para__index__().Em caso de falha, este método retorna
Py_complexcomrealdefinido para-1.0e com uma exceção definida, então deve-se chamarPyErr_Occurred()para verificar se há erros.Alterado na versão 3.8: Usa
__index__(), se disponível.