Skip to content

Annotating the ufuncs #230

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
jorenham opened this issue Mar 3, 2025 · 1 comment
Open

Annotating the ufuncs #230

jorenham opened this issue Mar 3, 2025 · 1 comment

Comments

@jorenham
Copy link
Member

jorenham commented Mar 3, 2025

requires #88


1 in, 1 out

strings

  • is{alnum,alpha,numeric,decimal,digit,space,lower,upper,title}
    • __call__
    • at
  • str_len
    • __call__
    • at

_core.umath

linalg._umath_linalg

all have signature f->f; d->d; F->F; D->D

  • det: (m,m)->(), {fdFD}->$1
  • qr_r_raw: (m,n)->(p), {dD}->$1
  • svd: (m,n)->(p), {fdFD}->$1
  • eigvals: (m,m)->(m), f->F & {dD}->D
  • eigvalsh_{lo,up}: (m,m)->(m), {fdFD}->$1
  • {cholesky_{lo,up}, inv}: (m,m)->(m,m), {fdFD}->$1

1 in, 2 out

  • frexp
  • modf

linalg._umath_linalg

  • slogdet: (m,m)->(),(), f->ff, d->dd, F->Ff, D->Dd
  • eigh_{lo,up}: (m,m)->(m),(m,m), f->ff, d->dd, F->fF, D->dD
  • eig: (m,m)->(m),(m,m), f->FF, d->DD, D->DD

1 in, 3 out

linalg._umath_linalg

f->fff, d->ddd, F->FfF, D->DdD

  • svd_f: (m,n)->(m,m),(p),(n,n)
  • svd_s: (m,n)->(m,p),(p),(p,n)

2 in, 1 out

  • logical_{and,or,xor}
  • {greater,less}[_equal], [not_]equal
    • __call__
    • at
    • reduce
    • reduceat
    • accumulate
    • outer
  • ldexp
  • float_power
  • copysign, heaviside, logaddexp, logaddexp2, nextafter
  • arctan2, hypot
  • divide
  • gcd, lcm, {left,right}_shift
  • bitwise_{and,or,xor}
  • fmod
  • floor_divide, remainder, mod
  • power
  • multiply, subtract
  • f{max,min}
  • maximum, minimum
  • add
  • matmul: (n?,k),(k,m?)->(n?,m?)
  • matvec: (m,n),(n)->(m)
  • vecmat: (n),(n,m)->(m)
  • vecdot: (n),(n)->()

_core.umath

  • _expandtabs, _zfill
  • _expandtabs_length
  • _[{l,r}]strip_chars

linalg._umath_linalg

  • qr_complete: (m,n),(n)->(m,m)
  • qr_reduced: (m,n),(k)->(m,k)
  • solve: (m,m),(m,n)->(m,n)
  • solve1: (m,m),(m)->(m)

2 in, 2 out

  • divmod

2 in, 3 out

_core.umath

  • _[r]partition

3 in, 1 out

_core.umath

  • _center, _{l,r}just
  • clip

3 in, 3 out

_core.umath

  • _[r]partition_index

3 in, 4 out

linalg._umath_linalg

  • lstsq: (m,n),(m,nrhs),()->(n,nrhs),(nrhs),(),(p), fff->ffif, ddd->ddid, FFf->Ffif, DDd->Ddid

4 in, 1 out

_core.umath

  • _replace
  • {end,start}swith
  • count, [r]find, [r]index
@jorenham
Copy link
Member Author

jorenham commented Mar 18, 2025

Summary of NumPy ufunc signatures

This includes the supported SUVT signatures that, for some reason, are never listed in ufunc.types.

This only includes the overridable (through __array_ufunc__) ufuncs, i.e. the gufuncs are not included.

These tables were generated with tool/ufunc.py.

1 in, 1 out

ufunc arg out
isnat Mm ?
signbit efdg ?
isfinite ?bBhHiIlLqQefdgFDGmM ?
isinf ?bBhHiIlLqQefdgFDGmM ?
isnan ?bBhHiIlLqQefdgFDGmMT ?
bitwise_count bBhHiIlLqQO BO
logical_not ?bBhHiIlLqQefdgFDGO ?O
spacing efdg efdg
cbrt efdgO efdgO
deg2rad efdgO efdgO
degrees efdgO efdgO
fabs efdgO efdgO
rad2deg efdgO efdgO
radians efdgO efdgO
arccos efdgFDGO efdgFDGO
arccosh efdgFDGO efdgFDGO
arcsin efdgFDGO efdgFDGO
arcsinh efdgFDGO efdgFDGO
arctan efdgFDGO efdgFDGO
arctanh efdgFDGO efdgFDGO
cos efdgFDGO efdgFDGO
cosh efdgFDGO efdgFDGO
exp efdgFDGO efdgFDGO
exp2 efdgFDGO efdgFDGO
expm1 efdgFDGO efdgFDGO
log efdgFDGO efdgFDGO
log10 efdgFDGO efdgFDGO
log1p efdgFDGO efdgFDGO
log2 efdgFDGO efdgFDGO
rint efdgFDGO efdgFDGO
sin efdgFDGO efdgFDGO
sinh efdgFDGO efdgFDGO
sqrt efdgFDGO efdgFDGO
tan efdgFDGO efdgFDGO
tanh efdgFDGO efdgFDGO
invert ?bBhHiIlLqQO ?bBhHiIlLqQO
ceil ?bBhHiIlLqQefdgO ?bBhHiIlLqQefdgO
floor ?bBhHiIlLqQefdgO ?bBhHiIlLqQefdgO
trunc ?bBhHiIlLqQefdgO ?bBhHiIlLqQefdgO
absolute ?bBhHiIlLqQefdgmFDGO ?bBhHiIlLqQefdgmO
conjugate bBhHiIlLqQefdgFDGO bBhHiIlLqQefdgFDGO
reciprocal bBhHiIlLqQefdgFDGO bBhHiIlLqQefdgFDGO
square bBhHiIlLqQefdgFDGO bBhHiIlLqQefdgFDGO
sign bBhHiIlLqQefdgFDGmO bBhHiIlLqQefdgFDGmO
negative bBhHiIlLqQefdgmFDGO bBhHiIlLqQefdgmFDGO
positive bBhHiIlLqQefdgmFDGO bBhHiIlLqQefdgmFDGO
strings.isdecimal UT ?
strings.isnumeric UT ?
strings.isalnum SUT ?
strings.isalpha SUT ?
strings.isdigit SUT ?
strings.islower SUT ?
strings.isspace SUT ?
strings.istitle SUT ?
strings.isupper SUT ?
strings.str_len SUT n
_core.umath._lstrip_whitespace SUT SUT
_core.umath._rstrip_whitespace SUT SUT
_core.umath._strip_whitespace SUT SUT
_core.umath._ones_like ?bBhHiIlLqQefdgFDGmMO ?bBhHiIlLqQefdgFDGmMO

1 in, 2 out

ufunc arg out0 out1
frexp efdg efdg i
modf efdg efdg efdg

2 in, 1 out

ufunc arg0 arg1 out
logical_and ?bBhHiIlLqQefdgFDGOSUVT ?bBhHiIlLqQefdgFDGOSUVT ?O
logical_or ?bBhHiIlLqQefdgFDGOSUVT ?bBhHiIlLqQefdgFDGOSUVT ?O
logical_xor ?bBhHiIlLqQefdgFDGOSUVT ?bBhHiIlLqQefdgFDGOSUVT ?O
equal ?bBhHiIlLqQefdgFDGMmOSUT ?bBhHiIlLqQefdgFDGMmOSUT ?O
greater ?bBhHiIlLqQefdgFDGMmOSUT ?bBhHiIlLqQefdgFDGMmOSUT ?O
greater_equal ?bBhHiIlLqQefdgFDGMmOSUT ?bBhHiIlLqQefdgFDGMmOSUT ?O
less ?bBhHiIlLqQefdgFDGMmOSUT ?bBhHiIlLqQefdgFDGMmOSUT ?O
less_equal ?bBhHiIlLqQefdgFDGMmOSUT ?bBhHiIlLqQefdgFDGMmOSUT ?O
not_equal ?bBhHiIlLqQefdgFDGMmOSUT ?bBhHiIlLqQefdgFDGMmOSUT ?O
ldexp efdg il efdg
float_power dgDG dgDG dgDG
copysign efdg efdg efdg
heaviside efdg efdg efdg
logaddexp efdg efdg efdg
logaddexp2 efdg efdg efdg
nextafter efdg efdg efdg
arctan2 efdgO efdgO efdgO
hypot efdgO efdgO efdgO
divide efdgFDGmO efdgFDGqmO efdgFDGmO
gcd bBhHiIlLqQO bBhHiIlLqQO bBhHiIlLqQO
lcm bBhHiIlLqQO bBhHiIlLqQO bBhHiIlLqQO
left_shift bBhHiIlLqQO bBhHiIlLqQO bBhHiIlLqQO
right_shift bBhHiIlLqQO bBhHiIlLqQO bBhHiIlLqQO
bitwise_and ?bBhHiIlLqQO ?bBhHiIlLqQO ?bBhHiIlLqQO
bitwise_or ?bBhHiIlLqQO ?bBhHiIlLqQO ?bBhHiIlLqQO
bitwise_xor ?bBhHiIlLqQO ?bBhHiIlLqQO ?bBhHiIlLqQO
fmod bBhHiIlLqQefdgO bBhHiIlLqQefdgO bBhHiIlLqQefdgO
remainder bBhHiIlLqQefdgmO bBhHiIlLqQefdgmO bBhHiIlLqQefdgmO
floor_divide bBhHiIlLqQefdgmO bBhHiIlLqQefdgmO bBhHiIlLqQefdgmO
power bBhHiIlLqQefdgFDGO bBhHiIlLqQefdgFDGO bBhHiIlLqQefdgFDGO
matmul ?bBhHiIlLqQefdgFDGO ?bBhHiIlLqQefdgFDGO ?bBhHiIlLqQefdgFDGO
matvec ?bBhHiIlLqQefdgFDGO ?bBhHiIlLqQefdgFDGO ?bBhHiIlLqQefdgFDGO
vecdot ?bBhHiIlLqQefdgFDGO ?bBhHiIlLqQefdgFDGO ?bBhHiIlLqQefdgFDGO
vecmat ?bBhHiIlLqQefdgFDGO ?bBhHiIlLqQefdgFDGO ?bBhHiIlLqQefdgFDGO
multiply ?bBhHiIlLqQefdgFDGmO ?bBhHiIlLqQefdgFDGmO ?bBhHiIlLqQefdgFDGmO
subtract bBhHiIlLqQefdgFDGMmO bBhHiIlLqQefdgFDGmMO bBhHiIlLqQefdgFDGMmO
fmax ?bBhHiIlLqQefdgFDGmMO ?bBhHiIlLqQefdgFDGmMO ?bBhHiIlLqQefdgFDGmMO
fmin ?bBhHiIlLqQefdgFDGmMO ?bBhHiIlLqQefdgFDGmMO ?bBhHiIlLqQefdgFDGmMO
maximum ?bBhHiIlLqQefdgFDGmMOT ?bBhHiIlLqQefdgFDGmMOT ?bBhHiIlLqQefdgFDGmMOT
minimum ?bBhHiIlLqQefdgFDGmMOT ?bBhHiIlLqQefdgFDGmMOT ?bBhHiIlLqQefdgFDGmMOT
add ?bBhHiIlLqQefdgFDGMmOSUT ?bBhHiIlLqQefdgFDGmMOSUT ?bBhHiIlLqQefdgFDGMmOSUT
ufunc arg0 arg1 out
_core.umath._expandtabs T q T
_core.umath._zfill T q T
_core.umath._expandtabs_length SU q n
_core.umath._lstrip_chars SUT SUT SUT
_core.umath._rstrip_chars SUT SUT SUT
_core.umath._strip_chars SUT SUT SUT

Note that the _expandtabs[_length] and _zfill ufuncs also accept S and U if out is set.

2 in, 2 out

ufunc arg0 arg1 out0 out1
divmod bBhHiIlLqQefdgm bBhHiIlLqQefdgm bBhHiIlLqQefdg bBhHiIlLqQefdgm

2 in, 3 out

ufunc arg0 arg1 out0 out1 out2
_core.umath._partition `` `` `` `` ``
_core.umath._rpartition `` `` `` `` ``

These require out to be set, and accept SU

3 in, 1 out

ufunc arg0 arg1 arg2 out
_core.umath._center UT q qSUVT T
_core.umath._ljust UT q qSUVT T
_core.umath._rjust UT q qSUVT T
_core.umath.clip ?bBhHiIlLqQefdgFDGmMO ?bBhHiIlLqQefdgFDGmMO ?bBhHiIlLqQefdgFDGmMO ?bBhHiIlLqQefdgFDGmMO

3 in, 3 out

ufunc arg0 arg1 arg2 out0 out1 out2
_core.umath._partition_index SU SU q SU SU SU
_core.umath._rpartition_index SU SU q SU SU SU

These require out to be set (to a 3-tuple of str_ | bytes_ arrays)

4 in, 1 out

ufunc arg0 arg1 arg2 arg3 out
_core.umath._replace UT UT UT q T
_core.umath.endswith SUT SUT q q ?
_core.umath.startswith SUT SUT q q ?
_core.umath.count SUT SUT q q n
_core.umath.find SUT SUT q q n
_core.umath.index SUT SUT q q n
_core.umath.rfind SUT SUT q q n
_core.umath.rindex SUT SUT q q n

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant