From 296aa8dfb529916b1142ad4baa4f90c945463ef0 Mon Sep 17 00:00:00 2001 From: Sven-Bodo Scholz Date: Wed, 21 Jan 2026 12:23:25 +0100 Subject: [PATCH 1/3] fixed Math.sac for sac_int --- src/CMakeLists.txt | 2 ++ src/numerical/Math.sac | 10 ++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 76aee095..5b895ec9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -309,6 +309,8 @@ SET (C_DEPS_SRC numerical/src/Math/int_log.c numerical/src/Math/sign.c numerical/src/Math/isnan.c + numerical/src/Math/frexp.c + numerical/src/Math/ldexp.c numerical/src/Math/isinf.c numerical/src/Math/isfinite.c random/src/Xoshiro.c diff --git a/src/numerical/Math.sac b/src/numerical/Math.sac index 12fe7f97..80e074dd 100644 --- a/src/numerical/Math.sac +++ b/src/numerical/Math.sac @@ -160,20 +160,26 @@ external float exp(float X); external double, int frexp(double X); #pragma linksign [0,2,1] + #pragma linkname "SAC_MATH_frexp" + #pragma linkobj "src/Math/frexp.o" #pragma header "" external float, int frexp(float X); #pragma linksign [0,2,1] - #pragma linkname "frexpf" + #pragma linkname "SAC_MATH_frexpf" + #pragma linkobj "src/Math/frexp.o" #pragma header "" external double ldexp(double X, int EXP); #pragma linksign [0,1,2] + #pragma linkname "SAC_MATH_ldexp" + #pragma linkobj "src/Math/ldexp.o" #pragma header "" external float ldexp(float X, int EXP); #pragma linksign [0,1,2] - #pragma linkname "ldexpf" + #pragma linkname "SAC_MATH_ldexpf" + #pragma linkobj "src/Math/ldexp.o" #pragma header "" external double log(double X); From 07c9faf0f8c18efa4a2ef7724e819a25d8b93231 Mon Sep 17 00:00:00 2001 From: Sven-Bodo Scholz Date: Wed, 21 Jan 2026 12:38:16 +0100 Subject: [PATCH 2/3] missing C implementations --- src/numerical/src/Math/frexp.c | 29 +++++++++++++++++++++++++++++ src/numerical/src/Math/ldexp.c | 15 +++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 src/numerical/src/Math/frexp.c create mode 100644 src/numerical/src/Math/ldexp.c diff --git a/src/numerical/src/Math/frexp.c b/src/numerical/src/Math/frexp.c new file mode 100644 index 00000000..17fc003e --- /dev/null +++ b/src/numerical/src/Math/frexp.c @@ -0,0 +1,29 @@ +/** + * Dealing with sac_int arguments. + */ +#include +#include "sacinterface.h" + +double SAC_MATH_frexp( double val, sac_int *exp) +{ + int ex; + double res; + + res = frexp (val, &ex); + + *exp = (sac_int)ex; + + return res; +} + +float SAC_MATH_frexpf( float val, sac_int *exp) +{ + int ex; + float res; + + res = frexpf (val, &ex); + + *exp = (sac_int)ex; + + return res; +} diff --git a/src/numerical/src/Math/ldexp.c b/src/numerical/src/Math/ldexp.c new file mode 100644 index 00000000..2fb9f36a --- /dev/null +++ b/src/numerical/src/Math/ldexp.c @@ -0,0 +1,15 @@ +/** + * Dealing with sac_int arguments. + */ +#include +#include "sacinterface.h" + +double SAC_MATH_ldexp( double val, sac_int exp) +{ + return ldexp (val, (int)exp); +} + +float SAC_MATH_ldexpf( float val, sac_int exp) +{ + return ldexpf (val, (int)exp); +} From 8ea1d8f3f3975cae59b7cbc3bc8f0ad55e8afffb Mon Sep 17 00:00:00 2001 From: Thomas Koopman Date: Wed, 21 Jan 2026 15:09:17 +0100 Subject: [PATCH 3/3] Update environment --- src/system/src/Environment/Environ.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/system/src/Environment/Environ.c b/src/system/src/Environment/Environ.c index c342b594..57bcca39 100644 --- a/src/system/src/Environment/Environ.c +++ b/src/system/src/Environment/Environ.c @@ -5,9 +5,9 @@ extern char **environ; -int EnvCount( void) +sac_int EnvCount( void) { - int i = 0; + sac_int i = 0; if (environ) { while (environ[i]) { @@ -18,10 +18,10 @@ int EnvCount( void) return i; } -char* IndexEnv( int i) +char* IndexEnv( sac_int i) { char* res; - int k = 0; + sac_int k = 0; if (environ) { while (k < i && environ[k]) {