@@ -719,8 +719,17 @@ m_log10(double x)
719719}
720720
721721
722+ /*[clinic input]
723+ math.gcd
724+
725+ *integers as args: object
726+
727+ Greatest Common Divisor.
728+ [clinic start generated code]*/
729+
722730static PyObject *
723- math_gcd (PyObject * module , PyObject * const * args , Py_ssize_t nargs )
731+ math_gcd_impl (PyObject * module , Py_ssize_t nargs , PyObject * const * args )
732+ /*[clinic end generated code: output=b57687fcf431c1b8 input=94e675b7ceeaf0c9]*/
724733{
725734 // Fast-path for the common case: gcd(int, int)
726735 if (nargs == 2 && PyLong_CheckExact (args [0 ]) && PyLong_CheckExact (args [1 ]))
@@ -763,12 +772,6 @@ math_gcd(PyObject *module, PyObject * const *args, Py_ssize_t nargs)
763772 return res ;
764773}
765774
766- PyDoc_STRVAR (math_gcd_doc ,
767- "gcd($module, *integers)\n"
768- "--\n"
769- "\n"
770- "Greatest Common Divisor." );
771-
772775
773776static PyObject *
774777long_lcm (PyObject * a , PyObject * b )
@@ -798,8 +801,17 @@ long_lcm(PyObject *a, PyObject *b)
798801}
799802
800803
804+ /*[clinic input]
805+ math.lcm
806+
807+ *integers as args: object
808+
809+ Least Common Multiple.
810+ [clinic start generated code]*/
811+
801812static PyObject *
802- math_lcm (PyObject * module , PyObject * const * args , Py_ssize_t nargs )
813+ math_lcm_impl (PyObject * module , Py_ssize_t nargs , PyObject * const * args )
814+ /*[clinic end generated code: output=f3eff0c25e4d7030 input=e64c33e85f4c47c6]*/
803815{
804816 PyObject * res , * x ;
805817 Py_ssize_t i ;
@@ -839,13 +851,6 @@ math_lcm(PyObject *module, PyObject * const *args, Py_ssize_t nargs)
839851}
840852
841853
842- PyDoc_STRVAR (math_lcm_doc ,
843- "lcm($module, *integers)\n"
844- "--\n"
845- "\n"
846- "Least Common Multiple." );
847-
848-
849854/* Call is_error when errno != 0, and where x is the result libm
850855 * returned. is_error will usually set up an exception and return
851856 * true (1), but may return false (0) without setting up an exception.
@@ -2621,9 +2626,28 @@ math_dist_impl(PyObject *module, PyObject *p, PyObject *q)
26212626 return NULL ;
26222627}
26232628
2624- /* AC: cannot convert yet, waiting for *args support */
2629+ /*[clinic input]
2630+ math.hypot
2631+
2632+ *coordinates as args: object
2633+
2634+ Multidimensional Euclidean distance from the origin to a point.
2635+
2636+ Roughly equivalent to:
2637+ sqrt(sum(x**2 for x in coordinates))
2638+
2639+ For a two dimensional point (x, y), gives the hypotenuse
2640+ using the Pythagorean theorem: sqrt(x*x + y*y).
2641+
2642+ For example, the hypotenuse of a 3/4/5 right triangle is:
2643+
2644+ >>> hypot(3.0, 4.0)
2645+ 5.0
2646+ [clinic start generated code]*/
2647+
26252648static PyObject *
2626- math_hypot (PyObject * self , PyObject * const * args , Py_ssize_t nargs )
2649+ math_hypot_impl (PyObject * module , Py_ssize_t nargs , PyObject * const * args )
2650+ /*[clinic end generated code: output=dcb6d4b7a1102ee1 input=5c0061a2d11235ed]*/
26272651{
26282652 Py_ssize_t i ;
26292653 PyObject * item ;
@@ -2664,22 +2688,6 @@ math_hypot(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
26642688
26652689#undef NUM_STACK_ELEMS
26662690
2667- PyDoc_STRVAR (math_hypot_doc ,
2668- "hypot(*coordinates) -> value\n\n\
2669- Multidimensional Euclidean distance from the origin to a point.\n\
2670- \n\
2671- Roughly equivalent to:\n\
2672- sqrt(sum(x**2 for x in coordinates))\n\
2673- \n\
2674- For a two dimensional point (x, y), gives the hypotenuse\n\
2675- using the Pythagorean theorem: sqrt(x*x + y*y).\n\
2676- \n\
2677- For example, the hypotenuse of a 3/4/5 right triangle is:\n\
2678- \n\
2679- >>> hypot(3.0, 4.0)\n\
2680- 5.0\n\
2681- " );
2682-
26832691/** sumprod() ***************************************************************/
26842692
26852693/* Forward declaration */
@@ -4112,14 +4120,14 @@ static PyMethodDef math_methods[] = {
41124120 MATH_FREXP_METHODDEF
41134121 MATH_FSUM_METHODDEF
41144122 {"gamma" , math_gamma , METH_O , math_gamma_doc },
4115- { "gcd" , _PyCFunction_CAST ( math_gcd ), METH_FASTCALL , math_gcd_doc },
4116- { "hypot" , _PyCFunction_CAST ( math_hypot ), METH_FASTCALL , math_hypot_doc },
4123+ MATH_GCD_METHODDEF
4124+ MATH_HYPOT_METHODDEF
41174125 MATH_ISCLOSE_METHODDEF
41184126 MATH_ISFINITE_METHODDEF
41194127 MATH_ISINF_METHODDEF
41204128 MATH_ISNAN_METHODDEF
41214129 MATH_ISQRT_METHODDEF
4122- { "lcm" , _PyCFunction_CAST ( math_lcm ), METH_FASTCALL , math_lcm_doc },
4130+ MATH_LCM_METHODDEF
41234131 MATH_LDEXP_METHODDEF
41244132 {"lgamma" , math_lgamma , METH_O , math_lgamma_doc },
41254133 {"log" , _PyCFunction_CAST (math_log ), METH_FASTCALL , math_log_doc },
0 commit comments