Added Doc strings -- by Chris Petrilli.
This commit is contained in:
parent
13fdf5e917
commit
c6e22902ad
|
@ -48,6 +48,12 @@ static Py_complex c_acos(x)
|
||||||
c_sqrt(c_diff(c_1,c_prod(x,x))))))));
|
c_sqrt(c_diff(c_1,c_prod(x,x))))))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char c_acos_doc [] =
|
||||||
|
"acos(x)\n\
|
||||||
|
\n\
|
||||||
|
Return the arc cosine of x.";
|
||||||
|
|
||||||
|
|
||||||
static Py_complex c_acosh(x)
|
static Py_complex c_acosh(x)
|
||||||
Py_complex x;
|
Py_complex x;
|
||||||
{
|
{
|
||||||
|
@ -55,6 +61,12 @@ static Py_complex c_acosh(x)
|
||||||
c_sqrt(c_diff(c_1,c_prod(x,x))))));
|
c_sqrt(c_diff(c_1,c_prod(x,x))))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char c_acosh_doc [] =
|
||||||
|
"acosh(x)\n\
|
||||||
|
\n\
|
||||||
|
Return the hyperbolic cosine of x.";
|
||||||
|
|
||||||
|
|
||||||
static Py_complex c_asin(x)
|
static Py_complex c_asin(x)
|
||||||
Py_complex x;
|
Py_complex x;
|
||||||
{
|
{
|
||||||
|
@ -62,24 +74,48 @@ static Py_complex c_asin(x)
|
||||||
c_sqrt(c_diff(c_1,c_prod(x,x)))))));
|
c_sqrt(c_diff(c_1,c_prod(x,x)))))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char c_asin_doc [] =
|
||||||
|
"asin(x)\n\
|
||||||
|
\n\
|
||||||
|
Return the arc sine of x.";
|
||||||
|
|
||||||
|
|
||||||
static Py_complex c_asinh(x)
|
static Py_complex c_asinh(x)
|
||||||
Py_complex x;
|
Py_complex x;
|
||||||
{
|
{
|
||||||
return c_neg(c_log(c_diff(c_sqrt(c_sum(c_1,c_prod(x,x))),x)));
|
return c_neg(c_log(c_diff(c_sqrt(c_sum(c_1,c_prod(x,x))),x)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char c_asinh_doc [] =
|
||||||
|
"asinh(x)\n\
|
||||||
|
\n\
|
||||||
|
Return the hyperbolic arc sine of x.";
|
||||||
|
|
||||||
|
|
||||||
static Py_complex c_atan(x)
|
static Py_complex c_atan(x)
|
||||||
Py_complex x;
|
Py_complex x;
|
||||||
{
|
{
|
||||||
return c_prod(c_i2,c_log(c_quot(c_sum(c_i,x),c_diff(c_i,x))));
|
return c_prod(c_i2,c_log(c_quot(c_sum(c_i,x),c_diff(c_i,x))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char c_atan_doc [] =
|
||||||
|
"atan(x)\n\
|
||||||
|
\n\
|
||||||
|
Return the arc tangent of x.";
|
||||||
|
|
||||||
|
|
||||||
static Py_complex c_atanh(x)
|
static Py_complex c_atanh(x)
|
||||||
Py_complex x;
|
Py_complex x;
|
||||||
{
|
{
|
||||||
return c_prod(c_half,c_log(c_quot(c_sum(c_1,x),c_diff(c_1,x))));
|
return c_prod(c_half,c_log(c_quot(c_sum(c_1,x),c_diff(c_1,x))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char c_atanh_doc [] =
|
||||||
|
"atanh(x)\n\
|
||||||
|
\n\
|
||||||
|
Return the hyperbolic arc tangent of x.";
|
||||||
|
|
||||||
|
|
||||||
static Py_complex c_cos(x)
|
static Py_complex c_cos(x)
|
||||||
Py_complex x;
|
Py_complex x;
|
||||||
{
|
{
|
||||||
|
@ -89,6 +125,12 @@ static Py_complex c_cos(x)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char c_cos_doc [] =
|
||||||
|
"cos(x)\n\
|
||||||
|
\n\
|
||||||
|
Return the cosine of x.";
|
||||||
|
|
||||||
|
|
||||||
static Py_complex c_cosh(x)
|
static Py_complex c_cosh(x)
|
||||||
Py_complex x;
|
Py_complex x;
|
||||||
{
|
{
|
||||||
|
@ -98,6 +140,12 @@ static Py_complex c_cosh(x)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char c_cosh_doc [] =
|
||||||
|
"cosh(x)\n\
|
||||||
|
\n\
|
||||||
|
Return the hyperbolic cosine of x.";
|
||||||
|
|
||||||
|
|
||||||
static Py_complex c_exp(x)
|
static Py_complex c_exp(x)
|
||||||
Py_complex x;
|
Py_complex x;
|
||||||
{
|
{
|
||||||
|
@ -108,6 +156,12 @@ static Py_complex c_exp(x)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char c_exp_doc [] =
|
||||||
|
"exp(x)\n\
|
||||||
|
\n\
|
||||||
|
Return the exponential value e**x.";
|
||||||
|
|
||||||
|
|
||||||
static Py_complex c_log(x)
|
static Py_complex c_log(x)
|
||||||
Py_complex x;
|
Py_complex x;
|
||||||
{
|
{
|
||||||
|
@ -118,6 +172,12 @@ static Py_complex c_log(x)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char c_log_doc [] =
|
||||||
|
"log(x)\n\
|
||||||
|
\n\
|
||||||
|
Return the natural logarithm of x.";
|
||||||
|
|
||||||
|
|
||||||
static Py_complex c_log10(x)
|
static Py_complex c_log10(x)
|
||||||
Py_complex x;
|
Py_complex x;
|
||||||
{
|
{
|
||||||
|
@ -128,6 +188,13 @@ static Py_complex c_log10(x)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char c_log10_doc [] =
|
||||||
|
"log10(x)\n\
|
||||||
|
\n\
|
||||||
|
Return the base-10 logarithm of x.";
|
||||||
|
|
||||||
|
|
||||||
|
/* internal function not available from Python */
|
||||||
static Py_complex c_prodi(x)
|
static Py_complex c_prodi(x)
|
||||||
Py_complex x;
|
Py_complex x;
|
||||||
{
|
{
|
||||||
|
@ -137,6 +204,7 @@ static Py_complex c_prodi(x)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static Py_complex c_sin(x)
|
static Py_complex c_sin(x)
|
||||||
Py_complex x;
|
Py_complex x;
|
||||||
{
|
{
|
||||||
|
@ -146,6 +214,12 @@ static Py_complex c_sin(x)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char c_sin_doc [] =
|
||||||
|
"sin(x)\n\
|
||||||
|
\n\
|
||||||
|
Return the sine of x.";
|
||||||
|
|
||||||
|
|
||||||
static Py_complex c_sinh(x)
|
static Py_complex c_sinh(x)
|
||||||
Py_complex x;
|
Py_complex x;
|
||||||
{
|
{
|
||||||
|
@ -155,6 +229,12 @@ static Py_complex c_sinh(x)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char c_sinh_doc [] =
|
||||||
|
"sinh(x)\n\
|
||||||
|
\n\
|
||||||
|
Return the hyperbolic sine of x.";
|
||||||
|
|
||||||
|
|
||||||
static Py_complex c_sqrt(x)
|
static Py_complex c_sqrt(x)
|
||||||
Py_complex x;
|
Py_complex x;
|
||||||
{
|
{
|
||||||
|
@ -181,6 +261,12 @@ static Py_complex c_sqrt(x)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char c_sqrt_doc [] =
|
||||||
|
"sqrt(x)\n\
|
||||||
|
\n\
|
||||||
|
Return the square root of x.";
|
||||||
|
|
||||||
|
|
||||||
static Py_complex c_tan(x)
|
static Py_complex c_tan(x)
|
||||||
Py_complex x;
|
Py_complex x;
|
||||||
{
|
{
|
||||||
|
@ -202,6 +288,12 @@ static Py_complex c_tan(x)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char c_tan_doc [] =
|
||||||
|
"tan(x)\n\
|
||||||
|
\n\
|
||||||
|
Return the tangent of x.";
|
||||||
|
|
||||||
|
|
||||||
static Py_complex c_tanh(x)
|
static Py_complex c_tanh(x)
|
||||||
Py_complex x;
|
Py_complex x;
|
||||||
{
|
{
|
||||||
|
@ -223,6 +315,11 @@ static Py_complex c_tanh(x)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char c_tanh_doc [] =
|
||||||
|
"tanh(x)\n\
|
||||||
|
\n\
|
||||||
|
Return the hyperbolic tangent of x.";
|
||||||
|
|
||||||
|
|
||||||
/* And now the glue to make them available from Python: */
|
/* And now the glue to make them available from Python: */
|
||||||
|
|
||||||
|
@ -281,23 +378,28 @@ FUNC1(cmath_tan, c_tan)
|
||||||
FUNC1(cmath_tanh, c_tanh)
|
FUNC1(cmath_tanh, c_tanh)
|
||||||
|
|
||||||
|
|
||||||
|
static char module_doc [] =
|
||||||
|
"This module is always available. It provides access to mathematical\n\
|
||||||
|
functions for complex numbers.";
|
||||||
|
|
||||||
|
|
||||||
static PyMethodDef cmath_methods[] = {
|
static PyMethodDef cmath_methods[] = {
|
||||||
{"acos", cmath_acos, 1},
|
{"acos", cmath_acos, 1, c_acos_doc},
|
||||||
{"acosh", cmath_acosh, 1},
|
{"acosh", cmath_acosh, 1, c_acosh_doc},
|
||||||
{"asin", cmath_asin, 1},
|
{"asin", cmath_asin, 1, c_asin_doc},
|
||||||
{"asinh", cmath_asinh, 1},
|
{"asinh", cmath_asinh, 1, c_asinh_doc},
|
||||||
{"atan", cmath_atan, 1},
|
{"atan", cmath_atan, 1, c_atan_doc},
|
||||||
{"atanh", cmath_atanh, 1},
|
{"atanh", cmath_atanh, 1, c_atanh_doc},
|
||||||
{"cos", cmath_cos, 1},
|
{"cos", cmath_cos, 1, c_cos_doc},
|
||||||
{"cosh", cmath_cosh, 1},
|
{"cosh", cmath_cosh, 1, c_cosh_doc},
|
||||||
{"exp", cmath_exp, 1},
|
{"exp", cmath_exp, 1, c_exp_doc},
|
||||||
{"log", cmath_log, 1},
|
{"log", cmath_log, 1, c_log_doc},
|
||||||
{"log10", cmath_log10, 1},
|
{"log10", cmath_log10, 1, c_log10_doc},
|
||||||
{"sin", cmath_sin, 1},
|
{"sin", cmath_sin, 1, c_sin_doc},
|
||||||
{"sinh", cmath_sinh, 1},
|
{"sinh", cmath_sinh, 1, c_sinh_doc},
|
||||||
{"sqrt", cmath_sqrt, 1},
|
{"sqrt", cmath_sqrt, 1, c_sqrt_doc},
|
||||||
{"tan", cmath_tan, 1},
|
{"tan", cmath_tan, 1, c_tan_doc},
|
||||||
{"tanh", cmath_tanh, 1},
|
{"tanh", cmath_tanh, 1, c_tanh_doc},
|
||||||
{NULL, NULL} /* sentinel */
|
{NULL, NULL} /* sentinel */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -306,7 +408,7 @@ initcmath()
|
||||||
{
|
{
|
||||||
PyObject *m, *d, *v;
|
PyObject *m, *d, *v;
|
||||||
|
|
||||||
m = Py_InitModule("cmath", cmath_methods);
|
m = Py_InitModule3("cmath", cmath_methods, module_doc);
|
||||||
d = PyModule_GetDict(m);
|
d = PyModule_GetDict(m);
|
||||||
PyDict_SetItemString(d, "pi",
|
PyDict_SetItemString(d, "pi",
|
||||||
v = PyFloat_FromDouble(atan(1.0) * 4.0));
|
v = PyFloat_FromDouble(atan(1.0) * 4.0));
|
||||||
|
|
|
@ -109,40 +109,63 @@ math_2(args, func)
|
||||||
return PyFloat_FromDouble(x);
|
return PyFloat_FromDouble(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define FUNC1(stubname, func) \
|
#define FUNC1(stubname, func, docstring_name, docstring) \
|
||||||
static PyObject * stubname(self, args) PyObject *self, *args; { \
|
static PyObject * stubname(self, args) PyObject *self, *args; { \
|
||||||
return math_1(args, func); \
|
return math_1(args, func); \
|
||||||
}
|
}\
|
||||||
|
static char docstring_name [] = docstring;
|
||||||
|
|
||||||
#define FUNC2(stubname, func) \
|
#define FUNC2(stubname, func, docstring_name, docstring) \
|
||||||
static PyObject * stubname(self, args) PyObject *self, *args; { \
|
static PyObject * stubname(self, args) PyObject *self, *args; { \
|
||||||
return math_2(args, func); \
|
return math_2(args, func); \
|
||||||
}
|
}\
|
||||||
|
static char docstring_name [] = docstring;
|
||||||
|
|
||||||
FUNC1(math_acos, acos)
|
FUNC1(math_acos, acos, math_acos_doc,
|
||||||
FUNC1(math_asin, asin)
|
"acos(x)\n\nReturn the arc cosine of x.")
|
||||||
FUNC1(math_atan, atan)
|
FUNC1(math_asin, asin, math_asin_doc,
|
||||||
FUNC2(math_atan2, atan2)
|
"asin(x)\n\nReturn the arc sine of x.")
|
||||||
FUNC1(math_ceil, ceil)
|
FUNC1(math_atan, atan, math_atan_doc,
|
||||||
FUNC1(math_cos, cos)
|
"atan(x)\n\nReturn the arc tangent of x.")
|
||||||
FUNC1(math_cosh, cosh)
|
FUNC2(math_atan2, atan2, math_atan2_doc,
|
||||||
FUNC1(math_exp, exp)
|
"atan2(x)\n\nReturn atan(x /y).")
|
||||||
FUNC1(math_fabs, fabs)
|
FUNC1(math_ceil, ceil, math_ceil_doc,
|
||||||
FUNC1(math_floor, floor)
|
"ceil(x)\n\nReturn the ceiling of x as a real.")
|
||||||
FUNC2(math_fmod, fmod)
|
FUNC1(math_cos, cos, math_cos_doc,
|
||||||
FUNC2(math_hypot, hypot)
|
"cos(x)\n\nReturn the cosine of x.")
|
||||||
FUNC1(math_log, log)
|
FUNC1(math_cosh, cosh, math_cosh_doc,
|
||||||
FUNC1(math_log10, log10)
|
"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 ... */
|
#ifdef MPW_3_1 /* This hack is needed for MPW 3.1 but not for 3.2 ... */
|
||||||
FUNC2(math_pow, power)
|
FUNC2(math_pow, power, math_pow_doc,
|
||||||
|
"power(x,y)\n\nReturn x**y.")
|
||||||
#else
|
#else
|
||||||
FUNC2(math_pow, pow)
|
FUNC2(math_pow, pow, math_pow_doc,
|
||||||
|
"pow(x,y)\n\nReturn x**y.")
|
||||||
#endif
|
#endif
|
||||||
FUNC1(math_sin, sin)
|
FUNC1(math_sin, sin, math_sin_doc,
|
||||||
FUNC1(math_sinh, sinh)
|
"sin(x)\n\nReturn the sine of x.")
|
||||||
FUNC1(math_sqrt, sqrt)
|
FUNC1(math_sinh, sinh, math_sinh_doc,
|
||||||
FUNC1(math_tan, tan)
|
"sinh(x)\n\nReturn the hyperbolic sine of x.")
|
||||||
FUNC1(math_tanh, tanh)
|
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 *
|
static PyObject *
|
||||||
|
@ -162,6 +185,12 @@ math_frexp(self, args)
|
||||||
return Py_BuildValue("(di)", x, i);
|
return Py_BuildValue("(di)", x, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char math_frexp_doc [] =
|
||||||
|
"frexp(x)\n\
|
||||||
|
\n\
|
||||||
|
Return the matissa and exponent for x. The mantissa is positive.";
|
||||||
|
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
math_ldexp(self, args)
|
math_ldexp(self, args)
|
||||||
PyObject *self;
|
PyObject *self;
|
||||||
|
@ -182,6 +211,12 @@ math_ldexp(self, args)
|
||||||
return PyFloat_FromDouble(x);
|
return PyFloat_FromDouble(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char math_ldexp_doc [] =
|
||||||
|
"ldexp_doc(x, i)\n\
|
||||||
|
\n\
|
||||||
|
Return x * (2**i).";
|
||||||
|
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
math_modf(self, args)
|
math_modf(self, args)
|
||||||
PyObject *self;
|
PyObject *self;
|
||||||
|
@ -206,39 +241,51 @@ math_modf(self, args)
|
||||||
return Py_BuildValue("(dd)", x, y);
|
return Py_BuildValue("(dd)", x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char math_modf_doc [] =
|
||||||
|
"modf(x)\n\
|
||||||
|
\n\
|
||||||
|
Return the fractional and integer parts of x. Both results carry the sign\n\
|
||||||
|
of x. The integer part is returned as a real.";
|
||||||
|
|
||||||
|
|
||||||
static PyMethodDef math_methods[] = {
|
static PyMethodDef math_methods[] = {
|
||||||
{"acos", math_acos},
|
{"acos", math_acos, 0, math_acos_doc},
|
||||||
{"asin", math_asin},
|
{"asin", math_asin, 0, math_asin_doc},
|
||||||
{"atan", math_atan},
|
{"atan", math_atan, 0, math_atan_doc},
|
||||||
{"atan2", math_atan2},
|
{"atan2", math_atan2, 0, math_atan2_doc},
|
||||||
{"ceil", math_ceil},
|
{"ceil", math_ceil, 0, math_ceil_doc},
|
||||||
{"cos", math_cos},
|
{"cos", math_cos, 0, math_cos_doc},
|
||||||
{"cosh", math_cosh},
|
{"cosh", math_cosh, 0, math_cosh_doc},
|
||||||
{"exp", math_exp},
|
{"exp", math_exp, 0, math_exp_doc},
|
||||||
{"fabs", math_fabs},
|
{"fabs", math_fabs, 0, math_fabs_doc},
|
||||||
{"floor", math_floor},
|
{"floor", math_floor, 0, math_floor_doc},
|
||||||
{"fmod", math_fmod},
|
{"fmod", math_fmod, 0, math_fmod_doc},
|
||||||
{"frexp", math_frexp},
|
{"frexp", math_frexp, 0, math_frexp_doc},
|
||||||
{"hypot", math_hypot},
|
{"hypot", math_hypot, 0, math_hypot_doc},
|
||||||
{"ldexp", math_ldexp},
|
{"ldexp", math_ldexp, 0, math_ldexp_doc},
|
||||||
{"log", math_log},
|
{"log", math_log, 0, math_log_doc},
|
||||||
{"log10", math_log10},
|
{"log10", math_log10, 0, math_log10_doc},
|
||||||
{"modf", math_modf},
|
{"modf", math_modf, 0, math_modf_doc},
|
||||||
{"pow", math_pow},
|
{"pow", math_pow, 0, math_pow_doc},
|
||||||
{"sin", math_sin},
|
{"sin", math_sin, 0, math_sin_doc},
|
||||||
{"sinh", math_sinh},
|
{"sinh", math_sinh, 0, math_sinh_doc},
|
||||||
{"sqrt", math_sqrt},
|
{"sqrt", math_sqrt, 0, math_sqrt_doc},
|
||||||
{"tan", math_tan},
|
{"tan", math_tan, 0, math_tan_doc},
|
||||||
{"tanh", math_tanh},
|
{"tanh", math_tanh, 0, math_tanh_doc},
|
||||||
{NULL, NULL} /* sentinel */
|
{NULL, NULL} /* sentinel */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static char module_doc [] =
|
||||||
|
"This module is always available. It provides access to the\n\
|
||||||
|
mathematical functions defined by the C standard.";
|
||||||
|
|
||||||
DL_EXPORT(void)
|
DL_EXPORT(void)
|
||||||
initmath()
|
initmath()
|
||||||
{
|
{
|
||||||
PyObject *m, *d, *v;
|
PyObject *m, *d, *v;
|
||||||
|
|
||||||
m = Py_InitModule("math", math_methods);
|
m = Py_InitModule3("math", math_methods, module_doc);
|
||||||
d = PyModule_GetDict(m);
|
d = PyModule_GetDict(m);
|
||||||
|
|
||||||
if (!(v = PyFloat_FromDouble(atan(1.0) * 4.0)))
|
if (!(v = PyFloat_FromDouble(atan(1.0) * 4.0)))
|
||||||
|
|
Loading…
Reference in New Issue