|
1 |
| -from typing import TypeAlias |
| 1 | +from typing import Any, Final, TypeAlias |
2 | 2 |
|
3 | 3 | import numpy as np
|
| 4 | +import optype as op |
4 | 5 | import optype.numpy as onp
|
5 | 6 |
|
6 | 7 | __all__ = ["CZT", "ZoomFFT", "czt", "czt_points", "zoom_fft"]
|
7 | 8 |
|
8 |
| -_Float: TypeAlias = np.float64 | np.float32 |
9 |
| -_Complex: TypeAlias = np.complex128 | np.complex64 |
| 9 | +_Complex: TypeAlias = np.complex128 | np.clongdouble |
10 | 10 |
|
| 11 | +### |
| 12 | + |
| 13 | +# TODO: make generic on `_Complex` |
11 | 14 | class CZT:
|
12 |
| - def __init__(self, /, n: int, m: int | None = None, w: onp.ToComplex | None = None, a: onp.ToComplex = 1 + 0j) -> None: ... |
| 15 | + w: Final[onp.ToComplex] |
| 16 | + a: Final[onp.ToComplex] |
| 17 | + m: Final[int | np.integer[Any]] |
| 18 | + n: Final[int | np.integer[Any]] |
| 19 | + |
| 20 | + def __init__( |
| 21 | + self, |
| 22 | + /, |
| 23 | + n: onp.ToJustInt, |
| 24 | + m: onp.ToJustInt | None = None, |
| 25 | + w: onp.ToComplex | None = None, |
| 26 | + a: onp.ToComplex = 1 + 0j, |
| 27 | + ) -> None: ... |
13 | 28 | def __call__(self, /, x: onp.ToComplexND, *, axis: int = -1) -> onp.ArrayND[_Complex]: ...
|
14 |
| - def points(self, /) -> onp.ArrayND[_Complex]: ... |
| 29 | + def points(self, /) -> onp.Array1D[_Complex]: ... |
15 | 30 |
|
16 | 31 | class ZoomFFT(CZT):
|
17 |
| - w: complex |
18 |
| - a: complex |
19 |
| - |
20 |
| - m: int |
21 |
| - n: int |
22 |
| - |
23 | 32 | f1: onp.ToFloat
|
24 | 33 | f2: onp.ToFloat
|
25 | 34 | fs: onp.ToFloat
|
26 | 35 |
|
27 | 36 | def __init__(
|
28 | 37 | self,
|
29 | 38 | /,
|
30 |
| - n: int, |
31 |
| - fn: onp.ToFloat | onp.ToFloatND, |
32 |
| - m: int | None = None, |
| 39 | + n: onp.ToJustInt, |
| 40 | + fn: onp.ToFloat | onp.ToFloat1D, |
| 41 | + m: onp.ToJustInt | None = None, |
33 | 42 | *,
|
34 | 43 | fs: onp.ToFloat = 2,
|
35 |
| - endpoint: bool = False, |
| 44 | + endpoint: onp.ToBool = False, |
36 | 45 | ) -> None: ...
|
37 | 46 |
|
38 |
| -def czt_points(m: int, w: onp.ToComplex | None = None, a: onp.ToComplex = ...) -> onp.ArrayND[_Complex]: ... |
| 47 | +# |
| 48 | +def _validate_sizes(n: onp.ToJustInt, m: onp.ToJustInt | None) -> int | np.integer[Any]: ... |
| 49 | + |
| 50 | +# |
| 51 | +def czt_points( |
| 52 | + m: onp.ToJustInt, |
| 53 | + w: onp.ToComplex | None = None, |
| 54 | + a: onp.ToComplex = 1 + 0j, |
| 55 | +) -> onp.Array1D[_Complex]: ... |
| 56 | + |
| 57 | +# |
39 | 58 | def czt(
|
40 | 59 | x: onp.ToComplexND,
|
41 |
| - m: int | None = None, |
| 60 | + m: onp.ToJustInt | None = None, |
42 | 61 | w: onp.ToComplex | None = None,
|
43 | 62 | a: onp.ToComplex = 1 + 0j,
|
44 | 63 | *,
|
45 |
| - axis: int = -1, |
| 64 | + axis: op.CanIndex = -1, |
46 | 65 | ) -> onp.ArrayND[_Complex]: ...
|
| 66 | + |
| 67 | +# |
47 | 68 | def zoom_fft(
|
48 | 69 | x: onp.ToComplexND,
|
49 | 70 | fn: onp.ToFloatND | onp.ToFloat,
|
50 |
| - m: int | None = None, |
| 71 | + m: onp.ToJustInt | None = None, |
51 | 72 | *,
|
52 |
| - fs: int = 2, |
53 |
| - endpoint: bool = False, |
54 |
| - axis: int = -1, |
55 |
| -) -> onp.ArrayND[_Float | _Complex]: ... |
| 73 | + fs: onp.ToFloat = 2, |
| 74 | + endpoint: onp.ToBool = False, |
| 75 | + axis: op.CanIndex = -1, |
| 76 | +) -> onp.ArrayND[_Complex]: ... |
0 commit comments