From d4b625b547c6f9f86d2975f21f9f2141f48d8896 Mon Sep 17 00:00:00 2001 From: jorenham Date: Tue, 24 Dec 2024 06:14:04 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20`special`:=20complete=20`kelvin`,?= =?UTF-8?q?=20and=20reduce=20type-checker=20output=20length?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .mypyignore | 7 +- scipy-stubs/special/_ufuncs.pyi | 264 +++++++++++++++++++------------- 2 files changed, 162 insertions(+), 109 deletions(-) diff --git a/.mypyignore b/.mypyignore index ecb8f4f6..76ad4ebf 100644 --- a/.mypyignore +++ b/.mypyignore @@ -44,10 +44,10 @@ scipy\.special\._ufuncs\._(beta|cauchy|invgauss|landau|nc(f|t|x2)|skewnorm)_(pd| scipy\.special\._ufuncs\._cosine_(inv)?cdf scipy\.special\._ufuncs\._(cos|sin)pi scipy\.special\._ufuncs\._factorial -scipy\.special\._ufuncs\._stirling2_inexact scipy\.special\._ufuncs\._igam_fac scipy\.special\._ufuncs\._lgam1p scipy\.special\._ufuncs\._log1pmx +scipy\.special\._ufuncs\._stirling2_inexact scipy\.special\._ufuncs\._scaled_exp1 scipy\.special\._ufuncs\._lanczos_sum_expg_scaled scipy\.special\._ufuncs\._iv_ratio(_c)? @@ -67,6 +67,7 @@ scipy\.special\.(_ufuncs\.)?ellip((e|k)(inc)?|km1|r(c|d|f|g|j)) scipy\.special\.(_ufuncs\.)?erf(c(inv|x)?|i(nv)?)? scipy\.special\.(_ufuncs\.)?eval_(cheby(c|s)|hermite(norm)?|(gen)?laguerre|gegenbauer) scipy\.special\.(_ufuncs\.)?eval_(sh_)?(cheby(t|u)|legendre|jacobi) +scipy\.special\.(_ufuncs\.)?lpmv scipy\.special\.(_ufuncs\.)?exp(10?|2|i|n|rel) scipy\.special\.(_ufuncs\.)?(exp|log|log_exp)it scipy\.special\.(_ufuncs\.)?log1p @@ -88,17 +89,17 @@ scipy\.special\.(_ufuncs\.)?mathieu_(c|s)em scipy\.special\.(_ufuncs\.)?mathieu_mod(c|s)em(1|2) scipy\.special\.(_ufuncs\.)?(rel_)?entr scipy\.special\.(_ufuncs\.)?kl_div -scipy\.special\.(_ufuncs\.)?kolmog(i|orov) -scipy\.special\.(_ufuncs\.)?lpmv scipy\.special\.(_ufuncs\.)?mathieu_(a|b) scipy\.special\.(_ufuncs\.)?hankel(1|2)e? scipy\.special\.(_ufuncs\.)?(obl|pro)_(cv|ang1(_cv)?|rad(1|2)(_cv)?) scipy\.special\.(_ufuncs\.)?(it)?airye? +scipy\.special\.(_ufuncs\.)?kelvin scipy\.special\.(_ufuncs\.)?owens_t scipy\.special\.(_ufuncs\.)?pb(dv|vv|wa) scipy\.special\.(_ufuncs\.)?psi scipy\.special\.(_ufuncs\.)?radian scipy\.special\.(_ufuncs\.)?round +scipy\.special\.(_ufuncs\.)?kolmog(i|orov) scipy\.special\.(_ufuncs\.)?smirnovi? scipy\.special\.(_ufuncs\.)?spence scipy\.special\.(_ufuncs\.)?sph_harm diff --git a/scipy-stubs/special/_ufuncs.pyi b/scipy-stubs/special/_ufuncs.pyi index 744b026c..a12f683e 100644 --- a/scipy-stubs/special/_ufuncs.pyi +++ b/scipy-stubs/special/_ufuncs.pyi @@ -275,27 +275,38 @@ _MaybeOutT2 = TypeVar("_MaybeOutT2", bound=onp.ArrayND[np.number[Any]] | None, d _Falsy: TypeAlias = L[False, 0] _Truthy: TypeAlias = L[True, 1] +_OneOrMany: TypeAlias = _T | tuple[_T, ...] _Out1: TypeAlias = tuple[_MaybeOutT] | _MaybeOutT _Out2: TypeAlias = tuple[_MaybeOutT1, _MaybeOutT2] _Out4: TypeAlias = tuple[None, None, None, None] -_ToBool_D: TypeAlias = onp.ToBool | onp.ToBoolND -_ToInt_D: TypeAlias = onp.ToInt | onp.ToIntND +# NOTE: The `TypeAliasType` helps with readability of error messages -_Float64ND: TypeAlias = onp.ArrayND[np.float64] +_ToBool_D = TypeAliasType("_ToBool_D", onp.ToBool | onp.ToBoolND) +_ToInt_D = TypeAliasType("_ToInt_D", onp.ToInt | onp.ToIntND) -_Float: TypeAlias = np.float32 | np.float64 +_Bool = TypeAliasType("_Bool", np.bool_) +_Float16 = TypeAliasType("_Float16", np.float16) +_Float32 = TypeAliasType("_Float32", np.float32) +_Float64 = TypeAliasType("_Float64", np.float64) +_LongDouble = TypeAliasType("_LongDouble", np.longdouble) +_Complex64 = TypeAliasType("_Complex64", np.complex64) +_Complex128 = TypeAliasType("_Complex128", np.complex128) + +_Float64ND: TypeAlias = onp.ArrayND[_Float64] + +_Float: TypeAlias = _Float32 | _Float64 _FloatND: TypeAlias = onp.ArrayND[_Float] _Float_D: TypeAlias = _Float | onp.ArrayND[_Float] _Float_DT = TypeVar("_Float_DT", bound=_Float_D) -_LFloat: TypeAlias = _Float | np.longdouble +_LFloat: TypeAlias = _Float | _LongDouble _LFloatND: TypeAlias = onp.ArrayND[_LFloat] _LFloat_D: TypeAlias = _LFloat | _LFloatND _LFloat_DT = TypeVar("_LFloat_DT", bound=_LFloat_D) -_Complex: TypeAlias = np.complex64 | np.complex128 +_Complex: TypeAlias = _Complex64 | _Complex128 _ComplexND: TypeAlias = onp.ArrayND[_Complex] _Complex_D: TypeAlias = _Complex | _ComplexND _Complex_DT = TypeVar("_Complex_DT", bound=_Complex_D) @@ -305,17 +316,17 @@ _InexactND: TypeAlias = onp.ArrayND[_Inexact] _Inexact_D: TypeAlias = _Inexact | _InexactND _Inexact_DT = TypeVar("_Inexact_DT", bound=_Inexact_D) -_CoInt: TypeAlias = np.integer[Any] | np.bool_ # coercible to integer +_CoInt: TypeAlias = np.integer[Any] | _Bool # coercible to integer _CoFloat: TypeAlias = np.floating[Any] | _CoInt # coercible to floating -_CoFloat64: TypeAlias = np.float64 | np.float32 | np.float16 | _CoInt # coercible to float64 -_CoComplex128: TypeAlias = np.complex128 | np.complex64 | _CoFloat64 # coercible to complex128 +_CoFloat64: TypeAlias = _Float64 | _Float32 | _Float16 | _CoInt # coercible to float64 +_CoComplex128: TypeAlias = _Complex128 | _Complex64 | _CoFloat64 # coercible to complex128 _CoIntND: TypeAlias = onp.ArrayND[_CoInt] _CoFloatND: TypeAlias = onp.ArrayND[_CoFloat] _CoFloat64ND: TypeAlias = onp.ArrayND[_CoFloat64] _CoComplex128ND: TypeAlias = onp.ArrayND[_CoComplex128] -_SubFloat: TypeAlias = np.float16 | _CoInt # anything "below" float32 | float64 that isn't float32 | float64 +_SubFloat: TypeAlias = _Float16 | _CoInt # anything "below" float32 | float64 that isn't float32 | float64 _ToSubFloat: TypeAlias = float | _SubFloat # does not overlap with float32 | float64 _ToSubComplex: TypeAlias = complex | _SubFloat # does not overlap with complex64 | complex128 @@ -323,28 +334,28 @@ _CoT = TypeVar("_CoT", bound=np.generic) _ToT = TypeVar("_ToT") _ToND: TypeAlias = onp.CanArrayND[_CoT] | onp.SequenceND[onp.CanArrayND[_CoT]] | onp.SequenceND[_ToT] -_ToFloat32: TypeAlias = np.float32 | _ToSubFloat -_ToFloat64: TypeAlias = float | _CoFloat64 -_ToFloat64ND: TypeAlias = _ToND[_CoFloat64, _ToFloat64] +_ToFloat32 = TypeAliasType("_ToFloat32", float | _Float32 | _SubFloat) +_ToFloat64 = TypeAliasType("_ToFloat64", float | _CoFloat64) +_ToFloat64ND = TypeAliasType("_ToFloat64ND", _ToND[_CoFloat64, _ToFloat64]) _ToFloat64_D: TypeAlias = _ToFloat64 | _ToFloat64ND -_ToComplex64: TypeAlias = np.complex64 | _ToFloat32 -_ToComplex128: TypeAlias = complex | _CoComplex128 -_ToComplex128ND: TypeAlias = _ToND[_CoComplex128, _ToComplex128] +_ToComplex64 = TypeAliasType("_ToComplex64", _Complex64 | _ToFloat32) +_ToComplex128 = TypeAliasType("_ToComplex128", complex | _CoComplex128) +_ToComplex128ND = TypeAliasType("_ToComplex128ND", _ToND[_CoComplex128, _ToComplex128]) _ToComplex128_D: TypeAlias = _ToComplex128 | _ToComplex128ND _Axis: TypeAlias = AnyShape | None -_Indices: TypeAlias = op.CanIndex | slice | EllipsisType | tuple[op.CanIndex | slice | EllipsisType, ...] | onp.ToIntND +_Indices = TypeAliasType("_Indices", _OneOrMany[op.CanIndex | slice | EllipsisType] | onp.ToIntND) ### -_ToDType_l: TypeAlias = onp.AnyLongDType -_ToDType_q: TypeAlias = onp.AnyInt64DType | onp.AnyLongLongDType -_ToDType_f: TypeAlias = onp.AnyFloat32DType -_ToDType_d: TypeAlias = onp.AnyFloat64DType -_ToDType_g: TypeAlias = onp.AnyLongDoubleDType -_ToDType_F: TypeAlias = onp.AnyComplex64DType -_ToDType_D: TypeAlias = onp.AnyComplex128DType +_ToDType_l = TypeAliasType("_ToDType_l", onp.AnyLongDType) +_ToDType_q = TypeAliasType("_ToDType_q", onp.AnyInt64DType | onp.AnyLongLongDType) +_ToDType_f = TypeAliasType("_ToDType_f", onp.AnyFloat32DType) +_ToDType_d = TypeAliasType("_ToDType_d", onp.AnyFloat64DType) +_ToDType_g = TypeAliasType("_ToDType_g", onp.AnyLongDoubleDType) +_ToDType_F = TypeAliasType("_ToDType_F", onp.AnyComplex64DType) +_ToDType_D = TypeAliasType("_ToDType_D", onp.AnyComplex128DType) _ToDType_fd: TypeAlias = _ToDType_f | _ToDType_d _ToDType_fdg: TypeAlias = _ToDType_fd | _ToDType_g _ToDType_FD: TypeAlias = _ToDType_F | _ToDType_D @@ -387,10 +398,12 @@ _ToDTypes_ddddd = TypeAliasType("_ToDTypes_ddddd", tuple[_ToDType_d, _ToDType_d, _ToDTypes_qqffF = TypeAliasType("_ToDTypes_qqffF", tuple[_ToDType_q, _ToDType_q, _ToDType_f, _ToDType_f, _ToDType_F]) _ToDTypes_ffffF = TypeAliasType("_ToDTypes_ffffF", tuple[_ToDType_f, _ToDType_f, _ToDType_f, _ToDType_f, _ToDType_F]) _ToDTypes_fffFF = TypeAliasType("_ToDTypes_fffFF", tuple[_ToDType_f, _ToDType_f, _ToDType_f, _ToDType_F, _ToDType_F]) +_ToDTypes_fFFFF = TypeAliasType("_ToDTypes_fFFFF", tuple[_ToDType_f, _ToDType_F, _ToDType_F, _ToDType_F, _ToDType_F]) _ToDTypes_FFFFF = TypeAliasType("_ToDTypes_FFFFF", tuple[_ToDType_F, _ToDType_F, _ToDType_F, _ToDType_F, _ToDType_F]) _ToDTypes_qqddD = TypeAliasType("_ToDTypes_qqddD", tuple[_ToDType_q, _ToDType_q, _ToDType_d, _ToDType_d, _ToDType_D]) _ToDTypes_ddddD = TypeAliasType("_ToDTypes_ddddD", tuple[_ToDType_d, _ToDType_d, _ToDType_d, _ToDType_d, _ToDType_D]) _ToDTypes_dddDD = TypeAliasType("_ToDTypes_dddDD", tuple[_ToDType_d, _ToDType_d, _ToDType_d, _ToDType_D, _ToDType_D]) +_ToDTypes_dDDDD = TypeAliasType("_ToDTypes_dDDDD", tuple[_ToDType_d, _ToDType_D, _ToDType_D, _ToDType_D, _ToDType_D]) _ToDTypes_DDDDD = TypeAliasType("_ToDTypes_DDDDD", tuple[_ToDType_D, _ToDType_D, _ToDType_D, _ToDType_D, _ToDType_D]) _ToDTypes_f6 = TypeAliasType("_ToDTypes_f6", _Tuple6[_ToDType_f]) @@ -448,9 +461,14 @@ class _Kw14f(_KwBase, TypedDict, total=False): dtype: _ToDType_fd signature: L["f->ffff", "d->dddd"] | _ToDTypes_fffff | _ToDTypes_ddddd +@type_check_only +class _Kw14c(_KwBase, TypedDict, total=False): + dtype: _ToDType_FD + signature: L["f->FFFF", "d->DDDD"] | _ToDTypes_fFFFF | _ToDTypes_dDDDD + @type_check_only class _Kw14fc(_KwBase, TypedDict, total=False): - dtype: _ToDType_fd + dtype: _ToDType_fdFD signature: ( L["f->ffff", "d->dddd", "F->FFFF", "D->DDDD"] | _ToDTypes_fffff @@ -929,13 +947,48 @@ class _UFunc14f(_UFunc14[_NameT_co, _IdentityT_co], Generic[_NameT_co, _Identity **kw: Unpack[_Kw14f], ) -> tuple[_OutT1, _OutT2, _OutT3, _OutT4]: ... +@final +@type_check_only +class _UFunc14c(_UFunc14[_NameT_co, _IdentityT_co], Generic[_NameT_co, _IdentityT_co]): + # `kelvin` + @property + @override + def ntypes(self, /) -> L[2]: ... + @property + @override + def types(self, /) -> list[L["f->FFFF", "d->DDDD"]]: ... + # + @overload + def __call__(self, x: _ToFloat64, /, out: _Out4 = ..., **kw: Unpack[_Kw14c]) -> _Tuple4[_Complex]: ... + @overload + def __call__(self, x: _ToFloat64ND, /, out: _Out4 = ..., **kw: Unpack[_Kw14c]) -> _Tuple4[_ComplexND]: ... + @overload + def __call__( + self, + x: _ToFloat64_D, + /, + out: tuple[_OutT1, _OutT2, _OutT3, _OutT4], + **kw: Unpack[_Kw14c], + ) -> tuple[_OutT1, _OutT2, _OutT3, _OutT4]: ... + @overload + def __call__( + self, + x: _ToFloat64_D, + out1: _OutT1, + out2: _OutT2, + out3: _OutT3, + out4: _OutT4, + /, + **kw: Unpack[_Kw14c], + ) -> tuple[_OutT1, _OutT2, _OutT3, _OutT4]: ... + @final @type_check_only class _UFunc14fc(_UFunc14[_NameT_co, _IdentityT_co], Generic[_NameT_co, _IdentityT_co]): # `airy[e]` @property @override - def ntypes(self, /) -> L[2]: ... + def ntypes(self, /) -> L[4]: ... @property @override def types(self, /) -> list[L["f->ffff", "d->dddd", "F->FFFF", "D->DDDD"]]: ... @@ -2853,51 +2906,51 @@ _lanczos_sum_expg_scaled: _UFunc11f[L["_lanczos_sum_expg_scaled"], L[0]] = ... _lgam1p: _UFunc11f[L["_lgam1p"], L[0]] = ... _log1pmx: _UFunc11f[L["_log1pmx"], L[0]] = ... _scaled_exp1: _UFunc11f[L["_scaled_exp1"]] = ... -bei: _UFunc11f[L["bei"]] = ... -beip: _UFunc11f[L["beip"]] = ... -ber: _UFunc11f[L["ber"]] = ... -berp: _UFunc11f[L["berp"]] = ... +round: _UFunc11f[L["round"], L[0]] = ... cbrt: _UFunc11f[L["cbrt"], L[0]] = ... -cosdg: _UFunc11f[L["cosdg"], L[0]] = ... cosm1: _UFunc11f[L["cosm1"], L[0]] = ... +exp2: _UFunc11f[L["exp2"], L[0]] = ... +exp10: _UFunc11f[L["exp10"], L[0]] = ... +exprel: _UFunc11f[L["exprel"]] = ... +gammaln: _UFunc11f[L["gammaln"]] = ... +gammasgn: _UFunc11f[L["gammasgn"], L[0]] = ... +cosdg: _UFunc11f[L["cosdg"], L[0]] = ... cotdg: _UFunc11f[L["cotdg"], L[0]] = ... +sindg: _UFunc11f[L["sindg"], L[0]] = ... +tandg: _UFunc11f[L["tandg"], L[0]] = ... ellipe: _UFunc11f[L["ellipe"], L[0]] = ... ellipk: _UFunc11f[L["ellipk"], L[0]] = ... ellipkm1: _UFunc11f[L["ellipkm1"], L[0]] = ... entr: _UFunc11f[L["entr"], L[0]] = ... -erfcinv: _UFunc11f[L["erfcinv"], L[0]] = ... erfinv: _UFunc11f[L["erfinv"], L[0]] = ... -exp10: _UFunc11f[L["exp10"], L[0]] = ... -exp2: _UFunc11f[L["exp2"], L[0]] = ... -exprel: _UFunc11f[L["exprel"]] = ... -gammaln: _UFunc11f[L["gammaln"]] = ... -gammasgn: _UFunc11f[L["gammasgn"], L[0]] = ... +erfcinv: _UFunc11f[L["erfcinv"], L[0]] = ... i0: _UFunc11f[L["i0"], L[0]] = ... i0e: _UFunc11f[L["i0e"], L[0]] = ... i1: _UFunc11f[L["i1"], L[0]] = ... i1e: _UFunc11f[L["i1e"], L[0]] = ... -it2struve0: _UFunc11f[L["it2struve0"]] = ... -itmodstruve0: _UFunc11f[L["itmodstruve0"]] = ... -itstruve0: _UFunc11f[L["itstruve0"]] = ... j0: _UFunc11f[L["j0"], L[0]] = ... j1: _UFunc11f[L["j1"], L[0]] = ... +y0: _UFunc11f[L["y0"], L[0]] = ... +y1: _UFunc11f[L["y1"], L[0]] = ... k0: _UFunc11f[L["k0"], L[0]] = ... k0e: _UFunc11f[L["k0e"], L[0]] = ... k1: _UFunc11f[L["k1"], L[0]] = ... +bei: _UFunc11f[L["bei"]] = ... +beip: _UFunc11f[L["beip"]] = ... +ber: _UFunc11f[L["ber"]] = ... +berp: _UFunc11f[L["berp"]] = ... k1e: _UFunc11f[L["k1e"], L[0]] = ... kei: _UFunc11f[L["kei"]] = ... keip: _UFunc11f[L["keip"]] = ... ker: _UFunc11f[L["ker"]] = ... kerp: _UFunc11f[L["kerp"]] = ... +itstruve0: _UFunc11f[L["itstruve0"]] = ... +it2struve0: _UFunc11f[L["it2struve0"]] = ... +itmodstruve0: _UFunc11f[L["itmodstruve0"]] = ... kolmogi: _UFunc11f[L["kolmogi"], L[0]] = ... kolmogorov: _UFunc11f[L["kolmogorov"], L[0]] = ... ndtri: _UFunc11f[L["ndtri"], L[0]] = ... ndtri_exp: _UFunc11f[L["ndtri_exp"], L[0]] = ... -round: _UFunc11f[L["round"], L[0]] = ... -sindg: _UFunc11f[L["sindg"], L[0]] = ... -tandg: _UFunc11f[L["tandg"], L[0]] = ... -y0: _UFunc11f[L["y0"], L[0]] = ... -y1: _UFunc11f[L["y1"], L[0]] = ... zetac: _UFunc11f[L["zetac"], L[0]] = ... # f->f; d->d; g->g @@ -2914,32 +2967,32 @@ _sinpi: _UFunc11fc[L["_sinpi"]] = ... _riemann_zeta: _UFunc11fc[L["_riemann_zeta"], L[0]] = ... dawsn: _UFunc11fc[L["dawsn"], L[0]] = ... erf: _UFunc11fc[L["erf"], L[0]] = ... +erfi: _UFunc11fc[L["erfi"], L[0]] = ... erfc: _UFunc11fc[L["erfc"], L[0]] = ... erfcx: _UFunc11fc[L["erfcx"], L[0]] = ... -erfi: _UFunc11fc[L["erfi"], L[0]] = ... exp1: _UFunc11fc[L["exp1"]] = ... expi: _UFunc11fc[L["expi"]] = ... -expm1: _UFunc11fc[L["expm1"], L[0]] = ... gamma: _UFunc11fc[L["gamma"]] = ... -log1p: _UFunc11fc[L["log1p"], L[0]] = ... -log_ndtr: _UFunc11fc[L["log_ndtr"], L[0]] = ... +rgamma: _UFunc11fc[L["rgamma"]] = ... loggamma: _UFunc11fc[L["loggamma"]] = ... +expm1: _UFunc11fc[L["expm1"], L[0]] = ... +log1p: _UFunc11fc[L["log1p"], L[0]] = ... ndtr: _UFunc11fc[L["ndtr"], L[0]] = ... +log_ndtr: _UFunc11fc[L["log_ndtr"], L[0]] = ... psi: _UFunc11fc[L["psi"]] = ... -rgamma: _UFunc11fc[L["rgamma"]] = ... spence: _UFunc11fc[L["spence"], L[0]] = ... wrightomega: _UFunc11fc[L["wrightomega"], L[0]] = ... # f->ff; d->dd iti0k0: _UFunc12f[L["iti0k0"]] = ... -it2i0k0: _UFunc12f[L["it2i0k0"]] = ... itj0y0: _UFunc12f[L["itj0y0"]] = ... +it2i0k0: _UFunc12f[L["it2i0k0"]] = ... it2j0y0: _UFunc12f[L["it2j0y0"]] = ... # f->ff; d->dd; f->FF; D->DD -fresnel: _UFunc12fc[L["fresnel"]] = ... sici: _UFunc12fc[L["sici"], L[0]] = ... shichi: _UFunc12fc[L["shichi"], L[0]] = ... +fresnel: _UFunc12fc[L["fresnel"]] = ... # f->FF; d->DD modfresnelm: _UFunc12c[L["modfresnelm"]] = ... @@ -2953,8 +3006,7 @@ airy: _UFunc14fc[L["airy"]] = ... airye: _UFunc14fc[L["airye"]] = ... # f->FFFF; d->DDDD -# TODO -kelvin: np.ufunc = ... +kelvin: _UFunc14c[L["kelvin"]] = ... # ld->d eval_hermite: _UFunc21ld[L["eval_hermite"], L[0]] = ... @@ -2972,88 +3024,88 @@ _nct_mean: _UFunc21f[L["_nct_mean"], L[0]] = ... _nct_variance: _UFunc21f[L["_nct_variance"], L[0]] = ... _nct_skewness: _UFunc21f[L["_nct_skewness"], L[0]] = ... _nct_kurtosis_excess: _UFunc21f[L["_nct_kurtosis_excess"], L[0]] = ... -_smirnovc: _UFunc21f[L["_smirnovc"], L[0]] = ... -_smirnovci: _UFunc21f[L["_smirnovci"], L[0]] = ... -_smirnovp: _UFunc21f[L["_smirnovp"], L[0]] = ... _stirling2_inexact: _UFunc21f[L["_stirling2_inexact"]] = ... -agm: _UFunc21f[L["agm"], L[0]] = ... +powm1: _UFunc21f[L["powm1"], L[0]] = ... +binom: _UFunc21f[L["binom"]] = ... beta: _UFunc21f[L["beta"], L[0]] = ... betaln: _UFunc21f[L["betaln"], L[0]] = ... -binom: _UFunc21f[L["binom"]] = ... +gammainc: _UFunc21f[L["gammainc"], L[0]] = ... +gammaincinv: _UFunc21f[L["gammaincinv"], L[0]] = ... +gammaincc: _UFunc21f[L["gammaincc"], L[0]] = ... +gammainccinv: _UFunc21f[L["gammainccinv"], L[0]] = ... +poch: _UFunc21f[L["poch"], L[0]] = ... boxcox: _UFunc21f[L["boxcox"], L[0]] = ... +inv_boxcox: _UFunc21f[L["inv_boxcox"], L[0]] = ... boxcox1p: _UFunc21f[L["boxcox1p"], L[0]] = ... -chdtr: _UFunc21f[L["chdtr"], L[0]] = ... -chdtrc: _UFunc21f[L["chdtrc"], L[0]] = ... -chdtri: _UFunc21f[L["chdtri"], L[0]] = ... -chdtriv: _UFunc21f[L["chdtriv"], L[0]] = ... +inv_boxcox1p: _UFunc21f[L["inv_boxcox1p"], L[0]] = ... +expn: _UFunc21f[L["expn"], L[0]] = ... ellipeinc: _UFunc21f[L["ellipeinc"], L[0]] = ... ellipkinc: _UFunc21f[L["ellipkinc"], L[0]] = ... -expn: _UFunc21f[L["expn"], L[0]] = ... -gammainc: _UFunc21f[L["gammainc"], L[0]] = ... -gammaincc: _UFunc21f[L["gammaincc"], L[0]] = ... -gammainccinv: _UFunc21f[L["gammainccinv"], L[0]] = ... -gammaincinv: _UFunc21f[L["gammaincinv"], L[0]] = ... +agm: _UFunc21f[L["agm"], L[0]] = ... huber: _UFunc21f[L["huber"], L[0]] = ... -inv_boxcox1p: _UFunc21f[L["inv_boxcox1p"], L[0]] = ... -inv_boxcox: _UFunc21f[L["inv_boxcox"], L[0]] = ... -kl_div: _UFunc21f[L["kl_div"], L[0]] = ... -kn: _UFunc21f[L["kn"], L[0]] = ... +pseudo_huber: _UFunc21f[L["pseudo_huber"], L[0]] = ... mathieu_a: _UFunc21f[L["mathieu_a"]] = ... mathieu_b: _UFunc21f[L["mathieu_b"]] = ... +struve: _UFunc21f[L["struve"], L[0]] = ... modstruve: _UFunc21f[L["modstruve"], L[0]] = ... owens_t: _UFunc21f[L["owens_t"], L[0]] = ... +kl_div: _UFunc21f[L["kl_div"], L[0]] = ... +rel_entr: _UFunc21f[L["rel_entr"], L[0]] = ... +_smirnovc: _UFunc21f[L["_smirnovc"], L[0]] = ... +_smirnovci: _UFunc21f[L["_smirnovci"], L[0]] = ... +_smirnovp: _UFunc21f[L["_smirnovp"], L[0]] = ... +smirnov: _UFunc21f[L["smirnov"], L[0]] = ... +smirnovi: _UFunc21f[L["smirnovi"], L[0]] = ... +tklmbda: _UFunc21f[L["tklmbda"], L[0]] = ... +kn: _UFunc21f[L["kn"], L[0]] = ... +yn: _UFunc21f[L["yn"], L[0]] = ... +chdtr: _UFunc21f[L["chdtr"], L[0]] = ... +chdtrc: _UFunc21f[L["chdtrc"], L[0]] = ... +chdtri: _UFunc21f[L["chdtri"], L[0]] = ... +chdtriv: _UFunc21f[L["chdtriv"], L[0]] = ... pdtr: _UFunc21f[L["pdtr"], L[0]] = ... pdtrc: _UFunc21f[L["pdtrc"], L[0]] = ... pdtri: _UFunc21f[L["pdtri"], L[0]] = ... pdtrik: _UFunc21f[L["pdtrik"], L[0]] = ... -poch: _UFunc21f[L["poch"], L[0]] = ... -powm1: _UFunc21f[L["powm1"], L[0]] = ... -pseudo_huber: _UFunc21f[L["pseudo_huber"], L[0]] = ... -rel_entr: _UFunc21f[L["rel_entr"], L[0]] = ... -smirnov: _UFunc21f[L["smirnov"], L[0]] = ... -smirnovi: _UFunc21f[L["smirnovi"], L[0]] = ... stdtr: _UFunc21f[L["stdtr"], L[0]] = ... stdtridf: _UFunc21f[L["stdtridf"], L[0]] = ... stdtrit: _UFunc21f[L["stdtrit"], L[0]] = ... -struve: _UFunc21f[L["struve"], L[0]] = ... -tklmbda: _UFunc21f[L["tklmbda"], L[0]] = ... -yn: _UFunc21f[L["yn"], L[0]] = ... # fF->F; dD->D hankel1: _UFunc21c1[L["hankel1"]] = ... -hankel1e: _UFunc21c1[L["hankel1e"]] = ... hankel2: _UFunc21c1[L["hankel2"]] = ... +hankel1e: _UFunc21c1[L["hankel1e"]] = ... hankel2e: _UFunc21c1[L["hankel2e"]] = ... # ff->f; (l|d)d->d; fF->F; dD->D eval_chebyc: _UFunc21fc1[L["eval_chebyc"], L[0]] = ... eval_chebys: _UFunc21fc1[L["eval_chebys"], L[0]] = ... eval_chebyt: _UFunc21fc1[L["eval_chebyt"], L[0]] = ... -eval_chebyu: _UFunc21fc1[L["eval_chebyu"], L[0]] = ... -eval_laguerre: _UFunc21fc1[L["eval_laguerre"], L[0]] = ... -eval_legendre: _UFunc21fc1[L["eval_legendre"], L[0]] = ... eval_sh_chebyt: _UFunc21fc1[L["eval_sh_chebyt"], L[0]] = ... +eval_chebyu: _UFunc21fc1[L["eval_chebyu"], L[0]] = ... eval_sh_chebyu: _UFunc21fc1[L["eval_sh_chebyu"], L[0]] = ... +eval_legendre: _UFunc21fc1[L["eval_legendre"], L[0]] = ... eval_sh_legendre: _UFunc21fc1[L["eval_sh_legendre"], L[0]] = ... +eval_laguerre: _UFunc21fc1[L["eval_laguerre"], L[0]] = ... hyp0f1: _UFunc21fc1[L["hyp0f1"], L[0]] = ... -iv: _UFunc21fc1[L["iv"]] = ... -ive: _UFunc21fc1[L["ive"]] = ... jn: _UFunc21fc1[L["jn"]] = ... +iv: _UFunc21fc1[L["iv"]] = ... jv: _UFunc21fc1[L["jv"]] = ... -jve: _UFunc21fc1[L["jve"]] = ... kv: _UFunc21fc1[L["kv"]] = ... -kve: _UFunc21fc1[L["kve"]] = ... yv: _UFunc21fc1[L["yv"]] = ... +ive: _UFunc21fc1[L["ive"]] = ... +jve: _UFunc21fc1[L["jve"]] = ... +kve: _UFunc21fc1[L["kve"]] = ... yve: _UFunc21fc1[L["yve"]] = ... # lf->f; ld->d; lF->F; lD->D _spherical_in: np.ufunc = ... -_spherical_in_d: np.ufunc = ... _spherical_jn: np.ufunc = ... -_spherical_jn_d: np.ufunc = ... _spherical_kn: np.ufunc = ... -_spherical_kn_d: np.ufunc = ... _spherical_yn: np.ufunc = ... +_spherical_in_d: np.ufunc = ... +_spherical_jn_d: np.ufunc = ... +_spherical_kn_d: np.ufunc = ... _spherical_yn_d: np.ufunc = ... # ff->f; dd->d; FF->F; DD->D @@ -3116,12 +3168,20 @@ _ncx2_cdf: _UFunc31f[L["_ncx2_cdf"], L[0]] = ... _ncx2_ppf: _UFunc31f[L["_ncx2_ppf"], L[0]] = ... _ncx2_sf: _UFunc31f[L["_ncx2_sf"], L[0]] = ... _ncx2_isf: _UFunc31f[L["_ncx2_isf"], L[0]] = ... +radian: _UFunc31f[L["radian"], L[0]] = ... +hyperu: _UFunc31f[L["hyperu"], L[0]] = ... +obl_cv: _UFunc31f[L["obl_cv"]] = ... +pro_cv: _UFunc31f[L["pro_cv"]] = ... +lpmv: _UFunc31f[L["lpmv"], L[0]] = ... +besselpoly: _UFunc31f[L["besselpoly"], L[0]] = ... +wright_bessel: _UFunc31f[L["wright_bessel"]] = ... +log_wright_bessel: _UFunc31f[L["log_wright_bessel"]] = ... +voigt_profile: _UFunc31f[L["voigt_profile"], L[0]] = ... bdtr: _UFunc31f[L["bdtr"], L[0]] = ... bdtrc: _UFunc31f[L["bdtrc"], L[0]] = ... bdtri: _UFunc31f[L["bdtri"], L[0]] = ... bdtrik: _UFunc31f[L["bdtrik"], L[0]] = ... bdtrin: _UFunc31f[L["bdtrin"], L[0]] = ... -besselpoly: _UFunc31f[L["besselpoly"], L[0]] = ... betainc: _UFunc31f[L["betainc"], L[0]] = ... betaincc: _UFunc31f[L["betaincc"], L[0]] = ... betainccinv: _UFunc31f[L["betainccinv"], L[0]] = ... @@ -3141,9 +3201,6 @@ gdtrc: _UFunc31f[L["gdtrc"], L[0]] = ... gdtria: _UFunc31f[L["gdtria"], L[0]] = ... gdtrib: _UFunc31f[L["gdtrib"], L[0]] = ... gdtrix: _UFunc31f[L["gdtrix"], L[0]] = ... -hyperu: _UFunc31f[L["hyperu"], L[0]] = ... -log_wright_bessel: _UFunc31f[L["log_wright_bessel"]] = ... -lpmv: _UFunc31f[L["lpmv"], L[0]] = ... nbdtr: _UFunc31f[L["nbdtr"], L[0]] = ... nbdtrc: _UFunc31f[L["nbdtrc"], L[0]] = ... nbdtri: _UFunc31f[L["nbdtri"], L[0]] = ... @@ -3155,11 +3212,6 @@ nctdtrinc: _UFunc31f[L["nctdtrinc"], L[0]] = ... nctdtrit: _UFunc31f[L["nctdtrit"], L[0]] = ... nrdtrimn: _UFunc31f[L["nrdtrimn"], L[0]] = ... nrdtrisd: _UFunc31f[L["nrdtrisd"], L[0]] = ... -obl_cv: _UFunc31f[L["obl_cv"]] = ... -pro_cv: _UFunc31f[L["pro_cv"]] = ... -radian: _UFunc31f[L["radian"], L[0]] = ... -voigt_profile: _UFunc31f[L["voigt_profile"], L[0]] = ... -wright_bessel: _UFunc31f[L["wright_bessel"]] = ... # fff->f; (l|d)dd->d; ffF->F; ddD->D eval_gegenbauer: _UFunc31fc1[L["eval_gegenbauer"], L[0]] = ... @@ -3176,9 +3228,9 @@ _lambertw: np.ufunc = ... # fff->ff; ddd->dd mathieu_cem: _UFunc32f[L["mathieu_cem"]] = ... +mathieu_sem: _UFunc32f[L["mathieu_sem"]] = ... mathieu_modcem1: _UFunc32f[L["mathieu_modcem1"]] = ... mathieu_modcem2: _UFunc32f[L["mathieu_modcem2"]] = ... -mathieu_sem: _UFunc32f[L["mathieu_sem"]] = ... mathieu_modsem1: _UFunc32f[L["mathieu_modsem1"]] = ... mathieu_modsem2: _UFunc32f[L["mathieu_modsem2"]] = ... @@ -3214,18 +3266,18 @@ elliprj: _UFunc41fc4[L["elliprj"], L[0]] = ... # ffff->ff; dddd->dd obl_ang1: _UFunc42f[L["obl_ang1"]] = ... -obl_rad1: _UFunc42f[L["obl_rad1"]] = ... -obl_rad2: _UFunc42f[L["obl_rad2"]] = ... pro_ang1: _UFunc42f[L["pro_ang1"]] = ... +obl_rad1: _UFunc42f[L["obl_rad1"]] = ... pro_rad1: _UFunc42f[L["pro_rad1"]] = ... +obl_rad2: _UFunc42f[L["obl_rad2"]] = ... pro_rad2: _UFunc42f[L["pro_rad2"]] = ... # fffff->ff; ddddd->dd obl_ang1_cv: _UFunc52f[L["obl_ang1_cv"]] = ... -obl_rad1_cv: _UFunc52f[L["obl_rad1_cv"]] = ... -obl_rad2_cv: _UFunc52f[L["obl_rad2_cv"]] = ... pro_ang1_cv: _UFunc52f[L["pro_ang1_cv"]] = ... +obl_rad1_cv: _UFunc52f[L["obl_rad1_cv"]] = ... pro_rad1_cv: _UFunc52f[L["pro_rad1_cv"]] = ... +obl_rad2_cv: _UFunc52f[L["obl_rad2_cv"]] = ... pro_rad2_cv: _UFunc52f[L["pro_rad2_cv"]] = ... # fffffff->f; dd(ll|dd)ddd->d