compile unix double-precision, select integrations algos

This commit is contained in:
Harald Milz 2024-12-05 13:21:20 +01:00
parent 7c13c24b1c
commit a4c0c0b90f
4 changed files with 15 additions and 4 deletions

View file

@ -59,8 +59,8 @@ fi
bash test-common.sh "${dims}" "$PROG" bash test-common.sh "${dims}" "$PROG"
# Build with single-precision float. # Build with double-precision float.
make -C micropython/ports/unix -j${NPROC} USER_C_MODULES="${HERE}" DEBUG=1 STRIP=: MICROPY_PY_FFI=0 MICROPY_PY_BTREE=0 CFLAGS_EXTRA=-DMICROPY_FLOAT_IMPL=MICROPY_FLOAT_IMPL_FLOAT CFLAGS_EXTRA+=-DULAB_MAX_DIMS=$dims CFLAGS_EXTRA+=-DULAB_HASH=$GIT_HASH BUILD=build-nanbox-$dims PROG=micropython-nanbox-$dims make -C micropython/ports/unix -j${NPROC} USER_C_MODULES="${HERE}" DEBUG=1 STRIP=: MICROPY_PY_FFI=0 MICROPY_PY_BTREE=0 CFLAGS_EXTRA=-DMICROPY_FLOAT_IMPL=MICROPY_FLOAT_IMPL_DOUBLE CFLAGS_EXTRA+=-DULAB_MAX_DIMS=$dims CFLAGS_EXTRA+=-DULAB_HASH=$GIT_HASH BUILD=build-nanbox-$dims PROG=micropython-nanbox-$dims
# The unix nanbox variant builds as a 32-bit executable and requires gcc-multilib. # The unix nanbox variant builds as a 32-bit executable and requires gcc-multilib.
# macOS doesn't support i386 builds so only build on linux. # macOS doesn't support i386 builds so only build on linux.

View file

@ -2,6 +2,9 @@
USERMODULES_DIR := $(USERMOD_DIR) USERMODULES_DIR := $(USERMOD_DIR)
# Add all C files to SRC_USERMOD. # Add all C files to SRC_USERMOD.
#if ULAB_SCIPY_HAS_INTEGRATE_MODULE
SRC_USERMOD += $(USERMODULES_DIR)/scipy/integrate/integrate.c
#endif
SRC_USERMOD += $(USERMODULES_DIR)/scipy/linalg/linalg.c SRC_USERMOD += $(USERMODULES_DIR)/scipy/linalg/linalg.c
SRC_USERMOD += $(USERMODULES_DIR)/scipy/optimize/optimize.c SRC_USERMOD += $(USERMODULES_DIR)/scipy/optimize/optimize.c
SRC_USERMOD += $(USERMODULES_DIR)/scipy/signal/signal.c SRC_USERMOD += $(USERMODULES_DIR)/scipy/signal/signal.c

View file

@ -1,5 +1,5 @@
/* /*
* This file is not part of the micropython-ulab project, * This file is part of the micropython-ulab project,
* *
* https://github.com/v923z/micropython-ulab * https://github.com/v923z/micropython-ulab
* *
@ -261,9 +261,11 @@ static mp_obj_t integrate_quad(size_t n_args, const mp_obj_t *pos_args, mp_map_t
mp_float_t a = mp_obj_get_float(args[1].u_obj); mp_float_t a = mp_obj_get_float(args[1].u_obj);
mp_float_t b = mp_obj_get_float(args[2].u_obj); mp_float_t b = mp_obj_get_float(args[2].u_obj);
uint16_t n = (uint16_t)args[3].u_int; uint16_t n = (uint16_t)args[3].u_int;
#if 0
if(n < 0) { if(n < 0) {
mp_raise_ValueError(MP_ERROR_TEXT("levels should be > 0")); mp_raise_ValueError(MP_ERROR_TEXT("levels should be > 0"));
} }
#endif
mp_float_t eps = mp_obj_get_float(args[4].u_obj); mp_float_t eps = mp_obj_get_float(args[4].u_obj);
mp_obj_t res[2]; mp_obj_t res[2];
@ -355,9 +357,11 @@ static mp_obj_t integrate_romberg(size_t n_args, const mp_obj_t *pos_args, mp_ma
mp_float_t a = mp_obj_get_float(args[1].u_obj); mp_float_t a = mp_obj_get_float(args[1].u_obj);
mp_float_t b = mp_obj_get_float(args[2].u_obj); mp_float_t b = mp_obj_get_float(args[2].u_obj);
uint16_t steps = (uint16_t)args[3].u_int; uint16_t steps = (uint16_t)args[3].u_int;
# if 0
if(steps < 0) { if(steps < 0) {
mp_raise_ValueError(MP_ERROR_TEXT("steps should be > 0")); mp_raise_ValueError(MP_ERROR_TEXT("steps should be > 0"));
} }
#endif
mp_float_t eps = mp_obj_get_float(args[4].u_obj); mp_float_t eps = mp_obj_get_float(args[4].u_obj);
return mp_obj_new_float(qromb(fun, a, b, steps, eps)); return mp_obj_new_float(qromb(fun, a, b, steps, eps));
@ -442,9 +446,11 @@ static mp_obj_t integrate_simpson(size_t n_args, const mp_obj_t *pos_args, mp_ma
mp_float_t a = mp_obj_get_float(args[1].u_obj); mp_float_t a = mp_obj_get_float(args[1].u_obj);
mp_float_t b = mp_obj_get_float(args[2].u_obj); mp_float_t b = mp_obj_get_float(args[2].u_obj);
uint16_t steps = (uint16_t)args[3].u_int; uint16_t steps = (uint16_t)args[3].u_int;
#if 0
if(steps < 0) { if(steps < 0) {
mp_raise_ValueError(MP_ERROR_TEXT("steps should be > 0")); mp_raise_ValueError(MP_ERROR_TEXT("steps should be > 0"));
} }
#endif
mp_float_t eps = mp_obj_get_float(args[4].u_obj); mp_float_t eps = mp_obj_get_float(args[4].u_obj);
return mp_obj_new_float(qasi(fun, a, b, steps, eps)); return mp_obj_new_float(qasi(fun, a, b, steps, eps));
@ -606,9 +612,11 @@ static mp_obj_t integrate_quadgk(size_t n_args, const mp_obj_t *pos_args, mp_map
mp_float_t a = mp_obj_get_float(args[1].u_obj); mp_float_t a = mp_obj_get_float(args[1].u_obj);
mp_float_t b = mp_obj_get_float(args[2].u_obj); mp_float_t b = mp_obj_get_float(args[2].u_obj);
uint16_t order = (uint16_t)args[3].u_int; uint16_t order = (uint16_t)args[3].u_int;
#if 0
if(order < 0) { if(order < 0) {
mp_raise_ValueError(MP_ERROR_TEXT("levels should be > 0")); mp_raise_ValueError(MP_ERROR_TEXT("levels should be > 0"));
} }
#endif
mp_float_t eps = mp_obj_get_float(args[4].u_obj); mp_float_t eps = mp_obj_get_float(args[4].u_obj);
mp_obj_t res[2]; mp_obj_t res[2];

View file

@ -1,6 +1,6 @@
/* /*
* This file is not part of the micropython-ulab project, * This file is part of the micropython-ulab project,
* *
* https://github.com/v923z/micropython-ulab * https://github.com/v923z/micropython-ulab
* *