Module Expr Str ImportFrom alias alias alias Assign NameStore Str Assign NameStore Str Assign NameStore Str Assign NameStore Str Import alias Import alias Import alias Import alias Assign NameStore Call NameLoad Str Assign NameStore Dict Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str Assign NameStore Dict Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str Assign NameStore Dict Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str FunctionDef arguments args NameParam defaults body Return ListComp Call AttributeLoad Str attr NameLoad comprehension NameStore NameLoad decorator_list Assign NameStore Call NameLoad ListLoad TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str TupleLoad Str Str Assign NameStore Dict Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam defaults body Expr Str If CompareNotEq Call NameLoad NameLoad Call NameLoad NameLoad body Raise Call NameLoad Str If BoolOpAnd CompareNotEq Call NameLoad NameLoad Call NameLoad NameLoad UnaryOpNot BoolOpAnd CompareNotEq NameLoad Str CompareEq BinOpAdd Call NameLoad NameLoad Num Call NameLoad NameLoad body Raise Call NameLoad Str Assign NameStore BinOpMod Str TupleLoad NameLoad NameLoad NameLoad NameLoad NameLoad Assign NameStore BinOpMod Str NameLoad AugAssignAdd NameStore Str AugAssignAdd NameStore Str AugAssignAdd NameStore Str For NameStore Call NameLoad Call NameLoad NameLoad body AugAssignAdd NameStore BinOpMod Str TupleLoad NameLoad NameLoad For NameStore Call NameLoad Call NameLoad NameLoad body AugAssignAdd NameStore BinOpMod Str TupleLoad NameLoad BinOpAdd NameLoad Call NameLoad NameLoad Assign NameStore ListLoad Assign NameStore ListLoad Assign NameStore ListLoad For NameStore Call NameLoad Call NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index SubscriptLoad NameLoad Index NameLoad Expr Call AttributeLoad NameLoad attr BinOpMod Str TupleLoad SubscriptLoad NameLoad Index SubscriptLoad NameLoad Index NameLoad SubscriptLoad NameLoad Index SubscriptLoad NameLoad Index NameLoad NameLoad If CompareEq BinOpAdd Call NameLoad NameLoad Num Call NameLoad NameLoad body Assign NameStore Num Expr Call AttributeLoad NameLoad attr NameLoad AugAssignAdd NameStore BinOpMod Str TupleLoad SubscriptLoad NameLoad Index NameLoad orelse Assign NameStore Num For TupleStore NameStore NameStore Call NameLoad NameLoad body AugAssignAdd NameStore BinOpMod Str TupleLoad SubscriptLoad NameLoad Index NameLoad BinOpAdd NameLoad NameLoad Expr Call AttributeLoad NameLoad attr BinOpMod Str SubscriptLoad NameLoad Index NameLoad Expr Call AttributeLoad NameLoad attr BinOpMod Str BinOpAdd NameLoad NameLoad Expr Call AttributeLoad NameLoad attr NameLoad AugAssignAdd NameStore Str If CompareEq BinOpAdd Call NameLoad NameLoad Num Call NameLoad NameLoad body Assign NameStore Str orelse Assign NameStore Str Assign NameStore BinOpMod Str TupleLoad NameLoad SubscriptLoad NameLoad Index NameLoad Call AttributeLoad Str attr NameLoad Call AttributeLoad Str attr NameLoad Assign NameStore ListLoad For NameStore Call NameLoad Call NameLoad NameLoad body If CompareIn TupleLoad SubscriptLoad NameLoad Index NameLoad SubscriptLoad NameLoad Index NameLoad NameLoad body Assign NameStore BinOpMod Str TupleLoad SubscriptLoad NameLoad Index SubscriptLoad NameLoad Index NameLoad SubscriptLoad NameLoad Index SubscriptLoad NameLoad Index NameLoad NameLoad SubscriptLoad NameLoad Index SubscriptLoad NameLoad Index NameLoad NameLoad Expr Call AttributeLoad NameLoad attr NameLoad If NameLoad body AugAssignAdd NameStore BinOpMod Str Call AttributeLoad Str attr NameLoad AugAssignAdd NameStore BinOpAdd Str NameLoad AugAssignAdd NameStore Str AugAssignAdd NameStore Str For TupleStore NameStore NameStore Call NameLoad NameLoad body AugAssignAdd NameStore BinOpMod Str TupleLoad NameLoad SubscriptLoad NameLoad Index NameLoad SubscriptLoad NameLoad Index NameLoad orelse AugAssignAdd NameStore NameLoad For TupleStore NameStore TupleStore NameStore NameStore Call NameLoad Call NameLoad NameLoad NameLoad body If CompareIn TupleLoad NameLoad NameLoad NameLoad body AugAssignAdd NameStore BinOpMod Str TupleLoad NameLoad SubscriptLoad NameLoad Index NameLoad NameLoad AugAssignAdd NameStore BinOpMod Str TupleLoad SubscriptLoad NameLoad Index NameLoad NameLoad SubscriptLoad NameLoad Index NameLoad NameLoad AugAssignAdd NameStore Str AugAssignAdd NameStore Str AugAssignAdd NameStore BinOpMod Str TupleLoad SubscriptLoad NameLoad Index NameLoad NameLoad SubscriptLoad NameLoad Index NameLoad SubscriptLoad NameLoad Index NameLoad orelse AugAssignAdd NameStore BinOpMod Str TupleLoad SubscriptLoad NameLoad Index NameLoad NameLoad SubscriptLoad NameLoad Index NameLoad NameLoad For NameStore Call NameLoad Call NameLoad NameLoad body AugAssignAdd NameStore BinOpMod Str TupleLoad NameLoad NameLoad For NameStore Call NameLoad Call NameLoad NameLoad body AugAssignAdd NameStore BinOpMod Str TupleLoad NameLoad BinOpAdd NameLoad Call NameLoad NameLoad AugAssignAdd NameStore Str Return TupleLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore ListLoad TupleLoad Str Str If UnaryOpNot BoolOpOr CompareIn Str NameLoad CompareIn Str NameLoad body Assign NameStore BinOpAdd NameLoad ListComp TupleLoad BinOpAdd NameLoad Str BinOpAdd NameLoad Str comprehension TupleStore NameStore NameStore NameLoad For TupleStore NameStore NameStore NameLoad body Assign NameStore NameLoad Assign NameStore NameLoad For TupleStore NameStore NameStore Call NameLoad NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad Expr Yield TupleLoad NameLoad NameLoad decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam NameParam NameParam defaults body Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr Call AttributeLoad NameLoad attr NameLoad NameLoad Assign AttributeStore NameLoad attr Call AttributeLoad NameLoad attr BinOpAdd Str NameLoad If CompareIs AttributeLoad NameLoad attr NameLoad body Raise Call NameLoad BinOpMod Str NameLoad Assign AttributeStore NameLoad attr Call AttributeLoad Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr attr Assign AttributeStore NameLoad attr Dict decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Assign NameStore ListComp Call AttributeLoad NameLoad attr comprehension NameStore Call AttributeLoad NameLoad attr Str Call AttributeLoad NameLoad attr Assign NameStore ListComp Call AttributeLoad NameLoad attr comprehension NameStore Call AttributeLoad NameLoad attr Str Call AttributeLoad NameLoad attr If CompareEq Call NameLoad NameLoad Num body Assign NameStore BinOpMult NameLoad Call NameLoad NameLoad If CompareNotEq Call NameLoad NameLoad Call NameLoad NameLoad body Raise Call NameLoad BinOpMod Str TupleLoad AttributeLoad NameLoad attr NameLoad NameLoad Return ListComp BinOpAdd Call AttributeLoad NameLoad attr NameLoad TupleLoad NameLoad comprehension TupleStore NameStore NameStore Call NameLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str NameLoad If NameLoad body Assign TupleStore NameStore NameStore NameStore NameStore ListComp Call AttributeLoad NameLoad attr comprehension NameStore Call AttributeLoad NameLoad attr If CompareGt Call AttributeLoad NameLoad attr Str Num body Raise Call NameLoad BinOpMod Str TupleLoad AttributeLoad NameLoad attr NameLoad Return TupleLoad NameLoad NameLoad NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr Str NameLoad If NameLoad body Assign TupleStore NameStore NameStore NameStore ListComp Call AttributeLoad NameLoad attr comprehension NameStore Call AttributeLoad NameLoad attr Return TupleLoad NameLoad NameLoad Str NameLoad Raise Call NameLoad BinOpMod Str TupleLoad AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore Call NameLoad Assign NameStore ListLoad FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam defaults body If CompareIn NameLoad NameLoad body Return Expr Call AttributeLoad NameLoad attr NameLoad Assign NameStore TupleLoad NameLoad NameLoad NameLoad If CompareIn Str NameLoad body Raise Call NameLoad BinOpMod Str TupleLoad AttributeLoad NameLoad attr NameLoad If BoolOpOr CompareNotEq Call NameLoad NameLoad NameLoad CompareNotEq Call NameLoad NameLoad NameLoad body Raise Call NameLoad BinOpMod Str TupleLoad AttributeLoad NameLoad attr NameLoad NameLoad NameLoad Assign TupleStore NameStore NameStore Call NameLoad NameLoad NameLoad NameLoad NameLoad NameLoad Assign SubscriptStore NameLoad Index NameLoad NameLoad Expr Call AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad NameLoad NameLoad decorator_list For TupleStore NameStore NameStore NameStore NameStore NameStore AttributeLoad NameLoad attr body Assign NameStore BinOpAdd Call AttributeLoad NameLoad attr Str Str NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr Str Str If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad Assign NameStore Call NameLoad NameLoad Assign TupleStore NameStore NameStore SubscriptLoad Call NameLoad Call NameLoad NameLoad NameLoad Index Num Expr Call NameLoad NameLoad NameLoad NameLoad NameLoad NameLoad NameLoad For TupleStore NameStore NameStore NameStore NameStore NameStore AttributeLoad NameLoad attr body Assign NameStore BinOpAdd Call AttributeLoad NameLoad attr Str Str NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr Str Str For TupleStore NameStore NameStore Call NameLoad NameLoad NameLoad body Expr Call NameLoad NameLoad NameLoad NameLoad NameLoad NameLoad NameLoad Expr Call AttributeLoad NameLoad attr keyword Lambda arguments args NameParam defaults Call NameLoad SubscriptLoad NameLoad Index Num Return TupleLoad NameLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam defaults NameLoad Str NameLoad body If BoolOpAnd NameLoad CompareIn NameLoad AttributeLoad NameLoad attr body Assign NameStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Assign NameStore Str Assign NameStore Call AttributeLoad NameLoad attr Str NameLoad If NameLoad body Assign TupleStore NameStore NameStore Call AttributeLoad NameLoad attr orelse Assign TupleStore NameStore NameStore TupleLoad NameLoad Str If NameLoad body Return BinOpMod Str TupleLoad NameLoad NameLoad Call AttributeLoad NameLoad attr Str Str orelse Return BinOpMod Str TupleLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore ListLoad For TupleStore NameStore NameStore NameStore NameStore NameStore AttributeLoad NameLoad attr body Assign NameStore Call AttributeLoad NameLoad attr Str Str Assign NameStore BinOpAdd ListComp SubscriptLoad NameLoad Index NameLoad comprehension NameStore NameLoad ListComp BinOpAdd SubscriptLoad NameLoad Index NameLoad Str comprehension NameStore NameLoad Assign NameStore BinOpAdd ListComp SubscriptLoad NameLoad Index NameLoad comprehension NameStore NameLoad ListComp BinOpAdd SubscriptLoad NameLoad Index NameLoad Str comprehension NameStore NameLoad Assign NameStore BinOpMod Str TupleLoad SubscriptLoad NameLoad Index NameLoad Call AttributeLoad Str attr NameLoad Assign NameStore BinOpMod Str TupleLoad SubscriptLoad NameLoad Index NameLoad Call AttributeLoad Str attr NameLoad Expr Call AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad NameLoad NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Assign NameStore Str Assign TupleStore NameStore NameStore NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore ListLoad Assign NameStore ListLoad Assign NameStore ListLoad For TupleStore NameStore NameStore NameStore NameStore NameLoad body For NameStore NameLoad body Expr Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index NameLoad For NameStore NameLoad body Expr Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad AugAssignAdd NameStore BinOpMod Str TupleLoad AttributeLoad NameLoad attr Call NameLoad NameLoad AugAssignAdd NameStore BinOpMod Str TupleLoad AttributeLoad NameLoad attr BinOpMult Num Call NameLoad NameLoad AugAssignAdd NameStore BinOpMod Str TupleLoad AttributeLoad NameLoad attr Call NameLoad NameLoad AugAssignAdd NameStore BinOpMod Str TupleLoad AttributeLoad NameLoad attr Call NameLoad NameLoad AugAssignAdd NameStore BinOpMod Str TupleLoad AttributeLoad NameLoad attr Call AttributeLoad Call AttributeLoad Call AttributeLoad AttributeLoad NameLoad attr attr Str Str attr Str Str attr Str Str For TupleStore NameStore NameStore Call NameLoad NameLoad body AugAssignAdd NameStore BinOpMod Str TupleLoad AttributeLoad NameLoad attr NameLoad NameLoad For TupleStore NameStore NameStore Call NameLoad NameLoad body AugAssignAdd NameStore BinOpMod Str TupleLoad AttributeLoad NameLoad attr NameLoad NameLoad For TupleStore NameStore NameStore Call NameLoad NameLoad body AugAssignAdd NameStore BinOpMod Str TupleLoad AttributeLoad NameLoad attr NameLoad Call AttributeLoad NameLoad attr NameLoad keyword NameLoad AugAssignAdd NameStore BinOpMod Str TupleLoad AttributeLoad NameLoad attr NameLoad AttributeLoad NameLoad attr For TupleStore NameStore NameStore Call NameLoad NameLoad body AugAssignAdd NameStore BinOpMod Str TupleLoad AttributeLoad NameLoad attr NameLoad AttributeLoad NameLoad attr NameLoad AugAssignAdd NameStore Call AttributeLoad BinOpMod Str TupleLoad BinOpDiv Call NameLoad NameLoad BinOpAdd NameLoad NameLoad NameLoad NameLoad attr Str AttributeLoad NameLoad attr Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Assign NameStore ListLoad Assign NameStore Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr For NameStore NameLoad body Assign NameStore Call AttributeLoad NameLoad attr If UnaryOpNot NameLoad body Continue Assign NameStore Call AttributeLoad NameLoad attr Str NameLoad If UnaryOpNot NameLoad body Raise Call NameLoad BinOpMod Str NameLoad Expr Call AttributeLoad NameLoad attr Call NameLoad Call AttributeLoad NameLoad attr Num Call AttributeLoad NameLoad attr Num Call AttributeLoad NameLoad attr Num Return NameLoad decorator_list NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam defaults body Expr Str Assign NameStore ListLoad Assign NameStore ListLoad Assign NameStore Call AttributeLoad Call AttributeLoad Call AttributeLoad NameLoad attr Str Str attr Str Str attr Str Str If Call AttributeLoad NameLoad attr Str body Expr Call AttributeLoad NameLoad attr BinOpMod Str TupleLoad SubscriptLoad NameLoad Slice Num Call AttributeLoad NameLoad attr NameLoad keyword Str Call AttributeLoad NameLoad attr NameLoad Assign NameStore BinOpMod Str NameLoad Expr Call AttributeLoad NameLoad attr BinOpMod Str Call AttributeLoad NameLoad attr Str NameLoad Expr Call AttributeLoad NameLoad attr BinOpMod Str TupleLoad NameLoad NameLoad Call AttributeLoad NameLoad attr NameLoad keyword NameLoad orelse Assign NameStore BinOpMod Str TupleLoad Call AttributeLoad NameLoad attr NameLoad NameLoad Expr Call AttributeLoad NameLoad attr BinOpMod Str NameLoad Expr Call AttributeLoad NameLoad attr BinOpMod Str Call AttributeLoad NameLoad attr Str NameLoad Expr Call AttributeLoad NameLoad attr BinOpMod Str NameLoad Expr Call AttributeLoad NameLoad attr BinOpMod Str Call AttributeLoad NameLoad attr Str NameLoad Return TupleLoad NameLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Assign NameStore BinOpAdd SubscriptLoad Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Index Num Str Assign NameStore BinOpAdd NameLoad Str Assign NameStore BinOpAdd NameLoad Str Assign NameStore BinOpAdd NameLoad Str Assign NameStore Str Assign NameStore ListLoad Assign NameStore ListLoad Assign NameStore Dict Assign NameStore ListLoad Assign NameStore ListLoad Str Assign NameStore ListLoad Expr Call AttributeLoad NameLoad attr keyword Lambda arguments args NameParam defaults AttributeLoad NameLoad attr For NameStore NameLoad body Assign NameStore Call AttributeLoad NameLoad attr For TupleStore NameStore NameStore NameStore NameStore NameLoad body If Call AttributeLoad NameLoad attr Str body Assign NameStore SubscriptLoad NameLoad Slice Num Assign TupleStore NameStore NameStore NameStore Call NameLoad NameLoad NameLoad NameLoad NameLoad NameLoad NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr BinOpMod Str TupleLoad NameLoad Call AttributeLoad NameLoad attr NameLoad keyword NameLoad keyword NameLoad Expr Call AttributeLoad NameLoad attr BinOpMod Str TupleLoad NameLoad Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad BinOpAdd Str NameLoad orelse Assign TupleStore NameStore NameStore NameStore Call NameLoad NameLoad NameLoad NameLoad NameLoad NameLoad NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad AugAssignAdd NameStore BinOpAdd NameLoad Str Assign NameStore Call AttributeLoad Str attr BinOpAdd BinOpAdd Call NameLoad Call AttributeLoad NameLoad attr NameLoad ListLoad NameLoad With Call NameLoad NameLoad Str NameStore body Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call NameLoad NameLoad With Call NameLoad NameLoad Str NameStore body Expr Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr Call AttributeLoad Str attr NameLoad Expr Call AttributeLoad NameLoad attr Str Assign NameStore Call NameLoad NameLoad With Call NameLoad NameLoad Str NameStore body Expr Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr Call AttributeLoad Str attr NameLoad Expr Call AttributeLoad NameLoad attr Str With Call NameLoad NameLoad Str NameStore body Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr Call AttributeLoad Str attr NameLoad Expr Call AttributeLoad NameLoad attr Str With Call NameLoad NameLoad Str NameStore body Expr Call AttributeLoad NameLoad attr Call AttributeLoad Str attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore ListLoad For NameStore NameLoad body If CompareIn NameLoad NameLoad body Continue Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Return NameLoad decorator_list FunctionDef arguments args defaults body Assign NameStore Call AttributeLoad NameLoad attr keyword Call AttributeLoad NameLoad attr Assign TupleStore NameStore NameStore Call AttributeLoad NameLoad attr If CompareNotEq Call NameLoad NameLoad Num body Expr Call AttributeLoad NameLoad attr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Expr Call NameLoad Str Str NameLoad decorator_list If CompareEq NameLoad Str body Expr Call NameLoad
N/A N/A 
generate_ufuncs.py

Generate Ufunc definition source files for scipy.special.  Produces
files '_ufuncs.c' and '_ufuncs_cxx.c' by first producing Cython.

This will generate both calls to PyUFunc_FromFuncAndData and the
required ufunc inner loops.

The syntax in the ufunc signature list is

    <line>:           <ufunc_name> '--' <kernels> '--' <headers>
    <kernels>:        <function> [',' <function>]*
    <function>:       <name> ':' <input> '*' <output>
                        '->' <retval> '*' <ignored_retval>
    <input>:          <typecode>*
    <output>:         <typecode>*
    <retval>:         <typecode>?
    <ignored_retval>: <typecode>?
    <headers>:        <header_name> [',' <header_name>]*

The input parameter types are denoted by single character type
codes, according to

   'f': 'float'
   'd': 'double'
   'g': 'long double'
   'F': 'float complex'
   'D': 'double complex'
   'G': 'long double complex'
   'i': 'int'
   'l': 'long'
   'v': 'void'

If multiple kernel functions are given for a single ufunc, the one
which is used is determined by the standard ufunc mechanism. Kernel
functions that are listed first are also matched first against the
ufunc input types, so functions listed earlier take precedence.

In addition, versions with casted variables, such as d->f,D->F and
i->d are automatically generated.

There should be either a single header that contains all of the kernel
functions listed, or there should be one header for each kernel
function. Cython pxd files are allowed in addition to .h files.

Cython functions may use fused types, but the names in the list
should be the specialized ones, such as 'somefunc[float]'.

Function coming from C++ should have ``++`` appended to the name of
the header.

Floating-point exceptions inside these Ufuncs are converted to
special function errors --- which are separately controlled by the
user, and off by default, as they are usually not especially useful
for the user.


The C++ module
--------------
In addition to ``_ufuncs`` module, a second module ``_ufuncs_cxx`` is
generated. This module only exports function pointers that are to be
used when constructing some of the ufuncs in ``_ufuncs``. The function
pointers are exported via Cython's standard mechanism.

This mainly avoids build issues --- Python distutils has no way to
figure out what to do if you want to link both C++ and Fortran code in
the same shared library.

 __future__ division print_function absolute_import N/A UFUNCS 
sph_harm -- sph_harmonic: iidd->D, sph_harmonic_unsafe: dddd->D -- sph_harm.pxd, _legacy.pxd
_lambertw -- lambertw_scalar: Dld->D                       -- lambertw.pxd
_ellip_harm -- ellip_harmonic: ddiiddd->d, ellip_harmonic_unsafe: ddddddd->d --_ellip_harm.pxd, _legacy.pxd
logit -- logitf: f->f, logit: d->d, logitl: g->g           -- _logit.h
expit -- expitf: f->f, expit: d->d, expitl: g->g           -- _logit.h
bdtrc -- bdtrc: iid->d, bdtrc_unsafe: ddd->d               -- cephes.h, _legacy.pxd
bdtr -- bdtr: iid->d, bdtr_unsafe: ddd->d                  -- cephes.h, _legacy.pxd
bdtri -- bdtri: iid->d, bdtri_unsafe: ddd->d               -- cephes.h, _legacy.pxd
binom -- binom: dd->d                                      -- orthogonal_eval.pxd
btdtr -- btdtr: ddd->d                                     -- cephes.h
btdtri -- incbi: ddd->d                                    -- cephes.h
fdtrc -- fdtrc: ddd->d                                     -- cephes.h
fdtr -- fdtr: ddd->d                                       -- cephes.h
fdtri -- fdtri: ddd->d                                     -- cephes.h
gdtrc -- gdtrc: ddd->d                                     -- cephes.h
gdtr -- gdtr: ddd->d                                       -- cephes.h
hyp0f1 -- _hyp0f1_real: dd->d, _hyp0f1_cmplx: dD->D        -- _hyp0f1.pxd
hyp2f1 -- hyp2f1: dddd->d, chyp2f1_wrap: dddD->D           -- cephes.h, specfun_wrappers.h
hyp1f1 -- hyp1f1_wrap: ddd->d, chyp1f1_wrap: ddD->D        -- specfun_wrappers.h
hyperu -- hypU_wrap: ddd->d                                -- specfun_wrappers.h
hyp2f0 -- hyp2f0: dddi*d->d, hyp2f0_unsafe: dddd*d->d      -- cephes.h, _legacy.pxd
hyp1f2 -- onef2: dddd*d->d                                 -- cephes.h
hyp3f0 -- threef0: dddd*d->d                               -- cephes.h
betainc -- incbet: ddd->d                                  -- cephes.h
betaincinv -- incbi: ddd->d                                -- cephes.h
nbdtrc -- nbdtrc: iid->d, nbdtrc_unsafe: ddd->d            -- cephes.h, _legacy.pxd
nbdtr -- nbdtr: iid->d, nbdtr_unsafe: ddd->d               -- cephes.h, _legacy.pxd
nbdtri -- nbdtri: iid->d, nbdtri_unsafe: ddd->d            -- cephes.h, _legacy.pxd
beta -- beta: dd->d                                        -- cephes.h
betaln -- lbeta: dd->d                                     -- cephes.h
cbrt -- cbrt: d->d                                         -- cephes.h
chdtrc -- chdtrc: dd->d                                    -- cephes.h
chdtr -- chdtr: dd->d                                      -- cephes.h
chdtri -- chdtri: dd->d                                    -- cephes.h
ellipeinc -- ellie: dd->d                                  -- cephes.h
ellipkinc -- ellik: dd->d                                  -- cephes.h
ellipe -- ellpe: d->d                                      -- cephes.h
ellipkm1 -- ellpk: d->d                                    -- cephes.h
eval_jacobi --      eval_jacobi[double]: dddd->d,     eval_jacobi[double complex]: dddD->D,     eval_jacobi_l: lddd->d -- orthogonal_eval.pxd
eval_sh_jacobi --   eval_sh_jacobi[double]: dddd->d,  eval_sh_jacobi[double complex]: dddD->D,  eval_sh_jacobi_l: lddd->d -- orthogonal_eval.pxd
eval_gegenbauer --  eval_gegenbauer[double]: ddd->d,  eval_gegenbauer[double complex]: ddD->D,  eval_gegenbauer_l: ldd->d -- orthogonal_eval.pxd
eval_chebyt --      eval_chebyt[double]: dd->d,       eval_chebyt[double complex]: dD->D,       eval_chebyt_l: ld->d -- orthogonal_eval.pxd
eval_chebyu --      eval_chebyu[double]: dd->d,       eval_chebyu[double complex]: dD->D,       eval_chebyu_l: ld->d -- orthogonal_eval.pxd
eval_chebyc --      eval_chebyc[double]: dd->d,       eval_chebyc[double complex]: dD->D,       eval_chebyc_l: ld->d -- orthogonal_eval.pxd
eval_chebys --      eval_chebys[double]: dd->d,       eval_chebys[double complex]: dD->D,       eval_chebys_l: ld->d -- orthogonal_eval.pxd
eval_sh_chebyt --   eval_sh_chebyt[double]: dd->d,    eval_sh_chebyt[double complex]: dD->D,    eval_sh_chebyt_l:ld->d -- orthogonal_eval.pxd
eval_sh_chebyu --   eval_sh_chebyu[double]: dd->d,    eval_sh_chebyu[double complex]: dD->D,    eval_sh_chebyu_l:ld->d -- orthogonal_eval.pxd
eval_legendre --    eval_legendre[double]: dd->d,     eval_legendre[double complex]: dD->D,     eval_legendre_l: ld->d -- orthogonal_eval.pxd
eval_sh_legendre -- eval_sh_legendre[double]: dd->d,  eval_sh_legendre[double complex]: dD->D,  eval_sh_legendre_l:ld->d -- orthogonal_eval.pxd
eval_genlaguerre -- eval_genlaguerre[double]: ddd->d, eval_genlaguerre[double complex]: ddD->D, eval_genlaguerre_l:ldd->d -- orthogonal_eval.pxd
eval_laguerre --    eval_laguerre[double]: dd->d,     eval_laguerre[double complex]: dD->D,     eval_laguerre_l:ld->d -- orthogonal_eval.pxd
eval_hermite  -- eval_hermite: ld->d                       -- orthogonal_eval.pxd
eval_hermitenorm -- eval_hermitenorm: ld->d                -- orthogonal_eval.pxd
exp10 -- exp10: d->d                                       -- cephes.h
exp2 -- exp2: d->d                                         -- cephes.h
gamma -- Gamma: d->d, cgamma: D->D                         -- cephes.h, _loggamma.pxd
_gammaln -- lgam: d->d, clngamma_wrap: D->D                -- cephes.h, specfun_wrappers.h
gammasgn -- gammasgn: d->d                                 -- c_misc/misc.h
i0 -- i0: d->d                                             -- cephes.h
i0e -- i0e: d->d                                           -- cephes.h
i1 -- i1: d->d                                             -- cephes.h
i1e -- i1e: d->d                                           -- cephes.h
gammaincc -- igamc: dd->d                                  -- cephes.h
gammainc -- igam: dd->d                                    -- cephes.h
gammaincinv -- gammaincinv: dd->d                          -- cephes.h
gammainccinv -- igami: dd->d                               -- cephes.h
iv -- iv: dd->d, cbesi_wrap: dD->D                         -- cephes.h, amos_wrappers.h
ive -- cbesi_wrap_e_real: dd->d, cbesi_wrap_e: dD->D       -- amos_wrappers.h
ellipj -- ellpj: dd*dddd->*i                               -- cephes.h
expn -- expn: id->d, expn_unsafe: dd->d                    -- cephes.h, _legacy.pxd
exp1 -- exp1_wrap: d->d, cexp1_wrap: D->D                  -- specfun_wrappers.h
expi -- expi_wrap: d->d, cexpi_wrap: D->D                  -- specfun_wrappers.h
kn -- cbesk_wrap_real_int: id->d, kn_unsafe: dd->d         -- cephes.h, _legacy.pxd
pdtrc -- pdtrc: id->d, pdtrc_unsafe: dd->d                 -- cephes.h, _legacy.pxd
pdtr -- pdtr: id->d, pdtr_unsafe: dd->d                    -- cephes.h, _legacy.pxd
pdtri -- pdtri: id->d, pdtri_unsafe: dd->d                 -- cephes.h, _legacy.pxd
yn -- yn: id->d, yn_unsafe: dd->d                          -- cephes.h, _legacy.pxd
smirnov -- smirnov: id->d, smirnov_unsafe: dd->d           -- cephes.h, _legacy.pxd
smirnovi -- smirnovi: id->d, smirnovi_unsafe: dd->d        -- cephes.h, _legacy.pxd
airy -- airy_wrap: d*dddd->*i, cairy_wrap: D*DDDD->*i      -- amos_wrappers.h
itairy -- itairy_wrap: d*dddd->*i                          -- specfun_wrappers.h
airye -- cairy_wrap_e_real: d*dddd->*i, cairy_wrap_e: D*DDDD->*i -- amos_wrappers.h
fresnel -- fresnl: d*dd->*i, cfresnl_wrap: D*DD->*i        -- cephes.h, specfun_wrappers.h
shichi -- shichi: d*dd->*i                                 -- cephes.h
sici -- sici: d*dd->*i                                     -- cephes.h
itj0y0 -- it1j0y0_wrap: d*dd->*i                           -- specfun_wrappers.h
it2j0y0 -- it2j0y0_wrap: d*dd->*i                          -- specfun_wrappers.h
iti0k0 -- it1i0k0_wrap: d*dd->*i                           -- specfun_wrappers.h
it2i0k0 -- it2i0k0_wrap: d*dd->*i                          -- specfun_wrappers.h
j0 -- j0: d->d                                             -- cephes.h
y0 -- y0: d->d                                             -- cephes.h
j1 -- j1: d->d                                             -- cephes.h
y1 -- y1: d->d                                             -- cephes.h
jv -- cbesj_wrap_real: dd->d, cbesj_wrap: dD->D            -- amos_wrappers.h
jve -- cbesj_wrap_e_real: dd->d, cbesj_wrap_e: dD->D       -- amos_wrappers.h
yv -- cbesy_wrap_real: dd->d, cbesy_wrap: dD->D            -- amos_wrappers.h
yve -- cbesy_wrap_e_real: dd->d, cbesy_wrap_e: dD->D       -- amos_wrappers.h
k0 -- k0: d->d                                             -- cephes.h
k0e -- k0e: d->d                                           -- cephes.h
k1 -- k1: d->d                                             -- cephes.h
k1e -- k1e: d->d                                           -- cephes.h
kv -- cbesk_wrap_real: dd->d, cbesk_wrap: dD->D            -- amos_wrappers.h
kve -- cbesk_wrap_e_real: dd->d, cbesk_wrap_e: dD->D       -- amos_wrappers.h
hankel1 -- cbesh_wrap1: dD->D                              -- amos_wrappers.h
hankel1e -- cbesh_wrap1_e: dD->D                           -- amos_wrappers.h
hankel2 -- cbesh_wrap2: dD->D                              -- amos_wrappers.h
hankel2e -- cbesh_wrap2_e: dD->D                           -- amos_wrappers.h
ndtr -- ndtr: d->d, faddeeva_ndtr: D->D                    -- cephes.h, _faddeeva.h++
log_ndtr -- log_ndtr: d->d, faddeeva_log_ndtr: D->D        -- cephes.h, _faddeeva.h++
ndtri -- ndtri: d->d                                       -- cephes.h
psi -- digamma: d->d, cdigamma: D->D                       -- _digamma.pxd, _digamma.pxd
rgamma -- rgamma: d->d, crgamma: D->D                      -- cephes.h, _loggamma.pxd
round -- round: d->d                                       -- cephes.h
sindg -- sindg: d->d                                       -- cephes.h
cosdg -- cosdg: d->d                                       -- cephes.h
radian -- radian: ddd->d                                   -- cephes.h
tandg -- tandg: d->d                                       -- cephes.h
cotdg -- cotdg: d->d                                       -- cephes.h
log1p -- log1p: d->d, clog1p: D->D                         -- cephes.h, _cunity.pxd
expm1 -- expm1: d->d, cexpm1: D->D                         -- cephes.h, _cunity.pxd
cosm1 -- cosm1: d->d                                       -- cephes.h
spence -- spence: d->d, cspence: D-> D                     -- cephes.h, _spence.pxd
zetac -- zetac: d->d                                       -- cephes.h
struve -- struve_h: dd->d                                  -- misc.h
modstruve -- struve_l: dd->d                               -- misc.h
_struve_power_series -- struve_power_series:  ddi*d->d     -- misc.h
_struve_asymp_large_z -- struve_asymp_large_z: ddi*d->d    -- misc.h
_struve_bessel_series -- struve_bessel_series: ddi*d->d    -- misc.h
itstruve0 -- itstruve0_wrap: d->d                          -- specfun_wrappers.h
it2struve0 -- it2struve0_wrap: d->d                        -- specfun_wrappers.h
itmodstruve0 -- itmodstruve0_wrap: d->d                    -- specfun_wrappers.h
kelvin -- kelvin_wrap: d*DDDD->*i                          -- specfun_wrappers.h
ber -- ber_wrap: d->d                                      -- specfun_wrappers.h
bei -- bei_wrap: d->d                                      -- specfun_wrappers.h
ker -- ker_wrap: d->d                                      -- specfun_wrappers.h
kei -- kei_wrap: d->d                                      -- specfun_wrappers.h
berp -- berp_wrap: d->d                                    -- specfun_wrappers.h
beip -- beip_wrap: d->d                                    -- specfun_wrappers.h
kerp -- kerp_wrap: d->d                                    -- specfun_wrappers.h
keip -- keip_wrap: d->d                                    -- specfun_wrappers.h
_zeta -- zeta: dd->d                                       -- cephes.h
kolmogorov -- kolmogorov: d->d                             -- cephes.h
kolmogi -- kolmogi: d->d                                   -- cephes.h
besselpoly -- besselpoly: ddd->d                           -- c_misc/misc.h
btdtria -- cdfbet3_wrap: ddd->d                            -- cdf_wrappers.h
btdtrib -- cdfbet4_wrap: ddd->d                            -- cdf_wrappers.h
bdtrik -- cdfbin2_wrap: ddd->d                             -- cdf_wrappers.h
bdtrin -- cdfbin3_wrap: ddd->d                             -- cdf_wrappers.h
chdtriv -- cdfchi3_wrap: dd->d                             -- cdf_wrappers.h
chndtr -- cdfchn1_wrap: ddd->d                             -- cdf_wrappers.h
chndtrix -- cdfchn2_wrap: ddd->d                           -- cdf_wrappers.h
chndtridf -- cdfchn3_wrap: ddd->d                          -- cdf_wrappers.h
chndtrinc -- cdfchn4_wrap: ddd->d                          -- cdf_wrappers.h
fdtridfd -- cdff4_wrap: ddd->d                             -- cdf_wrappers.h
ncfdtr -- cdffnc1_wrap: dddd->d                            -- cdf_wrappers.h
ncfdtri -- cdffnc2_wrap: dddd->d                           -- cdf_wrappers.h
ncfdtridfn -- cdffnc3_wrap: dddd->d                        -- cdf_wrappers.h
ncfdtridfd -- cdffnc4_wrap: dddd->d                        -- cdf_wrappers.h
ncfdtrinc -- cdffnc5_wrap: dddd->d                         -- cdf_wrappers.h
gdtrix -- cdfgam2_wrap: ddd->d                             -- cdf_wrappers.h
gdtrib -- cdfgam3_wrap: ddd->d                             -- cdf_wrappers.h
gdtria -- cdfgam4_wrap: ddd->d                             -- cdf_wrappers.h
nbdtrik -- cdfnbn2_wrap: ddd->d                            -- cdf_wrappers.h
nbdtrin -- cdfnbn3_wrap: ddd->d                            -- cdf_wrappers.h
nrdtrimn -- cdfnor3_wrap: ddd->d                           -- cdf_wrappers.h
nrdtrisd -- cdfnor4_wrap: ddd->d                           -- cdf_wrappers.h
pdtrik -- cdfpoi2_wrap: dd->d                              -- cdf_wrappers.h
stdtr -- cdft1_wrap: dd->d                                 -- cdf_wrappers.h
stdtrit -- cdft2_wrap: dd->d                               -- cdf_wrappers.h
stdtridf -- cdft3_wrap: dd->d                              -- cdf_wrappers.h
nctdtr -- cdftnc1_wrap: ddd->d                             -- cdf_wrappers.h
nctdtrit -- cdftnc2_wrap: ddd->d                           -- cdf_wrappers.h
nctdtridf -- cdftnc3_wrap: ddd->d                          -- cdf_wrappers.h
nctdtrinc -- cdftnc4_wrap: ddd->d                          -- cdf_wrappers.h
tklmbda -- tukeylambdacdf: dd->d                           -- cdf_wrappers.h
mathieu_a -- cem_cva_wrap: dd->d                           -- specfun_wrappers.h
mathieu_b -- sem_cva_wrap: dd->d                           -- specfun_wrappers.h
mathieu_cem -- cem_wrap: ddd*dd->*i                        -- specfun_wrappers.h
mathieu_sem -- sem_wrap: ddd*dd->*i                        -- specfun_wrappers.h
mathieu_modcem1 -- mcm1_wrap: ddd*dd->*i                   -- specfun_wrappers.h
mathieu_modcem2 -- mcm2_wrap: ddd*dd->*i                   -- specfun_wrappers.h
mathieu_modsem1 -- msm1_wrap: ddd*dd->*i                   -- specfun_wrappers.h
mathieu_modsem2 -- msm2_wrap: ddd*dd->*i                   -- specfun_wrappers.h
lpmv -- pmv_wrap: ddd->d                                   -- specfun_wrappers.h
pbwa -- pbwa_wrap: dd*dd->*i                               -- specfun_wrappers.h
pbdv -- pbdv_wrap: dd*dd->*i                               -- specfun_wrappers.h
pbvv -- pbvv_wrap: dd*dd->*i                               -- specfun_wrappers.h
pro_cv -- prolate_segv_wrap: ddd->d                        -- specfun_wrappers.h
obl_cv -- oblate_segv_wrap: ddd->d                         -- specfun_wrappers.h
pro_ang1_cv -- prolate_aswfa_wrap: ddddd*dd->*i            -- specfun_wrappers.h
pro_rad1_cv -- prolate_radial1_wrap: ddddd*dd->*i          -- specfun_wrappers.h
pro_rad2_cv -- prolate_radial2_wrap: ddddd*dd->*i          -- specfun_wrappers.h
obl_ang1_cv -- oblate_aswfa_wrap: ddddd*dd->*i             -- specfun_wrappers.h
obl_rad1_cv -- oblate_radial1_wrap: ddddd*dd->*i           -- specfun_wrappers.h
obl_rad2_cv -- oblate_radial2_wrap: ddddd*dd->*i           -- specfun_wrappers.h
pro_ang1 -- prolate_aswfa_nocv_wrap: dddd*d->d             -- specfun_wrappers.h
pro_rad1 -- prolate_radial1_nocv_wrap: dddd*d->d           -- specfun_wrappers.h
pro_rad2 -- prolate_radial2_nocv_wrap: dddd*d->d           -- specfun_wrappers.h
obl_ang1 -- oblate_aswfa_nocv_wrap: dddd*d->d              -- specfun_wrappers.h
obl_rad1 -- oblate_radial1_nocv_wrap: dddd*d->d            -- specfun_wrappers.h
obl_rad2 -- oblate_radial2_nocv_wrap: dddd*d->d            -- specfun_wrappers.h
modfresnelp -- modified_fresnel_plus_wrap: d*DD->*i        -- specfun_wrappers.h
modfresnelm -- modified_fresnel_minus_wrap: d*DD->*i       -- specfun_wrappers.h
wofz -- faddeeva_w: D->D                                   -- _faddeeva.h++
erfc -- erfc: d->d, faddeeva_erfc: D->D                    -- cephes.h, _faddeeva.h++
erf -- erf: d->d, faddeeva_erf: D->D                       -- cephes.h, _faddeeva.h++
dawsn -- faddeeva_dawsn: d->d, faddeeva_dawsn_complex: D->D -- _faddeeva.h++
erfcx -- faddeeva_erfcx: d->d, faddeeva_erfcx_complex: D->D -- _faddeeva.h++
erfi -- faddeeva_erfi: d->d, faddeeva_erfi_complex: D->D   -- _faddeeva.h++
xlogy -- xlogy[double]: dd->d, xlogy[double_complex]: DD->D -- _xlogy.pxd
xlog1py -- xlog1py[double]: dd->d, xlog1py[double_complex]: DD->D   -- _xlogy.pxd
poch -- poch: dd->d                                        -- c_misc/misc.h
boxcox -- boxcox: dd->d                                    -- _boxcox.pxd
boxcox1p -- boxcox1p: dd->d                                -- _boxcox.pxd
inv_boxcox -- inv_boxcox: dd->d                            -- _boxcox.pxd
inv_boxcox1p -- inv_boxcox1p: dd->d                        -- _boxcox.pxd
entr -- entr: d->d                                         -- _convex_analysis.pxd
kl_div -- kl_div: dd->d                                    -- _convex_analysis.pxd
rel_entr -- rel_entr: dd->d                                -- _convex_analysis.pxd
huber -- huber: dd->d                                      -- _convex_analysis.pxd
pseudo_huber -- pseudo_huber: dd->d                        -- _convex_analysis.pxd
exprel -- exprel: d->d                                     -- _exprel.pxd
_spherical_yn -- spherical_yn_real: ld->d, spherical_yn_complex: lD->D -- _spherical_bessel.pxd
_spherical_jn -- spherical_jn_real: ld->d, spherical_jn_complex: lD->D -- _spherical_bessel.pxd
_spherical_in -- spherical_in_real: ld->d, spherical_in_complex: lD->D -- _spherical_bessel.pxd
_spherical_kn -- spherical_kn_real: ld->d, spherical_kn_complex: lD->D -- _spherical_bessel.pxd
_spherical_yn_d -- spherical_yn_d_real: ld->d, spherical_yn_d_complex: lD->D -- _spherical_bessel.pxd
_spherical_jn_d -- spherical_jn_d_real: ld->d, spherical_jn_d_complex: lD->D -- _spherical_bessel.pxd
_spherical_in_d -- spherical_in_d_real: ld->d, spherical_in_d_complex: lD->D -- _spherical_bessel.pxd
_spherical_kn_d -- spherical_kn_d_real: ld->d, spherical_kn_d_complex: lD->D -- _spherical_bessel.pxd
loggamma -- loggamma: D->D                                 -- _loggamma.pxd
_sinpi -- sinpi[double]: d->d, sinpi[double_complex]: D->D -- _trig.pxd
_cospi -- cospi[double]: d->d, cospi[double_complex]: D->D -- _trig.pxd
 N/A EXTRA_CODE_COMMON # This file is automatically generated by generate_ufuncs.py.
# Do not edit manually!

cdef extern from "_complexstuff.h":
    # numpy/npy_math.h doesn't have correct extern "C" declarations,
    # so we must include a wrapped version first
    pass

cdef extern from "numpy/npy_math.h":
    double NPY_NAN

cimport numpy as np
from numpy cimport (
    npy_float, npy_double, npy_longdouble,
    npy_cfloat, npy_cdouble, npy_clongdouble,
    npy_int, npy_long,
    NPY_FLOAT, NPY_DOUBLE, NPY_LONGDOUBLE,
    NPY_CFLOAT, NPY_CDOUBLE, NPY_CLONGDOUBLE,
    NPY_INT, NPY_LONG)

ctypedef double complex double_complex

cdef extern from "numpy/ufuncobject.h":
    int PyUFunc_getfperr() nogil

cdef public int wrap_PyUFunc_getfperr() nogil:
    """
    Call PyUFunc_getfperr in a context where PyUFunc_API array is initialized;
    this avoids messing with the UNIQUE_SYMBOL #defines
    """
    return PyUFunc_getfperr()

cimport libc

cimport sf_error

np.import_array()
np.import_ufunc()

cdef int _set_errprint(int flag) nogil:
    return sf_error.set_print(flag)
 N/A EXTRA_CODE 
cimport scipy.special._ufuncs_cxx

def errprint(inflag=None):
    """
    errprint(inflag=None)

    Sets or returns the error printing flag for special functions.

    Parameters
    ----------
    inflag : bool, optional
        Whether warnings concerning evaluation of special functions in
        scipy.special are shown. If omitted, no change is made to the
        current setting.

    Returns
    -------
    old_flag
        Previous value of the error flag

    """
    if inflag is not None:
        scipy.special._ufuncs_cxx._set_errprint(int(bool(inflag)))
        return sf_error.set_print(int(bool(inflag)))
    else:
        return sf_error.get_print()
 N/A EXTRA_CODE_BOTTOM #
# Aliases
#
jn = jv
 N/A os N/A optparse N/A re N/A textwrap N/A add_newdocs N/A __import__ add_newdocs N/A CY_TYPES N/A f d g F D G i l v float double long double float complex double complex long double complex int long void N/A C_TYPES N/A f d g F D G i l v npy_float npy_double npy_longdouble npy_cfloat npy_cdouble npy_clongdouble npy_int npy_long void N/A TYPE_NAMES N/A f d g F D G i l NPY_FLOAT NPY_DOUBLE NPY_LONGDOUBLE NPY_CFLOAT NPY_CDOUBLE NPY_CLONGDOUBLE NPY_INT NPY_LONG cast_order N/A N/A c N/A N/A N/A N/A N/A N/A ilfdgFDG index x N/A x c N/A N/A DANGEROUS_DOWNCAST N/A set N/A N/A F i N/A F l N/A F f N/A F d N/A F g N/A D i N/A D l N/A D f N/A D d N/A D g N/A G i N/A G l N/A G f N/A G d N/A G g N/A f i N/A f l N/A d i N/A d l N/A g i N/A g l N/A l i N/A NAN_VALUE N/A f d g F D G i l NPY_NAN NPY_NAN NPY_NAN NPY_NAN NPY_NAN NPY_NAN 0xbad0bad0 0xbad0bad0 generate_loop N/A N/A func_inputs func_outputs func_retval ufunc_inputs ufunc_outputs N/A N/A N/A 
    Generate a UFunc loop function that calls a function given as its
    data parameter with the specified input and output arguments and
    return value.

    This function can be passed to PyUFunc_FromFuncAndData.

    Parameters
    ----------
    func_inputs, func_outputs, func_retval : str
        Signature of the function to call, given as type codes of the
        input, output and return value arguments. These 1-character
        codes are given according to the CY_TYPES and TYPE_NAMES
        lists above.

        The corresponding C function signature to be called is:

            retval func(intype1 iv1, intype2 iv2, ..., outtype1 *ov1, ...);

        If len(ufunc_outputs) == len(func_outputs)+1, the return value
        is treated as the first output argument. Otherwise, the return
        value is ignored.

    ufunc_inputs, ufunc_outputs : str
        Ufunc input and output signature.

        This does not have to exactly match the function signature,
        as long as the type casts work out on the C level.

    Returns
    -------
    loop_name
        Name of the generated loop function.
    loop_body
        Generated C code for the loop.

     N/A N/A N/A len func_inputs N/A len ufunc_inputs N/A N/A N/A ValueError Function and ufunc have different number of inputs N/A N/A N/A N/A len func_outputs N/A len ufunc_outputs N/A N/A N/A func_retval v N/A N/A N/A len func_outputs 1 N/A len ufunc_outputs N/A N/A N/A ValueError Function retval and ufunc outputs don't match N/A name N/A loop_%s_%s_%s_As_%s_%s N/A func_retval func_inputs func_outputs ufunc_inputs ufunc_outputs N/A body N/A cdef void %s(char **args, np.npy_intp *dims, np.npy_intp *steps, void *data) nogil:
 name N/A body     cdef np.npy_intp i, n = dims[0]
 N/A body     cdef void *func = (<void**>data)[0]
 N/A body     cdef char *func_name = <char*>(<void**>data)[1]
 N/A j N/A range N/A len ufunc_inputs N/A N/A body N/A     cdef char *ip%d = args[%d]
 N/A j j N/A j N/A range N/A len ufunc_outputs N/A N/A body N/A     cdef char *op%d = args[%d]
 N/A j N/A j N/A len ufunc_inputs N/A ftypes N/A N/A fvars N/A N/A outtypecodes N/A N/A j N/A range N/A len func_inputs N/A N/A N/A N/A ftypes append N/A CY_TYPES N/A N/A func_inputs N/A j N/A N/A N/A fvars append N/A <%s>(<%s*>ip%d)[0] N/A N/A CY_TYPES N/A N/A func_inputs N/A j N/A CY_TYPES N/A N/A ufunc_inputs N/A j j N/A N/A N/A N/A len func_outputs 1 N/A len ufunc_outputs N/A N/A func_joff 1 N/A N/A N/A outtypecodes append func_retval N/A body N/A     cdef %s ov0
 N/A N/A CY_TYPES N/A func_retval N/A N/A func_joff 0 N/A N/A j outtype N/A enumerate func_outputs N/A N/A body N/A     cdef %s ov%d
 N/A N/A CY_TYPES N/A outtype N/A j func_joff N/A N/A N/A ftypes append N/A %s * N/A CY_TYPES N/A outtype N/A N/A N/A fvars append N/A &ov%d N/A j func_joff N/A N/A N/A outtypecodes append outtype N/A body     for i in range(n):
 N/A N/A N/A N/A len func_outputs 1 N/A len ufunc_outputs N/A N/A rv ov0 =  N/A N/A rv N/A funcall N/A         %s(<%s(*)(%s) nogil>func)(%s)
 N/A rv N/A CY_TYPES N/A func_retval N/A N/A ,  join ftypes N/A N/A ,  join fvars N/A input_checks N/A N/A j N/A range N/A len func_inputs N/A N/A N/A N/A N/A ufunc_inputs N/A j N/A func_inputs N/A j DANGEROUS_DOWNCAST N/A N/A chk N/A <%s>(<%s*>ip%d)[0] == (<%s*>ip%d)[0] N/A N/A CY_TYPES N/A N/A func_inputs N/A j N/A CY_TYPES N/A N/A ufunc_inputs N/A j j N/A CY_TYPES N/A N/A ufunc_inputs N/A j j N/A N/A N/A input_checks append chk N/A input_checks N/A N/A body N/A         if %s:
 N/A N/A  and  join input_checks N/A body N/A funcall N/A body         else:
 N/A body             sf_error.error(func_name, sf_error.DOMAIN, "invalid input argument")
 N/A N/A j outtype N/A enumerate outtypecodes N/A N/A body N/A             ov%d = <%s>%s
 N/A j N/A CY_TYPES N/A outtype N/A NAN_VALUE N/A outtype N/A N/A body funcall N/A N/A j N/A outtype fouttype N/A enumerate N/A zip ufunc_outputs outtypecodes N/A N/A N/A N/A fouttype outtype DANGEROUS_DOWNCAST N/A N/A body N/A         if ov%d == <%s>ov%d:
 N/A j N/A CY_TYPES N/A outtype j N/A body N/A             (<%s *>op%d)[0] = <%s>ov%d
 N/A N/A CY_TYPES N/A outtype j N/A CY_TYPES N/A outtype j N/A body         else:
 N/A body             sf_error.error(func_name, sf_error.DOMAIN, "invalid output")
 N/A body N/A             (<%s *>op%d)[0] = <%s>%s
 N/A N/A CY_TYPES N/A outtype j N/A CY_TYPES N/A outtype N/A NAN_VALUE N/A outtype N/A N/A body N/A         (<%s *>op%d)[0] = <%s>ov%d
 N/A N/A CY_TYPES N/A outtype j N/A CY_TYPES N/A outtype j N/A j N/A range N/A len ufunc_inputs N/A N/A body N/A         ip%d += steps[%d]
 N/A j j N/A j N/A range N/A len ufunc_outputs N/A N/A body N/A         op%d += steps[%d]
 N/A j N/A j N/A len ufunc_inputs N/A body     sf_error.check_fpe(func_name)
 N/A N/A name body N/A iter_variants N/A N/A inputs outputs N/A N/A N/A 
    Generate variants of UFunc signatures, by changing variable types,
    within the limitation that the corresponding C types casts still
    work out.

    This does not generate all possibilities, just the ones required
    for the ufunc to work properly with the most common data types.

    Parameters
    ----------
    inputs, outputs : str
        UFunc input and output signature strings

    Yields
    ------
    new_input, new_output : str
        Modified input and output strings.
        Also the original input/output pair is yielded.

     N/A maps N/A N/A i l N/A N/A N/A N/A i inputs N/A l inputs N/A N/A maps N/A maps N/A N/A N/A a dD N/A b fF N/A N/A a b maps N/A N/A src dst maps N/A N/A new_inputs inputs N/A new_outputs outputs N/A N/A a b N/A zip src dst N/A N/A new_inputs N/A N/A new_inputs replace a b N/A new_outputs N/A N/A new_outputs replace a b N/A N/A N/A new_inputs new_outputs N/A Ufunc N/A object N/A N/A 
    Ufunc signature, restricted format suitable for special functions.

    Parameters
    ----------
    name
        Name of the ufunc to create
    signature
        String of form 'func: fff*ff->f, func2: ddd->*i' describing
        the C-level functions and types of their input arguments
        and return values.

        The syntax is 'function_name: inputparams*outputparams->output_retval*ignored_retval'

    Attributes
    ----------
    name : str
        Python name for the Ufunc
    signatures : list of (func_name, inarg_spec, outarg_spec, ret_spec, header_name)
        List of parsed signatures
    doc : str
        Docstring, obtained from add_newdocs
    function_name_overrides : dict of str->str
        Overrides for the function names in signatures

     __init__ N/A N/A self name signatures headers N/A N/A N/A N/A self name name N/A N/A self signatures N/A N/A self _parse_signatures signatures headers N/A N/A self doc N/A N/A add_newdocs get N/A scipy.special. name N/A N/A N/A self doc None N/A N/A N/A ValueError N/A No docstring for ufunc %r name N/A N/A self doc N/A N/A N/A N/A textwrap dedent N/A self doc strip N/A N/A self function_name_overrides N/A N/A _parse_signatures N/A N/A self sigs_str headers_str N/A N/A N/A sigs N/A N/A N/A x strip N/A x N/A N/A sigs_str split , N/A N/A x strip N/A headers N/A N/A N/A x strip N/A x N/A N/A headers_str split , N/A N/A x strip N/A N/A N/A len headers 1 N/A N/A headers N/A headers N/A len sigs N/A N/A N/A len headers N/A len sigs N/A N/A N/A ValueError N/A %s: Number of headers and signatures doesn't match: %r -- %r N/A N/A self name sigs_str headers_str N/A N/A N/A N/A N/A self _parse_signature x N/A h N/A N/A x h N/A zip sigs headers N/A _parse_signature N/A N/A self sig N/A N/A N/A m N/A N/A re match \s*(.*):\s*([fdgFDGil]*)\s*\*\s*([fdgFDGil]*)\s*->\s*([*fdgFDGil]*)\s*$ sig N/A m N/A N/A N/A func inarg outarg ret N/A N/A N/A x strip N/A x N/A N/A m groups N/A N/A N/A N/A ret count * 1 N/A N/A N/A ValueError N/A %s: Invalid signature: %r N/A N/A self name sig N/A N/A func inarg outarg ret N/A m N/A N/A re match \s*(.*):\s*([fdgFDGil]*)\s*->\s*([fdgFDGil]?)\s*$ sig N/A m N/A N/A N/A func inarg ret N/A N/A N/A x strip N/A x N/A N/A m groups N/A N/A func inarg ret N/A N/A ValueError N/A %s: Invalid signature: %r N/A N/A self name sig N/A _get_signatures_and_loops N/A N/A self all_loops N/A N/A N/A inarg_num None N/A outarg_num None N/A seen N/A set N/A variants N/A add_variant N/A N/A func_name inarg outarg ret inp outp N/A N/A N/A N/A inp seen N/A N/A N/A N/A N/A seen add inp N/A sig N/A func_name inp outp N/A N/A v outp N/A N/A N/A ValueError N/A %s: void signature %r N/A N/A self name sig N/A N/A N/A N/A len inp inarg_num N/A N/A len outp outarg_num N/A N/A N/A ValueError N/A %s: signature %r does not have %d/%d input/output args N/A N/A self name sig inarg_num outarg_num N/A N/A loop_name loop N/A generate_loop inarg outarg ret inp outp N/A N/A all_loops N/A loop_name loop N/A N/A N/A variants append N/A func_name loop_name inp outp N/A N/A N/A func_name inarg outarg ret header N/A self signatures N/A N/A outp N/A N/A N/A re sub \*.* ret outarg N/A ret N/A N/A ret replace * N/A N/A inarg_num None N/A N/A inarg_num N/A len inarg N/A outarg_num N/A len outp N/A N/A inp outp N/A N/A list N/A iter_variants inarg outp N/A 0 N/A N/A add_variant func_name inarg outarg ret inp outp N/A N/A func_name inarg outarg ret header N/A self signatures N/A N/A outp N/A N/A N/A re sub \*.* ret outarg N/A ret N/A N/A ret replace * N/A N/A inp outp N/A iter_variants inarg outp N/A N/A N/A add_variant func_name inarg outarg ret inp outp N/A N/A N/A variants sort key N/A N/A N/A v N/A N/A cast_order N/A v N/A 2 N/A N/A variants inarg_num outarg_num N/A cython_func_name N/A N/A self c_name specialized prefix override N/A False _func_ True N/A N/A N/A override N/A c_name N/A self function_name_overrides N/A N/A c_name N/A N/A self function_name_overrides N/A c_name N/A prefix N/A m N/A N/A re match ^(.*?)(\[.*\])$ c_name N/A m N/A N/A N/A c_base_name fused_part N/A N/A m groups N/A N/A N/A c_base_name fused_part N/A c_name N/A specialized N/A N/A N/A %s%s%s N/A prefix c_base_name N/A N/A fused_part replace _ N/A N/A N/A %s%s N/A prefix c_base_name N/A get_prototypes N/A N/A self N/A N/A N/A prototypes N/A N/A N/A func_name inarg outarg ret header N/A self signatures N/A N/A ret N/A N/A ret replace * N/A c_args N/A N/A N/A C_TYPES N/A x N/A x inarg N/A N/A N/A C_TYPES N/A x  * N/A x outarg N/A cy_args N/A N/A N/A CY_TYPES N/A x N/A x inarg N/A N/A N/A CY_TYPES N/A x  * N/A x outarg N/A c_proto N/A %s (*)(%s) N/A N/A C_TYPES N/A ret N/A N/A ,  join c_args N/A cy_proto N/A %s (*)(%s) nogil N/A N/A CY_TYPES N/A ret N/A N/A ,  join cy_args N/A N/A N/A prototypes append N/A func_name c_proto cy_proto header N/A prototypes N/A generate N/A N/A self all_loops N/A N/A N/A toplevel N/A N/A variants inarg_num outarg_num N/A N/A self _get_signatures_and_loops all_loops N/A loops N/A N/A funcs N/A N/A types N/A N/A N/A func_name loop_name inputs outputs variants N/A N/A x inputs N/A N/A N/A N/A types append N/A TYPE_NAMES N/A x N/A x outputs N/A N/A N/A N/A types append N/A TYPE_NAMES N/A x N/A N/A N/A loops append loop_name N/A N/A N/A funcs append func_name N/A toplevel N/A cdef np.PyUFuncGenericFunction ufunc_%s_loops[%d]
 N/A N/A self name N/A len loops N/A toplevel N/A cdef void *ufunc_%s_ptr[%d]
 N/A N/A self name N/A 2 N/A len funcs N/A toplevel N/A cdef void *ufunc_%s_data[%d]
 N/A N/A self name N/A len funcs N/A toplevel N/A cdef char ufunc_%s_types[%d]
 N/A N/A self name N/A len types N/A toplevel N/A cdef char *ufunc_%s_doc = (
    "%s")
 N/A N/A self name N/A N/A N/A N/A N/A N/A N/A self doc replace \ \\ replace " \" replace \n"
    " N/A N/A j function N/A enumerate loops N/A N/A toplevel N/A ufunc_%s_loops[%d] = <np.PyUFuncGenericFunction>%s
 N/A N/A self name j function N/A N/A j type N/A enumerate types N/A N/A toplevel N/A ufunc_%s_types[%d] = <char>%s
 N/A N/A self name j type N/A N/A j func N/A enumerate funcs N/A N/A toplevel N/A ufunc_%s_ptr[2*%d] = <void*>%s
 N/A N/A self name j N/A N/A self cython_func_name func specialized True N/A toplevel N/A ufunc_%s_ptr[2*%d+1] = <void*>(<char*>"%s")
 N/A N/A self name j N/A self name N/A N/A j func N/A enumerate funcs N/A N/A toplevel N/A ufunc_%s_data[%d] = &ufunc_%s_ptr[2*%d]
 N/A N/A self name j N/A self name j N/A toplevel N/A N/A N/A @ = np.PyUFunc_FromFuncAndData(ufunc_@_loops, ufunc_@_data, ufunc_@_types, %d, %d, %d, 0, "@", ufunc_@_doc, 0)
 N/A N/A N/A len types N/A inarg_num outarg_num inarg_num outarg_num replace @ N/A self name N/A toplevel N/A parse_all N/A N/A cls ufunc_str N/A N/A N/A ufuncs N/A N/A lines N/A N/A ufunc_str splitlines N/A N/A N/A lines sort N/A line lines N/A N/A line N/A N/A line strip N/A N/A line N/A N/A N/A m N/A N/A re match ^([a-z0-9_]+)\s*--\s*(.*?)\s*--(.*)$ line N/A N/A m N/A N/A N/A ValueError N/A Unparseable line %r line N/A N/A N/A ufuncs append N/A cls N/A N/A m group 1 N/A N/A m group 2 N/A N/A m group 3 N/A ufuncs N/A classmethod N/A get_declaration N/A N/A ufunc c_name c_proto cy_proto header proto_h_filename N/A N/A N/A 
    Construct a Cython declaration of a function coming either from a
    pxd or a header file. Do sufficient tricks to enable compile-time
    type checking against the signature expected by the ufunc.
     N/A defs N/A N/A defs_h N/A N/A var_name N/A N/A N/A N/A N/A N/A c_name replace [ _ replace ] _ replace _ N/A N/A N/A header endswith .pxd N/A N/A N/A N/A defs append N/A from %s cimport %s as %s N/A N/A header N/A -4 N/A N/A ufunc cython_func_name c_name prefix N/A N/A ufunc cython_func_name c_name N/A proto_name N/A _proto_%s_t var_name N/A N/A N/A defs append N/A ctypedef %s N/A N/A cy_proto replace (*) proto_name N/A N/A N/A defs append N/A cdef %s *%s_var = &%s N/A proto_name proto_name N/A N/A ufunc cython_func_name c_name specialized True N/A N/A new_name N/A %s "%s" N/A N/A N/A ufunc cython_func_name c_name c_name N/A N/A N/A defs append N/A cdef extern from "%s": proto_h_filename N/A N/A N/A defs append N/A     cdef %s N/A N/A cy_proto replace (*) new_name N/A N/A N/A defs_h append N/A #include "%s" header N/A N/A N/A defs_h append N/A %s; N/A N/A c_proto replace (*) c_name N/A N/A defs defs_h var_name N/A generate N/A N/A filename cxx_fn_prefix ufuncs N/A N/A N/A proto_h_filename N/A N/A N/A N/A N/A os path splitext filename N/A 0 _defs.h N/A cxx_proto_h_filename N/A cxx_fn_prefix _defs.h N/A cxx_pyx_filename N/A cxx_fn_prefix .pyx N/A cxx_pxd_filename N/A cxx_fn_prefix .pxd N/A toplevel N/A defs N/A N/A defs_h N/A N/A all_loops N/A N/A cxx_defs N/A N/A cxx_pxd_defs N/A cdef int _set_errprint(int flag) nogil N/A cxx_defs_h N/A N/A N/A N/A ufuncs sort key N/A N/A N/A u N/A N/A u name N/A ufunc ufuncs N/A N/A cfuncs N/A N/A ufunc get_prototypes N/A N/A c_name c_proto cy_proto header cfuncs N/A N/A N/A N/A header endswith ++ N/A N/A header N/A header N/A -2 N/A N/A item_defs item_defs_h var_name N/A get_declaration ufunc c_name c_proto cy_proto header cxx_proto_h_filename N/A N/A N/A cxx_defs extend item_defs N/A N/A N/A cxx_defs_h extend item_defs_h N/A N/A N/A cxx_defs append N/A cdef void *_export_%s = <void*>%s N/A var_name N/A N/A ufunc cython_func_name c_name specialized True override False N/A N/A N/A cxx_pxd_defs append N/A cdef void *_export_%s N/A var_name N/A N/A N/A ufunc function_name_overrides N/A c_name N/A scipy.special._ufuncs_cxx._export_ var_name N/A N/A N/A item_defs item_defs_h _ N/A get_declaration ufunc c_name c_proto cy_proto header proto_h_filename N/A N/A N/A defs extend item_defs N/A N/A N/A defs_h extend item_defs_h N/A t N/A N/A ufunc generate all_loops N/A toplevel N/A t N/A toplevel N/A N/A join N/A N/A N/A list N/A N/A all_loops values defs N/A toplevel N/A N/A open filename w f N/A N/A N/A N/A f write EXTRA_CODE_COMMON N/A N/A N/A f write EXTRA_CODE N/A N/A N/A f write toplevel N/A N/A N/A f write EXTRA_CODE_BOTTOM N/A defs_h N/A unique defs_h N/A N/A open proto_h_filename w f N/A N/A N/A N/A f write #ifndef UFUNCS_PROTO_H
#define UFUNCS_PROTO_H 1
 N/A N/A N/A f write N/A N/A join defs_h N/A N/A N/A f write 
#endif
 N/A cxx_defs_h N/A unique cxx_defs_h N/A N/A open cxx_proto_h_filename w f N/A N/A N/A N/A f write #ifndef UFUNCS_PROTO_H
#define UFUNCS_PROTO_H 1
 N/A N/A N/A f write N/A N/A join cxx_defs_h N/A N/A N/A f write 
#endif
 N/A N/A open cxx_pyx_filename w f N/A N/A N/A N/A f write EXTRA_CODE_COMMON N/A N/A N/A f write N/A N/A join cxx_defs N/A N/A N/A f write 
# distutils: language = c++
 N/A N/A open cxx_pxd_filename w f N/A N/A N/A N/A f write N/A N/A join cxx_pxd_defs N/A unique N/A N/A lst N/A N/A N/A 
    Return a list without repeated entries (first occurrence is kept),
    preserving order.
     N/A seen N/A set N/A new_lst N/A N/A item lst N/A N/A N/A item seen N/A N/A N/A N/A N/A seen add item N/A N/A N/A new_lst append item N/A new_lst N/A main N/A N/A N/A N/A N/A p N/A N/A optparse OptionParser usage N/A N/A __doc__ strip N/A N/A options args N/A N/A p parse_args N/A N/A N/A len args 0 N/A N/A N/A N/A p error invalid number of arguments N/A ufuncs N/A N/A Ufunc parse_all UFUNCS N/A N/A generate _ufuncs.pyx _ufuncs_cxx ufuncs N/A N/A N/A __name__ __main__ N/A N/A N/A main