I really, really, really like the Cephes module and a lot of the work
Travis Oliphant has been doing on Numeric Python. Nice to see Numeric
getting more and more powerful all the time.
However, as more and more functions get added to the libraries, their
names become more and more obscure, and it sure would be nice to have
doc-strings for them. For the stock Numeric ufuncs like "add", the
meanings are self-evident, but things like "pdtri" and "incbet" are a
bit less obvious.
(One of my pet peeves with Python is that there are so many functions
and classes with empty doc-strings. Bit by bit, I'm trying to add
them in).
However, one little problem with the current Numeric implementation is
that ufunc objects don't have support for a doc string, the doc string
is hardwired in the type object, and comes up as:
"Optimizied FUNCtions make it possible to implement arithmetic with
matrices efficiently"
This is not only non-helpful, it's misspelled ("Optimizied"?)
Well, according to the charter, a well-behaved Nummie will
"Fix bugs at will, without prior consultation."
But a well-behaved Nummie wil also
"Add new features only after consultation with other Nummies"
So, I hereby declare doing something about the useless doc-strings to
be fixing a bug and not adding a feature ;-)
The patch below adds doc strings to all the ufuncs in the Cephes
module. They are automatically extracted from the HTML documentation
for the Cephes module. (In the process of doing this, I also added
some missing items to said HTML documentation).
This patch depends on another patch, which I am submitting via the
SourceForge, which allows ufunc objects to have doc strings.
With these patches, you get this:
>>> import cephes
>>> print cephes.incbet.__doc__
incbet(a,b,x) returns the incomplete beta integral of the
arguments, evaluated from zero to x: gamma(a+b) / (gamma(a)*gamma(b))
* integral(t**(a-1) (1-t)**(b-1), t=0..x).
instead of this:
>>> print cephes.incbet.__doc__
Optimizied FUNCtions make it possible to implement arithmetic with
matrices efficiently
Isn't that nicer?
"Ni-Ni-Numpy!"
Here's the "gendoc.py" script to pull the docstrings out of
included_functions.h:
#!/usr/bin/env python
"""generate cephes_doc.h from included_functions.html"""
import string
def parse(infile):
d={}
key=None
val=''
for line in infile.readlines():
if not string.strip(line):
continue
if line[0]=='<':
if key and val:
d[key]=string.strip(val)
key,val=None,None
if line[:4]=='<DT>':
tok=string.split(line)
tok=string.split(tok[-1],'(')
key=tok[0]
elif line[:4]=='<DD>' and key:
val=line[4:]
else:
if val:
val=val+line
return d
if __name__=="__main__":
d = parse(open("docs/included_functions.html",'r'))
keys = d.keys()
keys.sort()
ofile=open("cephes_doc.h",'w')
for key in keys:
ofile.write('#define %s_doc "%s"\n'%(key,repr(d[key])[1:-1]))
ofile.close()
And here are the patches to cephes:
--- cephes-1.2/Makefile Tue Dec 28 15:53:11 1999
+++ cephes-1.2.cgw/Makefile Thu Mar 23 14:40:02 2000
@@ -15,8 +15,11 @@
$(FC) -shared $(FFLAGS) -o cephesmodule.so $(OBJS) \
-L./cephes -lcephes -L./amos -lamos -L./toms -ltoms
-cephesmodule.o: cephesmodule.c
+cephesmodule.o: cephesmodule.c cephes_doc.h
$(CC) -c $(CFLAGS) -fPIC cephesmodule.c
+
+cephes_doc.h: docs/included_functions.html
+ python gendoc.py
amos/libamos.a:
cd amos && make CC=$(CC) CFLAGS="$(CFLAGS)" FC=$(FC) FFLAGS="$(FFLAGS)"
--- cephes-1.2/docs/included_functions.html Sat Mar 27 00:27:18 1999
+++ cephes-1.2.cgw/docs/included_functions.html Thu Mar 23 14:39:03 2000
@@ -7,7 +7,7 @@
<DT>(Ai,Aip,Bi,Bip) = airy(z)
<DD>airy(z) calculates the Airy functions and their derivatives
evaluated at real or complex number z. The Airy functions Ai and Bi
-are two independent solutions of y"(x)=xy. Aip and Bip are the first derivatives
+are two independent solutions of y''(x)=xy. Aip and Bip are the first derivatives
evaluated at x of Ai and Bi respectively.
<DT>(Aie,Aipe,Bie,Bipe) = airye(z)
@@ -19,7 +19,7 @@
<h1> Elliptic Functions and Integrals </h1>
<DL>
-<DT>(sn,cn,dn,ph) = ellpj_sn(u,m)
+<DT>(sn,cn,dn,ph) = ellpj(u,m)
<DD>ellpj calculates the Jacobian elliptic functions of
parameter m between 0 and 1, and real u. The returned functions are
often written sn(u|m), cn(u|m), and dn(u|m). The value of ph is such
@@ -430,11 +430,12 @@
<DT>y = cosm1(x)
<DD>calculates cos(x) - 1 for use when x is near zero.
-</DL>
-
-
-
+<DT>y = round(x)
+<DD>Returns the nearest integer to x as a double precision
+floating point result. If x ends in 0.5 exactly, the
+nearest even integer is chosen.
+</DL>
--- cephes-1.2/cephesmodule.c Tue Dec 28 15:32:26 1999
+++ cephes-1.2.cgw/cephesmodule.c Thu Mar 23 14:24:37 2000
@@ -23,6 +23,8 @@
#include <math.h>
#endif
+#include "cephes_doc.h"
+
static PyUFuncGenericFunction cephes1_functions[] = { NULL, NULL, };
static PyUFuncGenericFunction cephes1_2_functions[] = { NULL, NULL, };
static PyUFuncGenericFunction cephes1c_4_functions[] = { NULL, NULL, NULL, NULL };
@@ -220,335 +222,435 @@
/* Create function objects for each function call and insert
them in the dictionary */
- f = PyUFunc_FromFuncAndData(cephes3a_functions, bdtrc_data, cephes_4_types, 2, 3, 1, PyUFunc_None, "bdtrc", 1);
+ f = PyUFunc_FromFuncAndData(cephes3a_functions, bdtrc_data, cephes_4_types,
+ 2, 3, 1, PyUFunc_None, "bdtrc", bdtrc_doc, 1);
PyDict_SetItemString(dictionary, "bdtrc", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes3a_functions, bdtr_data, cephes_4_types, 2, 3, 1, PyUFunc_None, "bdtr", 1);
+ f = PyUFunc_FromFuncAndData(cephes3a_functions, bdtr_data, cephes_4_types,
+ 2, 3, 1, PyUFunc_None, "bdtr", bdtr_doc, 1);
PyDict_SetItemString(dictionary, "bdtr", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes3a_functions, bdtri_data, cephes_4_types, 2, 3, 1, PyUFunc_None, "bdtri", 1);
+ f = PyUFunc_FromFuncAndData(cephes3a_functions, bdtri_data, cephes_4_types,
+ 2, 3, 1, PyUFunc_None, "bdtri", bdtri_doc, 1);
PyDict_SetItemString(dictionary, "bdtri", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes3_functions, btdtr_data, cephes_4_types, 2, 3, 1, PyUFunc_None, "btdtr", 1);
+ f = PyUFunc_FromFuncAndData(cephes3_functions, btdtr_data, cephes_4_types,
+ 2, 3, 1, PyUFunc_None, "btdtr", btdtr_doc, 1);
PyDict_SetItemString(dictionary, "btdtr", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes3a_functions, fdtrc_data, cephes_4_types, 2, 3, 1, PyUFunc_None, "fdtrc", 1);
+ f = PyUFunc_FromFuncAndData(cephes3a_functions, fdtrc_data, cephes_4_types,
+ 2, 3, 1, PyUFunc_None, "fdtrc", fdtrc_doc, 1);
PyDict_SetItemString(dictionary, "fdtrc", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes3a_functions, fdtr_data, cephes_4_types, 2, 3, 1, PyUFunc_None, "fdtr", 1);
+ f = PyUFunc_FromFuncAndData(cephes3a_functions, fdtr_data, cephes_4_types,
+ 2, 3, 1, PyUFunc_None, "fdtr", fdtr_doc, 1);
PyDict_SetItemString(dictionary, "fdtr", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes3a_functions, fdtri_data, cephes_4_types, 2, 3, 1, PyUFunc_None, "fdtri", 1);
+ f = PyUFunc_FromFuncAndData(cephes3a_functions, fdtri_data, cephes_4_types,
+ 2, 3, 1, PyUFunc_None, "fdtri", fdtri_doc, 1);
PyDict_SetItemString(dictionary, "fdtri", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes3_functions, gdtrc_data, cephes_4_types, 2, 3, 1, PyUFunc_None, "gdtrc", 1);
+ f = PyUFunc_FromFuncAndData(cephes3_functions, gdtrc_data, cephes_4_types,
+ 2, 3, 1, PyUFunc_None, "gdtrc", gdtrc_doc, 1);
PyDict_SetItemString(dictionary, "gdtrc", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes3_functions, gdtr_data, cephes_4_types, 2, 3, 1, PyUFunc_None, "gdtr", 1);
+ f = PyUFunc_FromFuncAndData(cephes3_functions, gdtr_data, cephes_4_types,
+ 2, 3, 1, PyUFunc_None, "gdtr", gdtr_doc, 1);
PyDict_SetItemString(dictionary, "gdtr", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes4_functions, hyp2f1_data, cephes_5_types, 2, 4, 1, PyUFunc_None, "hyp2f1", 1);
+ f = PyUFunc_FromFuncAndData(cephes4_functions, hyp2f1_data, cephes_5_types,
+ 2, 4, 1, PyUFunc_None, "hyp2f1", hyp2f1_doc, 1);
PyDict_SetItemString(dictionary, "hyp2f1", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes3_functions, hyperg_data, cephes_4_types, 2, 3, 1, PyUFunc_None, "hyperg", 1);
+ f = PyUFunc_FromFuncAndData(cephes3_functions, hyperg_data, cephes_4_types,
+ 2, 3, 1, PyUFunc_None, "hyperg", hyperg_doc, 1);
PyDict_SetItemString(dictionary, "hyperg", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes4a_2_functions, hyp2f0_data, cephes_6_types, 2, 4, 2, PyUFunc_None, "hyp2f0", 1);
+ f = PyUFunc_FromFuncAndData(cephes4a_2_functions, hyp2f0_data, cephes_6_types,
+ 2, 4, 2, PyUFunc_None, "hyp2f0", hyp2f0_doc, 1);
PyDict_SetItemString(dictionary, "hyp2f0", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes4_2_functions, onef2_data, cephes_6_types, 2, 4, 2, PyUFunc_None, "onef2", 1);
+ f = PyUFunc_FromFuncAndData(cephes4_2_functions, onef2_data, cephes_6_types,
+ 2, 4, 2, PyUFunc_None, "onef2", onef2_doc, 1);
PyDict_SetItemString(dictionary, "onef2", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes4_2_functions, threef0_data, cephes_6_types, 2, 4, 2, PyUFunc_None, "threef0", 1);
+ f = PyUFunc_FromFuncAndData(cephes4_2_functions, threef0_data, cephes_6_types,
+ 2, 4, 2, PyUFunc_None, "threef0", threef0_doc, 1);
PyDict_SetItemString(dictionary, "threef0", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes3_functions, incbet_data, cephes_4_types, 2, 3, 1, PyUFunc_None, "incbet", 1);
+ f = PyUFunc_FromFuncAndData(cephes3_functions, incbet_data, cephes_4_types,
+ 2, 3, 1, PyUFunc_None, "incbet", incbet_doc, 1);
PyDict_SetItemString(dictionary, "incbet", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes3_functions, incbi_data, cephes_4_types, 2, 3, 1, PyUFunc_None, "incbi", 1);
+ f = PyUFunc_FromFuncAndData(cephes3_functions, incbi_data, cephes_4_types,
+ 2, 3, 1, PyUFunc_None, "incbi", incbi_doc, 1);
PyDict_SetItemString(dictionary, "incbi", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes3a_functions, nbdtrc_data, cephes_4_types, 2, 3, 1, PyUFunc_None, "nbdtrc", 1);
+ f = PyUFunc_FromFuncAndData(cephes3a_functions, nbdtrc_data, cephes_4_types,
+ 2, 3, 1, PyUFunc_None, "nbdtrc", nbdtrc_doc, 1);
PyDict_SetItemString(dictionary, "nbdtrc", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes3a_functions, nbdtr_data, cephes_4_types, 2, 3, 1, PyUFunc_None, "nbdtr", 1);
+ f = PyUFunc_FromFuncAndData(cephes3a_functions, nbdtr_data, cephes_4_types,
+ 2, 3, 1, PyUFunc_None, "nbdtr", nbdtr_doc, 1);
PyDict_SetItemString(dictionary, "nbdtr", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes3a_functions, nbdtri_data, cephes_4_types, 2, 3, 1, PyUFunc_None, "nbdtri", 1);
+ f = PyUFunc_FromFuncAndData(cephes3a_functions, nbdtri_data, cephes_4_types,
+ 2, 3, 1, PyUFunc_None, "nbdtri", nbdtri_doc, 1);
PyDict_SetItemString(dictionary, "nbdtri", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2_functions, beta_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "beta", 1);
+ f = PyUFunc_FromFuncAndData(cephes2_functions, beta_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "beta", beta_doc, 1);
PyDict_SetItemString(dictionary, "beta", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2_functions, lbeta_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "lbeta", 1);
+ f = PyUFunc_FromFuncAndData(cephes2_functions, lbeta_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "lbeta", lbeta_doc, 1);
PyDict_SetItemString(dictionary, "lbeta", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, cbrt_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "cbrt", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, cbrt_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "cbrt", cbrt_doc, 1);
PyDict_SetItemString(dictionary, "cbrt", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2_functions, chdtrc_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "chdtrc", 1);
+ f = PyUFunc_FromFuncAndData(cephes2_functions, chdtrc_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "chdtrc", chdtrc_doc, 1);
PyDict_SetItemString(dictionary, "chdtrc", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2_functions, chdtr_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "chdtr", 1);
+ f = PyUFunc_FromFuncAndData(cephes2_functions, chdtr_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "chdtr", chdtr_doc, 1);
PyDict_SetItemString(dictionary, "chdtr", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2_functions, chdtri_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "chdtri", 1);
+ f = PyUFunc_FromFuncAndData(cephes2_functions, chdtri_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "chdtri", chdtri_doc, 1);
PyDict_SetItemString(dictionary, "chdtri", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, dawsn_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "dawsn", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, dawsn_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "dawsn", dawsn_doc, 1);
PyDict_SetItemString(dictionary, "dawsn", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2_functions, ellie_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "ellie", 1);
+ f = PyUFunc_FromFuncAndData(cephes2_functions, ellie_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "ellie", ellie_doc, 1);
PyDict_SetItemString(dictionary, "ellie", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2_functions, ellik_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "ellik", 1);
+ f = PyUFunc_FromFuncAndData(cephes2_functions, ellik_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "ellik", ellik_doc, 1);
PyDict_SetItemString(dictionary, "ellik", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, ellpe_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "ellpe", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, ellpe_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "ellpe", ellpe_doc, 1);
PyDict_SetItemString(dictionary, "ellpe", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, ellpk_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "ellpk", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, ellpk_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "ellpk", ellpk_doc, 1);
PyDict_SetItemString(dictionary, "ellpk", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, exp10_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "exp10", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, exp10_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "exp10", exp10_doc, 1);
PyDict_SetItemString(dictionary, "exp10", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, exp2_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "exp2", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, exp2_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "exp2", exp2_doc, 1);
PyDict_SetItemString(dictionary, "exp2", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, Gamma_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "gamma", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, Gamma_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "gamma", gamma_doc, 1);
PyDict_SetItemString(dictionary, "gamma", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, lgam_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "lgam", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, lgam_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "lgam", lgam_doc, 1);
PyDict_SetItemString(dictionary, "lgam", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, i0_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "i0", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, i0_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "i0", i0_doc, 1);
PyDict_SetItemString(dictionary, "i0", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, i0e_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "i0e", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, i0e_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "i0e", i0e_doc, 1);
PyDict_SetItemString(dictionary, "i0e", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, i1_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "i1", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, i1_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "i1", i1_doc, 1);
PyDict_SetItemString(dictionary, "i1", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, i1e_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "i1e", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, i1e_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "i1e", i1e_doc, 1);
PyDict_SetItemString(dictionary, "i1e", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2_functions, igamc_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "igamc", 1);
+ f = PyUFunc_FromFuncAndData(cephes2_functions, igamc_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "igamc", igamc_doc, 1);
PyDict_SetItemString(dictionary, "igamc", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2_functions, igam_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "igam", 1);
+ f = PyUFunc_FromFuncAndData(cephes2_functions, igam_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "igam", igam_doc, 1);
PyDict_SetItemString(dictionary, "igam", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2_functions, igami_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "igami", 1);
+ f = PyUFunc_FromFuncAndData(cephes2_functions, igami_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "igami", igami_doc, 1);
PyDict_SetItemString(dictionary, "igami", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2c_functions, iv_data, cephes_3c_types, 4, 2, 1, PyUFunc_None, "iv", 1);
+ f = PyUFunc_FromFuncAndData(cephes2c_functions, iv_data, cephes_3c_types,
+ 4, 2, 1, PyUFunc_None, "iv", iv_doc, 1);
PyDict_SetItemString(dictionary, "iv", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2cp_functions, ive_data, cephes_3c_types, 4, 2, 1, PyUFunc_None, "ive", 1);
+ f = PyUFunc_FromFuncAndData(cephes2cp_functions, ive_data, cephes_3c_types,
+ 4, 2, 1, PyUFunc_None, "ive", ive_doc, 1);
PyDict_SetItemString(dictionary, "ive", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2_4_functions, ellpj_data, cephes_6_types, 2, 2, 4, PyUFunc_None, "ellpj", 1);
+ f = PyUFunc_FromFuncAndData(cephes2_4_functions, ellpj_data, cephes_6_types,
+ 2, 2, 4, PyUFunc_None, "ellpj", ellpj_doc, 1);
PyDict_SetItemString(dictionary, "ellpj", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2a_functions, expn_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "expn", 1);
+ f = PyUFunc_FromFuncAndData(cephes2a_functions, expn_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "expn", expn_doc, 1);
PyDict_SetItemString(dictionary, "expn", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2a_functions, jn_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "jn", 1);
+ f = PyUFunc_FromFuncAndData(cephes2a_functions, jn_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "jn", jn_doc, 1);
PyDict_SetItemString(dictionary, "jn", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2a_functions, kn_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "kn", 1);
+ f = PyUFunc_FromFuncAndData(cephes2a_functions, kn_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "kn", kn_doc, 1);
PyDict_SetItemString(dictionary, "kn", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2a_functions, pdtrc_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "pdtrc", 1);
+ f = PyUFunc_FromFuncAndData(cephes2a_functions, pdtrc_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "pdtrc", pdtrc_doc, 1);
PyDict_SetItemString(dictionary, "pdtrc", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2a_functions, pdtr_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "pdtr", 1);
+ f = PyUFunc_FromFuncAndData(cephes2a_functions, pdtr_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "pdtr", pdtr_doc, 1);
PyDict_SetItemString(dictionary, "pdtr", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2a_functions, pdtri_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "pdtri", 1);
+ f = PyUFunc_FromFuncAndData(cephes2a_functions, pdtri_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "pdtri", pdtri_doc, 1);
PyDict_SetItemString(dictionary, "pdtri", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2a_functions, stdtr_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "stdtr", 1);
+ f = PyUFunc_FromFuncAndData(cephes2a_functions, stdtr_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "stdtr", stdtr_doc, 1);
PyDict_SetItemString(dictionary, "stdtr", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2a_functions, stdtri_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "stdtri", 1);
+ f = PyUFunc_FromFuncAndData(cephes2a_functions, stdtri_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "stdtri", stdtri_doc, 1);
PyDict_SetItemString(dictionary, "stdtri", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2a_functions, yn_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "yn", 1);
+ f = PyUFunc_FromFuncAndData(cephes2a_functions, yn_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "yn", yn_doc, 1);
PyDict_SetItemString(dictionary, "yn", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2a_functions, smirnov_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "smirnov", 1);
+ f = PyUFunc_FromFuncAndData(cephes2a_functions, smirnov_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "smirnov", smirnov_doc, 1);
PyDict_SetItemString(dictionary, "smirnov", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2a_functions, smirnovi_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "smirnovi", 1);
+ f = PyUFunc_FromFuncAndData(cephes2a_functions, smirnovi_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "smirnovi", smirnovi_doc, 1);
PyDict_SetItemString(dictionary, "smirnovi", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1c_4_functions, airy_data, cephes_5c_types, 4, 1, 4, PyUFunc_None, "airy", 1);
+ f = PyUFunc_FromFuncAndData(cephes1c_4_functions, airy_data, cephes_5c_types,
+ 4, 1, 4, PyUFunc_None, "airy", airy_doc, 1);
PyDict_SetItemString(dictionary, "airy", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1cp_4_functions, airye_data, cephes_5c_types, 4, 1, 4, PyUFunc_None, "airye", 1);
+ f = PyUFunc_FromFuncAndData(cephes1cp_4_functions, airye_data, cephes_5c_types,
+ 4, 1, 4, PyUFunc_None, "airye", airye_doc, 1);
PyDict_SetItemString(dictionary, "airye", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_2_functions, fresnl_data, cephes_3_types, 2, 1, 2, PyUFunc_None, "fresnl", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_2_functions, fresnl_data, cephes_3_types,
+ 2, 1, 2, PyUFunc_None, "fresnl", fresnl_doc, 1);
PyDict_SetItemString(dictionary, "fresnl", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_2_functions, shichi_data, cephes_3_types, 2, 1, 2, PyUFunc_None, "shichi", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_2_functions, shichi_data, cephes_3_types,
+ 2, 1, 2, PyUFunc_None, "shichi", shichi_doc, 1);
PyDict_SetItemString(dictionary, "shichi", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_2_functions, sici_data, cephes_3_types, 2, 1, 2, PyUFunc_None, "sici", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_2_functions, sici_data, cephes_3_types,
+ 2, 1, 2, PyUFunc_None, "sici", sici_doc, 1);
PyDict_SetItemString(dictionary, "sici", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, j0_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "j0", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, j0_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "j0", j0_doc, 1);
PyDict_SetItemString(dictionary, "j0", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, y0_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "y0", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, y0_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "y0", y0_doc, 1);
PyDict_SetItemString(dictionary, "y0", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, j1_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "j1", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, j1_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "j1", j1_doc, 1);
PyDict_SetItemString(dictionary, "j1", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, y1_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "y1", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, y1_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "y1", y1_doc, 1);
PyDict_SetItemString(dictionary, "y1", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2c_functions, jv_data, cephes_3c_types, 4, 2, 1, PyUFunc_None, "jv", 1);
+ f = PyUFunc_FromFuncAndData(cephes2c_functions, jv_data, cephes_3c_types,
+ 4, 2, 1, PyUFunc_None, "jv", jv_doc, 1);
PyDict_SetItemString(dictionary, "jv", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2cp_functions, jve_data, cephes_3c_types, 4, 2, 1, PyUFunc_None, "jve", 1);
+ f = PyUFunc_FromFuncAndData(cephes2cp_functions, jve_data, cephes_3c_types,
+ 4, 2, 1, PyUFunc_None, "jve", jve_doc, 1);
PyDict_SetItemString(dictionary, "jve", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2c_functions, yv_data, cephes_3c_types, 4, 2, 1, PyUFunc_None, "yv", 1);
+ f = PyUFunc_FromFuncAndData(cephes2c_functions, yv_data, cephes_3c_types,
+ 4, 2, 1, PyUFunc_None, "yv", yv_doc, 1);
PyDict_SetItemString(dictionary, "yv", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2cp_functions, yve_data, cephes_3c_types, 4, 2, 1, PyUFunc_None, "yve", 1);
+ f = PyUFunc_FromFuncAndData(cephes2cp_functions, yve_data, cephes_3c_types,
+ 4, 2, 1, PyUFunc_None, "yve", yve_doc, 1);
PyDict_SetItemString(dictionary, "yve", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, k0_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "k0", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, k0_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "k0", k0_doc, 1);
PyDict_SetItemString(dictionary, "k0", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, k0e_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "k0e", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, k0e_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "k0e", k0e_doc, 1);
PyDict_SetItemString(dictionary, "k0e", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, k1_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "k1", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, k1_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "k1", k1_doc, 1);
PyDict_SetItemString(dictionary, "k1", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, k1e_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "k1e", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, k1e_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "k1e", k1e_doc, 1);
PyDict_SetItemString(dictionary, "k1e", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2cp_functions, kv_data, cephes_3c_types, 4, 2, 1, PyUFunc_None, "kv", 1);
+ f = PyUFunc_FromFuncAndData(cephes2cp_functions, kv_data, cephes_3c_types,
+ 4, 2, 1, PyUFunc_None, "kv", kv_doc, 1);
PyDict_SetItemString(dictionary, "kv", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2cp_functions, kve_data, cephes_3c_types, 4, 2, 1, PyUFunc_None, "kve", 1);
+ f = PyUFunc_FromFuncAndData(cephes2cp_functions, kve_data, cephes_3c_types,
+ 4, 2, 1, PyUFunc_None, "kve", kve_doc, 1);
PyDict_SetItemString(dictionary, "kve", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2cpp_functions, hankel1_data, cephes_3cp_types, 2, 2, 1, PyUFunc_None, "hankel1", 1);
+ f = PyUFunc_FromFuncAndData(cephes2cpp_functions, hankel1_data, cephes_3cp_types,
+ 2, 2, 1, PyUFunc_None, "hankel1", hankel1_doc, 1);
PyDict_SetItemString(dictionary, "hankel1", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2cpp_functions, hankel1e_data, cephes_3cp_types, 2, 2, 1, PyUFunc_None, "hankel1e", 1);
+ f = PyUFunc_FromFuncAndData(cephes2cpp_functions, hankel1e_data, cephes_3cp_types,
+ 2, 2, 1, PyUFunc_None, "hankel1e", hankel1e_doc, 1);
PyDict_SetItemString(dictionary, "hankel1e", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2cpp_functions, hankel2_data, cephes_3cp_types, 2, 2, 1, PyUFunc_None, "hankel2", 1);
+ f = PyUFunc_FromFuncAndData(cephes2cpp_functions, hankel2_data, cephes_3cp_types,
+ 2, 2, 1, PyUFunc_None, "hankel2", hankel2_doc, 1);
PyDict_SetItemString(dictionary, "hankel2", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2cpp_functions, hankel2e_data, cephes_3cp_types, 2, 2, 1, PyUFunc_None, "hankel2e", 1);
+ f = PyUFunc_FromFuncAndData(cephes2cpp_functions, hankel2e_data, cephes_3cp_types,
+ 2, 2, 1, PyUFunc_None, "hankel2e", hankel2e_doc, 1);
PyDict_SetItemString(dictionary, "hankel2e", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, ndtr_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "ndtr", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, ndtr_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "ndtr", ndtr_doc, 1);
PyDict_SetItemString(dictionary, "ndtr", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, erfc_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "erfc", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, erfc_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "erfc", erfc_doc, 1);
PyDict_SetItemString(dictionary, "erfc", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, erf_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "erf", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, erf_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "erf", erf_doc, 1);
PyDict_SetItemString(dictionary, "erf", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, ndtri_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "ndtri", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, ndtri_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "ndtri", ndtri_doc, 1);
PyDict_SetItemString(dictionary, "ndtri", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, psi_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "psi", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, psi_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "psi", psi_doc, 1);
PyDict_SetItemString(dictionary, "psi", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, rgamma_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "rgamma", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, rgamma_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "rgamma", rgamma_doc, 1);
PyDict_SetItemString(dictionary, "rgamma", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, round_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "round", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, round_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "round", round_doc, 1);
PyDict_SetItemString(dictionary, "round", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, sindg_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "sindg", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, sindg_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "sindg", sindg_doc, 1);
PyDict_SetItemString(dictionary, "sindg", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, cosdg_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "cosdg", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, cosdg_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "cosdg", cosdg_doc, 1);
PyDict_SetItemString(dictionary, "cosdg", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes3_functions, radian_data, cephes_4_types, 2, 3, 1, PyUFunc_None, "radian", 1);
+ f = PyUFunc_FromFuncAndData(cephes3_functions, radian_data, cephes_4_types,
+ 2, 3, 1, PyUFunc_None, "radian", radian_doc, 1);
PyDict_SetItemString(dictionary, "radian", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, tandg_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "tandg", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, tandg_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "tandg", tandg_doc, 1);
PyDict_SetItemString(dictionary, "tandg", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, cotdg_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "cotdg", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, cotdg_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "cotdg", cotdg_doc, 1);
PyDict_SetItemString(dictionary, "cotdg", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, log1p_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "log1p", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, log1p_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "log1p", log1p_doc, 1);
PyDict_SetItemString(dictionary, "log1p", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, expm1_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "expm1", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, expm1_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "expm1", expm1_doc, 1);
PyDict_SetItemString(dictionary, "expm1", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, cosm1_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "cosm1", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, cosm1_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "cosm1", cosm1_doc, 1);
PyDict_SetItemString(dictionary, "cosm1", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, spence_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "spence", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, spence_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "spence", spence_doc, 1);
PyDict_SetItemString(dictionary, "spence", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, zetac_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "zetac", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, zetac_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "zetac", zetac_doc, 1);
PyDict_SetItemString(dictionary, "zetac", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2_functions, struve_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "struve", 1);
+ f = PyUFunc_FromFuncAndData(cephes2_functions, struve_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "struve", struve_doc, 1);
PyDict_SetItemString(dictionary, "struve", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes2_functions, zeta_data, cephes_3_types, 2, 2, 1, PyUFunc_None, "zeta", 1);
+ f = PyUFunc_FromFuncAndData(cephes2_functions, zeta_data, cephes_3_types,
+ 2, 2, 1, PyUFunc_None, "zeta", zeta_doc, 1);
PyDict_SetItemString(dictionary, "zeta", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, kolmogorov_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "kolmogorov", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, kolmogorov_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "kolmogorov", kolmogorov_doc, 1);
PyDict_SetItemString(dictionary, "kolmogorov", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1_functions, kolmogi_data, cephes_2_types, 2, 1, 1, PyUFunc_None, "kolmogorovi", 1);
+ f = PyUFunc_FromFuncAndData(cephes1_functions, kolmogi_data, cephes_2_types,
+ 2, 1, 1, PyUFunc_None, "kolmogorovi", kolmogorovi_doc, 1);
PyDict_SetItemString(dictionary, "kolmogorovi", f);
Py_DECREF(f);
- f = PyUFunc_FromFuncAndData(cephes1c_functions, wofz_data, cephes_1c_types, 2, 1, 1, PyUFunc_None, "wofz", 1);
+ f = PyUFunc_FromFuncAndData(cephes1c_functions, wofz_data, cephes_1c_types,
+ 2, 1, 1, PyUFunc_None, "wofz", wofz_doc, 1);
PyDict_SetItemString(dictionary, "wofz", f);
Py_DECREF(f);
}
NB: This stuff won't work at all without the corresponding patches to
the Numeric core, to be posted shortly to the sourceforge site.
I really, really, really like the Cephes module and a lot of the work
Me too!
So, I hereby declare doing something about the useless doc-strings to be fixing a bug and not adding a feature ;-)
Great, this is a step in the right direction. I am still hoping for an interactive environment that lets me consult docstrings why I work, but that won't happen before most Python functions actually have docstrings. Konrad. -- ------------------------------------------------------------------------------- Konrad Hinsen | E-Mail: hinsen@cnrs-orleans.fr Centre de Biophysique Moleculaire (CNRS) | Tel.: +33-2.38.25.55.69 Rue Charles Sadron | Fax: +33-2.38.63.15.17 45071 Orleans Cedex 2 | Deutsch/Esperanto/English/ France | Nederlands/Francais -------------------------------------------------------------------------------
Great, this is a step in the right direction. I am still hoping for an interactive environment that lets me consult docstrings why I work, but that won't happen before most Python functions actually have docstrings.
Did you look at recent versions of IDLE (and Pythonwin, but not on your platforms =)? --david
The CVS version now has doc strings for all the functions in umath. (C. Waldman, P. Dubois).
participants (4)
-
Charles G Waldman -
David Ascher -
Konrad Hinsen -
Paul F. Dubois