@@ -621,39 +621,42 @@ real_to_complex(PyObject **pobj, Py_complex *pc)
621621   See C11's Annex G, sections G.5.1 and G.5.2. 
622622 */ 
623623
624- #define  COMPLEX_BINOP (name , func )                             \
625-     static PyObject *                                         \
626-     complex_##name(PyObject *v, PyObject *w)                  \
627-     {                                                         \
628-         Py_complex a;                                         \
629-         errno = 0;                                            \
630-         if (PyComplex_Check(w)) {                             \
631-             Py_complex b = ((PyComplexObject *)(w))->cval;    \
632-             if (PyComplex_Check(v)) {                         \
633-                 a = ((PyComplexObject *)(v))->cval;           \
634-                 a = _Py_c_##func(a, b);                       \
635-             }                                                 \
636-             else if (real_to_double(&v, &a.real) < 0) {       \
637-                 return v;                                     \
638-             }                                                 \
639-             else {                                            \
640-                 a = _Py_rc_##func(a.real, b);                 \
641-             }                                                 \
642-         }                                                     \
643-         else {                                                \
644-             a = ((PyComplexObject *)(v))->cval;               \
645-             double b;                                         \
646-             if (real_to_double(&w, &b) < 0) {                 \
647-                 return w;                                     \
648-             }                                                 \
649-             a = _Py_cr_##func(a, b);                          \
650-         }                                                     \
651-         if (errno == EDOM) {                                  \
652-             PyErr_SetString(PyExc_ZeroDivisionError,          \
653-                             "division by zero");              \
654-             return NULL;                                      \
655-         }                                                     \
656-         return PyComplex_FromCComplex(a);                     \
624+ #define  COMPLEX_BINOP (NAME , FUNC )                           \
625+     static PyObject *                                       \
626+     complex_##NAME(PyObject *v, PyObject *w)                \
627+     {                                                       \
628+         Py_complex a;                                       \
629+         errno = 0;                                          \
630+         if (PyComplex_Check(w)) {                           \
631+             Py_complex b = ((PyComplexObject *)w)->cval;    \
632+             if (PyComplex_Check(v)) {                       \
633+                 a = ((PyComplexObject *)(v))->cval;         \
634+                 a = _Py_c_##FUNC(a, b);                     \
635+             }                                               \
636+             else if (real_to_double(&v, &a.real) < 0) {     \
637+                 return v;                                   \
638+             }                                               \
639+             else {                                          \
640+                 a = _Py_rc_##FUNC(a.real, b);               \
641+             }                                               \
642+         }                                                   \
643+         else if (!PyComplex_Check(v)) {                     \
644+             Py_RETURN_NOTIMPLEMENTED;                       \
645+         }                                                   \
646+         else {                                              \
647+             a = ((PyComplexObject *)v)->cval;               \
648+             double b;                                       \
649+             if (real_to_double(&w, &b) < 0) {               \
650+                 return w;                                   \
651+             }                                               \
652+             a = _Py_cr_##FUNC(a, b);                        \
653+         }                                                   \
654+         if (errno == EDOM) {                                \
655+             PyErr_SetString(PyExc_ZeroDivisionError,        \
656+                             "division by zero");            \
657+             return NULL;                                    \
658+         }                                                   \
659+         return PyComplex_FromCComplex(a);                   \
657660   }
658661
659662COMPLEX_BINOP (add , sum )
0 commit comments