File: /Users/paulross/dev/Python-3.6.2/Include/complexobject.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       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: