Merge pull request #617 from jepler/sinc-function
ulab.numpy: implement sinc for creating audio filters
This commit is contained in:
commit
6619c20b3b
5 changed files with 30 additions and 2 deletions
|
|
@ -340,6 +340,9 @@ static const mp_rom_map_elem_t ulab_numpy_globals_table[] = {
|
||||||
#if ULAB_NUMPY_HAS_SIN
|
#if ULAB_NUMPY_HAS_SIN
|
||||||
{ MP_ROM_QSTR(MP_QSTR_sin), MP_ROM_PTR(&vector_sin_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_sin), MP_ROM_PTR(&vector_sin_obj) },
|
||||||
#endif
|
#endif
|
||||||
|
#if ULAB_NUMPY_HAS_SINC
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_sinc), MP_ROM_PTR(&vector_sinc_obj) },
|
||||||
|
#endif
|
||||||
#if ULAB_NUMPY_HAS_SINH
|
#if ULAB_NUMPY_HAS_SINH
|
||||||
{ MP_ROM_QSTR(MP_QSTR_sinh), MP_ROM_PTR(&vector_sinh_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_sinh), MP_ROM_PTR(&vector_sinh_obj) },
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -570,6 +570,27 @@ MATH_FUN_1(sin, sin);
|
||||||
MP_DEFINE_CONST_FUN_OBJ_1(vector_sin_obj, vector_sin);
|
MP_DEFINE_CONST_FUN_OBJ_1(vector_sin_obj, vector_sin);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if ULAB_NUMPY_HAS_SINC
|
||||||
|
//| def sinc(a: _ArrayLike) -> ulab.numpy.ndarray:
|
||||||
|
//| """Computes the normalized sinc function"""
|
||||||
|
//| ...
|
||||||
|
//|
|
||||||
|
|
||||||
|
static mp_float_t ulab_sinc1(mp_float_t x) {
|
||||||
|
if (fpclassify(x) == FP_ZERO) {
|
||||||
|
return MICROPY_FLOAT_CONST(1.);
|
||||||
|
}
|
||||||
|
x *= MP_PI;
|
||||||
|
return MICROPY_FLOAT_C_FUN(sin)(x) / x;
|
||||||
|
}
|
||||||
|
|
||||||
|
static mp_obj_t vector_sinc(mp_obj_t x_obj) {
|
||||||
|
return vector_generic_vector(x_obj, ulab_sinc1);
|
||||||
|
}
|
||||||
|
|
||||||
|
MP_DEFINE_CONST_FUN_OBJ_1(vector_sinc_obj, vector_sinc);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if ULAB_NUMPY_HAS_SINH
|
#if ULAB_NUMPY_HAS_SINH
|
||||||
//| def sinh(a: _ArrayLike) -> ulab.numpy.ndarray:
|
//| def sinh(a: _ArrayLike) -> ulab.numpy.ndarray:
|
||||||
//| """Computes the hyperbolic sine"""
|
//| """Computes the hyperbolic sine"""
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ MP_DECLARE_CONST_FUN_OBJ_1(vector_log10_obj);
|
||||||
MP_DECLARE_CONST_FUN_OBJ_1(vector_log2_obj);
|
MP_DECLARE_CONST_FUN_OBJ_1(vector_log2_obj);
|
||||||
MP_DECLARE_CONST_FUN_OBJ_1(vector_radians_obj);
|
MP_DECLARE_CONST_FUN_OBJ_1(vector_radians_obj);
|
||||||
MP_DECLARE_CONST_FUN_OBJ_1(vector_sin_obj);
|
MP_DECLARE_CONST_FUN_OBJ_1(vector_sin_obj);
|
||||||
|
MP_DECLARE_CONST_FUN_OBJ_1(vector_sinc_obj);
|
||||||
MP_DECLARE_CONST_FUN_OBJ_1(vector_sinh_obj);
|
MP_DECLARE_CONST_FUN_OBJ_1(vector_sinh_obj);
|
||||||
#if ULAB_SUPPORTS_COMPLEX
|
#if ULAB_SUPPORTS_COMPLEX
|
||||||
MP_DECLARE_CONST_FUN_OBJ_KW(vector_sqrt_obj);
|
MP_DECLARE_CONST_FUN_OBJ_KW(vector_sqrt_obj);
|
||||||
|
|
|
||||||
|
|
@ -616,6 +616,10 @@
|
||||||
#define ULAB_NUMPY_HAS_SIN (1)
|
#define ULAB_NUMPY_HAS_SIN (1)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef ULAB_NUMPY_HAS_SINC
|
||||||
|
#define ULAB_NUMPY_HAS_SINC (1)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef ULAB_NUMPY_HAS_SINH
|
#ifndef ULAB_NUMPY_HAS_SINH
|
||||||
#define ULAB_NUMPY_HAS_SINH (1)
|
#define ULAB_NUMPY_HAS_SINH (1)
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -15,5 +15,4 @@ myst-parser
|
||||||
|
|
||||||
# For stubs and annotations
|
# For stubs and annotations
|
||||||
adafruit-circuitpython-typing
|
adafruit-circuitpython-typing
|
||||||
|
build
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue