1 /* Complex number structure */ 2 3 #ifndef Py_COMPLEXOBJECT_H 4 #define Py_COMPLEXOBJECT_H 5 #ifdef __cplusplus 6 extern "C" { 7 #endif 8 9 #ifndef Py_LIMITED_API 10 typedef struct { 11 double real; 12 double imag; 13 } Py_complex; 14 15 /* Operations on complex numbers from complexmodule.c */ 16 17 PyAPI_FUNC(Py_complex) _Py_c_sum(Py_complex, Py_complex); 18 PyAPI_FUNC(Py_complex) _Py_c_diff(Py_complex, Py_complex); 19 PyAPI_FUNC(Py_complex) _Py_c_neg(Py_complex); 20 PyAPI_FUNC(Py_complex) _Py_c_prod(Py_complex, Py_complex); 21 PyAPI_FUNC(Py_complex) _Py_c_quot(Py_complex, Py_complex); 22 PyAPI_FUNC(Py_complex) _Py_c_pow(Py_complex, Py_complex); 23 PyAPI_FUNC(double) _Py_c_abs(Py_complex); 24 #endif 25 26 /* Complex object interface */ 27 28 /* 29 PyComplexObject represents a complex number with double-precision 30 real and imaginary parts. 31 */ 32 #ifndef Py_LIMITED_API 33 typedef struct { 34 PyObject_HEAD 35 Py_complex cval; 36 } PyComplexObject; 37 #endif 38 39 PyAPI_DATA(PyTypeObject) PyComplex_Type; 40 41 #define PyComplex_Check(op) PyObject_TypeCheck(op, &PyComplex_Type) 42 #define PyComplex_CheckExact(op) (Py_TYPE(op) == &PyComplex_Type) 43 44 #ifndef Py_LIMITED_API 45 PyAPI_FUNC(PyObject *) PyComplex_FromCComplex(Py_complex); 46 #endif 47 PyAPI_FUNC(PyObject *) PyComplex_FromDoubles(double real, double imag); 48 49 PyAPI_FUNC(double) PyComplex_RealAsDouble(PyObject *op); 50 PyAPI_FUNC(double) PyComplex_ImagAsDouble(PyObject *op); 51 #ifndef Py_LIMITED_API 52 PyAPI_FUNC(Py_complex) PyComplex_AsCComplex(PyObject *op); 53 #endif 54 55 /* Format the object based on the format_spec, as defined in PEP 3101 56 (Advanced String Formatting). */ 57 #ifndef Py_LIMITED_API 58 PyAPI_FUNC(int) _PyComplex_FormatAdvancedWriter( 59 _PyUnicodeWriter *writer, 60 PyObject *obj, 61 PyObject *format_spec, 62 Py_ssize_t start, 63 Py_ssize_t end); 64 #endif 65 66 #ifdef __cplusplus 67 } 68 #endif 69 #endif /* !Py_COMPLEXOBJECT_H */ 70