diff options
author | Eric Wieser <wieser.eric@gmail.com> | 2017-04-17 23:41:36 +0100 |
---|---|---|
committer | Eric Wieser <wieser.eric@gmail.com> | 2018-11-12 09:14:50 -0800 |
commit | d3b2036949255e48ecbcfcc70ed2ea95c755cf2a (patch) | |
tree | 703569f42f06539eb1c7a95c841d5a271079ea5a /doc | |
parent | 97df928718a46b869d0d6675ffd6e8c539f32773 (diff) | |
download | numpy-d3b2036949255e48ecbcfcc70ed2ea95c755cf2a.tar.gz |
ENH: Allow ufunc.identity to be any python object
Diffstat (limited to 'doc')
-rw-r--r-- | doc/release/1.16.0-notes.rst | 9 | ||||
-rw-r--r-- | doc/source/reference/c-api.ufunc.rst | 21 |
2 files changed, 27 insertions, 3 deletions
diff --git a/doc/release/1.16.0-notes.rst b/doc/release/1.16.0-notes.rst index bb2b17782..7bfcb37ff 100644 --- a/doc/release/1.16.0-notes.rst +++ b/doc/release/1.16.0-notes.rst @@ -102,8 +102,13 @@ for unraveling. ``dims`` remains supported, but is now deprecated. C API changes ============= -The :c:data:`NPY_API_VERSION` was incremented to 0x0000D since -``core_dim_flags`` and ``core_dim_sizes`` were added to :c:type:`PyUFuncObject`. +The :c:data:`NPY_API_VERSION` was incremented to 0x0000D, due to the addition +of: + +* :c:member:`PyUFuncObject.core_dim_flags` +* :c:member:`PyUFuncObject.core_dim_sizes` +* :c:member:`PyUFuncObject.identity_value` +* :c:function:`PyUFunc_FromFuncAndDataAndSignatureAndIdentity` New Features ============ diff --git a/doc/source/reference/c-api.ufunc.rst b/doc/source/reference/c-api.ufunc.rst index 07c7b0c80..0499ccf5b 100644 --- a/doc/source/reference/c-api.ufunc.rst +++ b/doc/source/reference/c-api.ufunc.rst @@ -169,8 +169,12 @@ Functions :param identity: Either :c:data:`PyUFunc_One`, :c:data:`PyUFunc_Zero`, - :c:data:`PyUFunc_None`. This specifies what should be returned when + :c:data:`PyUFunc_MinusOne`, or :c:data:`PyUFunc_None`. + This specifies what should be returned when an empty array is passed to the reduce method of the ufunc. + The special value :c:data:`PyUFunc_IdentityValue` may only be used with + the :c:func:`PyUFunc_FromFuncAndDataAndSignatureAndIdentity` method, to + allow an arbitrary python object to be used as the identity. :param name: The name for the ufunc as a ``NULL`` terminated string. Specifying @@ -206,6 +210,21 @@ Functions to calling PyUFunc_FromFuncAndData. A copy of the string is made, so the passed in buffer can be freed. +.. c:function:: PyObject* PyUFunc_FromFuncAndDataAndSignatureAndIdentity( + PyUFuncGenericFunction *func, void **data, char *types, int ntypes, \ + int nin, int nout, int identity, char *name, char *doc, int unused, char *signature, + PyObject *identity_value) + + This function is very similar to `PyUFunc_FromFuncAndDataAndSignature` above, + but has an extra *identity_value* argument, to define an arbitrary identity + for the ufunc when ``identity`` is passed as ``PyUFunc_IdentityValue``. + + :param identity_value: + The identity for the new gufunc. Must be passed as ``NULL`` unless the + ``identity`` argument is ``PyUFunc_IdentityValue``. Setting it to NULL + is equivalent to calling PyUFunc_FromFuncAndDataAndSignature. + + .. c:function:: int PyUFunc_RegisterLoopForType( \ PyUFuncObject* ufunc, int usertype, PyUFuncGenericFunction function, \ int* arg_types, void* data) |