diff options
author | Eric Wieser <wieser.eric@gmail.com> | 2018-05-29 09:28:13 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-29 09:28:13 -0700 |
commit | 6246cf19fdda3ccca4338dcec2f3956294e30ce7 (patch) | |
tree | f56dbf9be81c725aa88ffed6f893910324912a32 /doc/source/reference | |
parent | 9e4403deb37d6dd5658a4a2cb1de14274a806e98 (diff) | |
parent | d7f4eef6544e811840b3d1354b2d38ed3ae5a967 (diff) | |
download | numpy-6246cf19fdda3ccca4338dcec2f3956294e30ce7.tar.gz |
Merge pull request #11177 from mhvk/gufunc-docs-improvement
DOC: improvement of the documentation for gufunc.
Diffstat (limited to 'doc/source/reference')
-rw-r--r-- | doc/source/reference/c-api.generalized-ufuncs.rst | 7 | ||||
-rw-r--r-- | doc/source/reference/c-api.ufunc.rst | 26 | ||||
-rw-r--r-- | doc/source/reference/ufuncs.rst | 4 |
3 files changed, 25 insertions, 12 deletions
diff --git a/doc/source/reference/c-api.generalized-ufuncs.rst b/doc/source/reference/c-api.generalized-ufuncs.rst index a53228cb5..dd8cf6558 100644 --- a/doc/source/reference/c-api.generalized-ufuncs.rst +++ b/doc/source/reference/c-api.generalized-ufuncs.rst @@ -101,6 +101,7 @@ Dimension Index enumerates the dimension names according to the order of the first occurrence of each name in the signature. +.. _details-of-signature: Details of Signature -------------------- @@ -126,9 +127,9 @@ The formal syntax of signatures is as follows:: <Output arguments> ::= <Argument list> <Argument list> ::= nil | <Argument> | <Argument> "," <Argument list> <Argument> ::= "(" <Core dimension list> ")" - <Core dimension list> ::= nil | <Dimension name> | - <Dimension name> "," <Core dimension list> - <Dimension name> ::= valid Python variable name + <Core dimension list> ::= nil | <Core dimension name> | + <Core dimension name> "," <Core dimension list> + <Core dimension name> ::= valid Python variable name Notes: diff --git a/doc/source/reference/c-api.ufunc.rst b/doc/source/reference/c-api.ufunc.rst index 79ad256f5..02a35cf56 100644 --- a/doc/source/reference/c-api.ufunc.rst +++ b/doc/source/reference/c-api.ufunc.rst @@ -93,12 +93,23 @@ Functions the corresponding 1-d loop function in the func array. :param types: - Must be of length (*nin* + *nout*) \* *ntypes*, and it - contains the data-types (built-in only) that the corresponding - function in the *func* array can deal with. + Length ``(nin + nout) * ntypes`` array of ``char`` encoding the + :ref:`PyArray_Descr.type_num` (built-in only) that the corresponding + function in the ``func`` array accepts. For instance, for a comparison + ufunc with three ``ntypes``, two ``nin`` and one ``nout``, where the + first function accepts :ref:`npy_int32` and the the second + :ref:`npy_int64`, with both returning :ref:`npy_bool`, ``types`` would + be ``(char[]) {5, 5, 0, 7, 7, 0}`` since ``NPY_INT32`` is 5, + ``NPY_INT64`` is 7, and ``NPY_BOOL`` is 0 (on the python side, these + are exposed via :ref:`dtype.num`, i.e., for the example here, + ``dtype(np.int32).num``, ``dtype(np.int64).num``, and + ``dtype(np.bool_).num``, resp.). + + :ref:`casting-rules` will be used at runtime to find the first + ``func`` callable by the input/output provided. :param ntypes: - How many different data-type "signatures" the ufunc has implemented. + How many different data-type-specific functions the ufunc has implemented. :param nin: The number of inputs to this operation. @@ -129,10 +140,11 @@ Functions int nin, int nout, int identity, char* name, char* doc, int unused, char *signature) This function is very similar to PyUFunc_FromFuncAndData above, but has - an extra *signature* argument, to define generalized universal functions. + an extra *signature* argument, to define a + :ref:`generalized universal functions <c-api.generalized-ufuncs>`. Similarly to how ufuncs are built around an element-by-element operation, - gufuncs are around subarray-by-subarray operations, the signature defining - the subarrays to operate on. + gufuncs are around subarray-by-subarray operations, the + :ref:`signature <details-of-signature>` defining the subarrays to operate on. :param signature: The signature for the new gufunc. Setting it to NULL is equivalent diff --git a/doc/source/reference/ufuncs.rst b/doc/source/reference/ufuncs.rst index 68d85ccf5..995542d77 100644 --- a/doc/source/reference/ufuncs.rst +++ b/doc/source/reference/ufuncs.rst @@ -424,8 +424,8 @@ advanced usage and will not typically be used. provided by the **types** attribute of the ufunc object. For backwards compatibility this argument can also be provided as *sig*, although the long form is preferred. Note that this should not be confused with - the generalized ufunc signature that is stored in the **signature** - attribute of the of the ufunc object. + the generalized ufunc :ref:`signature <details-of-signature>` that is + stored in the **signature** attribute of the of the ufunc object. *extobj* |