@@ -466,57 +466,18 @@ complex_div(PyObject *v, PyObject *w)
466466static PyObject *
467467complex_remainder (PyObject * v , PyObject * w )
468468{
469- Py_complex div , mod ;
470- Py_complex a , b ;
471- TO_COMPLEX (v , a );
472- TO_COMPLEX (w , b );
473-
474- if (PyErr_Warn (PyExc_DeprecationWarning ,
475- "complex divmod(), // and % are deprecated" ) < 0 )
476- return NULL ;
477-
478- errno = 0 ;
479- div = c_quot (a , b ); /* The raw divisor value. */
480- if (errno == EDOM ) {
481- PyErr_SetString (PyExc_ZeroDivisionError , "complex remainder" );
482- return NULL ;
483- }
484- div .real = floor (div .real ); /* Use the floor of the real part. */
485- div .imag = 0.0 ;
486- mod = c_diff (a , c_prod (b , div ));
487-
488- return PyComplex_FromCComplex (mod );
469+ PyErr_SetString (PyExc_TypeError ,
470+ "can't mod complex numbers." );
471+ return NULL ;
489472}
490473
491474
492475static PyObject *
493476complex_divmod (PyObject * v , PyObject * w )
494477{
495- Py_complex div , mod ;
496- PyObject * d , * m , * z ;
497- Py_complex a , b ;
498- TO_COMPLEX (v , a );
499- TO_COMPLEX (w , b );
500-
501- if (PyErr_Warn (PyExc_DeprecationWarning ,
502- "complex divmod(), // and % are deprecated" ) < 0 )
503- return NULL ;
504-
505- errno = 0 ;
506- div = c_quot (a , b ); /* The raw divisor value. */
507- if (errno == EDOM ) {
508- PyErr_SetString (PyExc_ZeroDivisionError , "complex divmod()" );
509- return NULL ;
510- }
511- div .real = floor (div .real ); /* Use the floor of the real part. */
512- div .imag = 0.0 ;
513- mod = c_diff (a , c_prod (b , div ));
514- d = PyComplex_FromCComplex (div );
515- m = PyComplex_FromCComplex (mod );
516- z = PyTuple_Pack (2 , d , m );
517- Py_XDECREF (d );
518- Py_XDECREF (m );
519- return z ;
478+ PyErr_SetString (PyExc_TypeError ,
479+ "can't take floor or mod of complex number." );
480+ return NULL ;
520481}
521482
522483static PyObject *
@@ -560,15 +521,8 @@ complex_pow(PyObject *v, PyObject *w, PyObject *z)
560521static PyObject *
561522complex_int_div (PyObject * v , PyObject * w )
562523{
563- PyObject * t , * r ;
564-
565- t = complex_divmod (v , w );
566- if (t != NULL ) {
567- r = PyTuple_GET_ITEM (t , 0 );
568- Py_INCREF (r );
569- Py_DECREF (t );
570- return r ;
571- }
524+ PyErr_SetString (PyExc_TypeError ,
525+ "can't take floor of complex number." );
572526 return NULL ;
573527}
574528
@@ -665,14 +619,20 @@ complex_conjugate(PyObject *self)
665619 return PyComplex_FromCComplex (c );
666620}
667621
622+ PyDoc_STRVAR (complex_conjugate_doc ,
623+ "complex.conjugate() -> complex\n"
624+ "\n"
625+ "Returns the complex conjugate of its argument. (3-4j).conjugate() == 3+4j." );
626+
668627static PyObject *
669628complex_getnewargs (PyComplexObject * v )
670629{
671630 return Py_BuildValue ("(D)" , & v -> cval );
672631}
673632
674633static PyMethodDef complex_methods [] = {
675- {"conjugate" , (PyCFunction )complex_conjugate , METH_NOARGS },
634+ {"conjugate" , (PyCFunction )complex_conjugate , METH_NOARGS ,
635+ complex_conjugate_doc },
676636 {"__getnewargs__" , (PyCFunction )complex_getnewargs , METH_NOARGS },
677637 {NULL , NULL } /* sentinel */
678638};
0 commit comments