[Python-checkins] CVS: python/dist/src/Modules mathmodule.c,2.48,2.49
Fred L. Drake
python-dev@python.org
Mon, 3 Jul 2000 11:11:59 -0700
Update of /cvsroot/python/python/dist/src/Modules
In directory slayer.i.sourceforge.net:/tmp/cvs-serv28471
Modified Files:
mathmodule.c
Log Message:
ANSI-fication, remove Py_PROTO, etc.
Revise math_1(), math_2(), stub-generating macros, and function tables to
use PyArg_ParseTuple() and properly provide the function name for error
message generation.
Fix pow() docstring for MPW 3.1; had said "power" instead of "pow".
Index: mathmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/mathmodule.c,v
retrieving revision 2.48
retrieving revision 2.49
diff -C2 -r2.48 -r2.49
*** mathmodule.c 2000/07/02 20:17:08 2.48
--- mathmodule.c 2000/07/03 18:11:56 2.49
***************
*** 17,24 ****
#ifndef _MSC_VER
#ifndef __STDC__
! extern double fmod Py_PROTO((double, double));
! extern double frexp Py_PROTO((double, int *));
! extern double ldexp Py_PROTO((double, int));
! extern double modf Py_PROTO((double, double *));
#endif /* __STDC__ */
#endif /* _MSC_VER */
--- 17,24 ----
#ifndef _MSC_VER
#ifndef __STDC__
! extern double fmod (double, double);
! extern double frexp (double, int *);
! extern double ldexp (double, int);
! extern double modf (double, double *);
#endif /* __STDC__ */
#endif /* _MSC_VER */
***************
*** 52,61 ****
static PyObject *
! math_1(args, func)
! PyObject *args;
! double (*func) Py_FPROTO((double));
{
double x;
! if (! PyArg_Parse(args, "d", &x))
return NULL;
errno = 0;
--- 52,59 ----
static PyObject *
! math_1(PyObject *args, double (*func) (double), char *argsfmt)
{
double x;
! if (! PyArg_ParseTuple(args, argsfmt, &x))
return NULL;
errno = 0;
***************
*** 71,80 ****
static PyObject *
! math_2(args, func)
! PyObject *args;
! double (*func) Py_FPROTO((double, double));
{
double x, y;
! if (! PyArg_Parse(args, "(dd)", &x, &y))
return NULL;
errno = 0;
--- 69,76 ----
static PyObject *
! math_2(PyObject *args, double (*func) (double, double), char *argsfmt)
{
double x, y;
! if (! PyArg_ParseTuple(args, argsfmt, &x, &y))
return NULL;
errno = 0;
***************
*** 89,163 ****
}
! #define FUNC1(stubname, func, docstring_name, docstring) \
! static PyObject * stubname(self, args) PyObject *self, *args; { \
! return math_1(args, func); \
}\
! static char docstring_name [] = docstring;
! #define FUNC2(stubname, func, docstring_name, docstring) \
! static PyObject * stubname(self, args) PyObject *self, *args; { \
! return math_2(args, func); \
}\
! static char docstring_name [] = docstring;
! FUNC1(math_acos, acos, math_acos_doc,
"acos(x)\n\nReturn the arc cosine of x.")
! FUNC1(math_asin, asin, math_asin_doc,
"asin(x)\n\nReturn the arc sine of x.")
! FUNC1(math_atan, atan, math_atan_doc,
"atan(x)\n\nReturn the arc tangent of x.")
! FUNC2(math_atan2, atan2, math_atan2_doc,
"atan2(y, x)\n\nReturn atan(y/x).")
! FUNC1(math_ceil, ceil, math_ceil_doc,
"ceil(x)\n\nReturn the ceiling of x as a real.")
! FUNC1(math_cos, cos, math_cos_doc,
"cos(x)\n\nReturn the cosine of x.")
! FUNC1(math_cosh, cosh, math_cosh_doc,
"cosh(x)\n\nReturn the hyperbolic cosine of x.")
! FUNC1(math_exp, exp, math_exp_doc,
"exp(x)\n\nReturn e raised to the power of x.")
! FUNC1(math_fabs, fabs, math_fabs_doc,
"fabs(x)\n\nReturn the absolute value of the real x.")
! FUNC1(math_floor, floor, math_floor_doc,
"floor(x)\n\nReturn the floor of x as a real.")
! FUNC2(math_fmod, fmod, math_fmod_doc,
"fmod(x,y)\n\nReturn x % y.")
! FUNC2(math_hypot, hypot, math_hypot_doc,
"hypot(x,y)\n\nReturn the Euclidean distance, sqrt(x*x + y*y).")
! FUNC1(math_log, log, math_log_doc,
"log(x)\n\nReturn the natural logarithm of x.")
! FUNC1(math_log10, log10, math_log10_doc,
"log10(x)\n\nReturn the base-10 logarithm of x.")
#ifdef MPW_3_1 /* This hack is needed for MPW 3.1 but not for 3.2 ... */
! FUNC2(math_pow, power, math_pow_doc,
! "power(x,y)\n\nReturn x**y.")
#else
! FUNC2(math_pow, pow, math_pow_doc,
"pow(x,y)\n\nReturn x**y.")
#endif
#ifdef HAVE_RINT
! FUNC1(math_rint, rint, math_rint_doc,
"rint(x)\n\nReturn the integer nearest to x as a real.")
#endif
! FUNC1(math_sin, sin, math_sin_doc,
"sin(x)\n\nReturn the sine of x.")
! FUNC1(math_sinh, sinh, math_sinh_doc,
"sinh(x)\n\nReturn the hyperbolic sine of x.")
! FUNC1(math_sqrt, sqrt, math_sqrt_doc,
"sqrt(x)\n\nReturn the square root of x.")
! FUNC1(math_tan, tan, math_tan_doc,
"tan(x)\n\nReturn the tangent of x.")
! FUNC1(math_tanh, tanh, math_tanh_doc,
"tanh(x)\n\nReturn the hyperbolic tangent of x.")
static PyObject *
! math_frexp(self, args)
! PyObject *self;
! PyObject *args;
{
double x;
int i;
! if (! PyArg_Parse(args, "d", &x))
return NULL;
errno = 0;
--- 85,157 ----
}
! #define FUNC1(funcname, func, docstring) \
! static PyObject * math_##funcname(PyObject *self, PyObject *args) { \
! return math_1(args, func, "d:" #funcname); \
}\
! static char math_##funcname##_doc [] = docstring;
! #define FUNC2(funcname, func, docstring) \
! static PyObject * math_##funcname(PyObject *self, PyObject *args) { \
! return math_2(args, func, "dd:" #funcname); \
}\
! static char math_##funcname##_doc [] = docstring;
! FUNC1(acos, acos,
"acos(x)\n\nReturn the arc cosine of x.")
! FUNC1(asin, asin,
"asin(x)\n\nReturn the arc sine of x.")
! FUNC1(atan, atan,
"atan(x)\n\nReturn the arc tangent of x.")
! FUNC2(atan2, atan2,
"atan2(y, x)\n\nReturn atan(y/x).")
! FUNC1(ceil, ceil,
"ceil(x)\n\nReturn the ceiling of x as a real.")
! FUNC1(cos, cos,
"cos(x)\n\nReturn the cosine of x.")
! FUNC1(cosh, cosh,
"cosh(x)\n\nReturn the hyperbolic cosine of x.")
! FUNC1(exp, exp,
"exp(x)\n\nReturn e raised to the power of x.")
! FUNC1(fabs, fabs,
"fabs(x)\n\nReturn the absolute value of the real x.")
! FUNC1(floor, floor,
"floor(x)\n\nReturn the floor of x as a real.")
! FUNC2(fmod, fmod,
"fmod(x,y)\n\nReturn x % y.")
! FUNC2(hypot, hypot,
"hypot(x,y)\n\nReturn the Euclidean distance, sqrt(x*x + y*y).")
! FUNC1(log, log,
"log(x)\n\nReturn the natural logarithm of x.")
! FUNC1(log10, log10,
"log10(x)\n\nReturn the base-10 logarithm of x.")
#ifdef MPW_3_1 /* This hack is needed for MPW 3.1 but not for 3.2 ... */
! FUNC2(pow, power,
! "pow(x,y)\n\nReturn x**y.")
#else
! FUNC2(pow, pow,
"pow(x,y)\n\nReturn x**y.")
#endif
#ifdef HAVE_RINT
! FUNC1(rint, rint,
"rint(x)\n\nReturn the integer nearest to x as a real.")
#endif
! FUNC1(sin, sin,
"sin(x)\n\nReturn the sine of x.")
! FUNC1(sinh, sinh,
"sinh(x)\n\nReturn the hyperbolic sine of x.")
! FUNC1(sqrt, sqrt,
"sqrt(x)\n\nReturn the square root of x.")
! FUNC1(tan, tan,
"tan(x)\n\nReturn the tangent of x.")
! FUNC1(tanh, tanh,
"tanh(x)\n\nReturn the hyperbolic tangent of x.")
static PyObject *
! math_frexp(PyObject *self, PyObject *args)
{
double x;
int i;
! if (! PyArg_ParseTuple(args, "d:frexp", &x))
return NULL;
errno = 0;
***************
*** 178,188 ****
static PyObject *
! math_ldexp(self, args)
! PyObject *self;
! PyObject *args;
{
double x;
int exp;
! if (! PyArg_Parse(args, "(di)", &x, &exp))
return NULL;
errno = 0;
--- 172,180 ----
static PyObject *
! math_ldexp(PyObject *self, PyObject *args)
{
double x;
int exp;
! if (! PyArg_ParseTuple(args, "di:ldexp", &x, &exp))
return NULL;
errno = 0;
***************
*** 204,221 ****
static PyObject *
! math_modf(self, args)
! PyObject *self;
! PyObject *args;
{
double x, y;
! if (! PyArg_Parse(args, "d", &x))
return NULL;
errno = 0;
#ifdef MPW /* MPW C modf expects pointer to extended as second argument */
! {
! extended e;
! x = modf(x, &e);
! y = e;
! }
#else
x = modf(x, &y);
--- 196,211 ----
static PyObject *
! math_modf(PyObject *self, PyObject *args)
{
double x, y;
! if (! PyArg_ParseTuple(args, "d:modf", &x))
return NULL;
errno = 0;
#ifdef MPW /* MPW C modf expects pointer to extended as second argument */
! {
! extended e;
! x = modf(x, &e);
! y = e;
! }
#else
x = modf(x, &y);
***************
*** 235,264 ****
static PyMethodDef math_methods[] = {
! {"acos", math_acos, 0, math_acos_doc},
! {"asin", math_asin, 0, math_asin_doc},
! {"atan", math_atan, 0, math_atan_doc},
! {"atan2", math_atan2, 0, math_atan2_doc},
! {"ceil", math_ceil, 0, math_ceil_doc},
! {"cos", math_cos, 0, math_cos_doc},
! {"cosh", math_cosh, 0, math_cosh_doc},
! {"exp", math_exp, 0, math_exp_doc},
! {"fabs", math_fabs, 0, math_fabs_doc},
! {"floor", math_floor, 0, math_floor_doc},
! {"fmod", math_fmod, 0, math_fmod_doc},
! {"frexp", math_frexp, 0, math_frexp_doc},
! {"hypot", math_hypot, 0, math_hypot_doc},
! {"ldexp", math_ldexp, 0, math_ldexp_doc},
! {"log", math_log, 0, math_log_doc},
! {"log10", math_log10, 0, math_log10_doc},
! {"modf", math_modf, 0, math_modf_doc},
! {"pow", math_pow, 0, math_pow_doc},
#ifdef HAVE_RINT
! {"rint", math_rint, 0, math_rint_doc},
#endif
! {"sin", math_sin, 0, math_sin_doc},
! {"sinh", math_sinh, 0, math_sinh_doc},
! {"sqrt", math_sqrt, 0, math_sqrt_doc},
! {"tan", math_tan, 0, math_tan_doc},
! {"tanh", math_tanh, 0, math_tanh_doc},
{NULL, NULL} /* sentinel */
};
--- 225,254 ----
static PyMethodDef math_methods[] = {
! {"acos", math_acos, METH_VARARGS, math_acos_doc},
! {"asin", math_asin, METH_VARARGS, math_asin_doc},
! {"atan", math_atan, METH_VARARGS, math_atan_doc},
! {"atan2", math_atan2, METH_VARARGS, math_atan2_doc},
! {"ceil", math_ceil, METH_VARARGS, math_ceil_doc},
! {"cos", math_cos, METH_VARARGS, math_cos_doc},
! {"cosh", math_cosh, METH_VARARGS, math_cosh_doc},
! {"exp", math_exp, METH_VARARGS, math_exp_doc},
! {"fabs", math_fabs, METH_VARARGS, math_fabs_doc},
! {"floor", math_floor, METH_VARARGS, math_floor_doc},
! {"fmod", math_fmod, METH_VARARGS, math_fmod_doc},
! {"frexp", math_frexp, METH_VARARGS, math_frexp_doc},
! {"hypot", math_hypot, METH_VARARGS, math_hypot_doc},
! {"ldexp", math_ldexp, METH_VARARGS, math_ldexp_doc},
! {"log", math_log, METH_VARARGS, math_log_doc},
! {"log10", math_log10, METH_VARARGS, math_log10_doc},
! {"modf", math_modf, METH_VARARGS, math_modf_doc},
! {"pow", math_pow, METH_VARARGS, math_pow_doc},
#ifdef HAVE_RINT
! {"rint", math_rint, METH_VARARGS, math_rint_doc},
#endif
! {"sin", math_sin, METH_VARARGS, math_sin_doc},
! {"sinh", math_sinh, METH_VARARGS, math_sinh_doc},
! {"sqrt", math_sqrt, METH_VARARGS, math_sqrt_doc},
! {"tan", math_tan, METH_VARARGS, math_tan_doc},
! {"tanh", math_tanh, METH_VARARGS, math_tanh_doc},
{NULL, NULL} /* sentinel */
};