From 7e92740f4cc15e3d66e4fe221cde1c94aca18592 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Wed, 25 Mar 2026 20:42:25 +0100 Subject: [PATCH 1/2] Avoid imprecisions wih -funsafe-math-optimizations in stereo_dft_quantize_itd() --- lib_com/options.h | 2 +- lib_enc/ivas_stereo_dft_enc_itd.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index bbea3aa15..fe6c29b89 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -161,7 +161,7 @@ /*#define FIX_I4_OL_PITCH*/ /* fix open-loop pitch used for EVS core switching */ #define TMP_1342_WORKAROUND_DEC_FLUSH_BROKEN_IN_SR /* FhG: Temporary workaround for incorrect implementation of decoder flush with split rendering */ #define NONBE_1122_KEEP_EVS_MODE_UNCHANGED /* FhG: Disables fix for issue 1122 in EVS mode to keep BE tests green. This switch should be removed once the 1122 fix is added to EVS via a CR. */ - +#define FIX_FLOAT_1544_ITD_IMPRECISION_UNSAFE_MATH /* FhG: Avoid imprecisions wih -funsafe-math-optimizations in stereo_dft_quantize_itd() */ /* #################### End BE switches ################################## */ diff --git a/lib_enc/ivas_stereo_dft_enc_itd.c b/lib_enc/ivas_stereo_dft_enc_itd.c index f48fd9a66..e430d8a1c 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd.c +++ b/lib_enc/ivas_stereo_dft_enc_itd.c @@ -165,7 +165,11 @@ static void stereo_dft_quantize_itd( } /*Convert back @ fs*/ +#ifdef FIX_FLOAT_1544_ITD_IMPRECISION_UNSAFE_MATH + *out = (float) ( itd * input_Fs ) / ( (double) ( STEREO_DFT_ITD_FS ) ); /* use double arithmetic, to avoid imprecisions with optimizations using -funsafe-math-optimizations */ +#else *out = (float) ( itd * input_Fs ) / ( (float) ( STEREO_DFT_ITD_FS ) ); +#endif return; } -- GitLab From 5706a1b560575bd2c6b8f7c06e02386bbfd59480 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Wed, 25 Mar 2026 20:55:42 +0100 Subject: [PATCH 2/2] try to solve MSVC compiler warning --- Makefile | 2 +- lib_enc/ivas_stereo_dft_enc_itd.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index fdfd7b012..9d992b6cf 100644 --- a/Makefile +++ b/Makefile @@ -64,7 +64,7 @@ CFLAGS += -std=c99 -pedantic -Wcast-qual -Wall -W -Wextra -Wno-long-long \ -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \ -Werror-implicit-function-declaration \ -Wno-implicit-fallthrough -ffp-contract=off \ - -Winit-self -Wunused-but-set-variable + -Winit-self -Wunused-but-set-variable -funsafe-math-optimizations # to be uncommented in CI # CFLAGS += -Werror diff --git a/lib_enc/ivas_stereo_dft_enc_itd.c b/lib_enc/ivas_stereo_dft_enc_itd.c index e430d8a1c..dc9b3e602 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd.c +++ b/lib_enc/ivas_stereo_dft_enc_itd.c @@ -166,7 +166,7 @@ static void stereo_dft_quantize_itd( /*Convert back @ fs*/ #ifdef FIX_FLOAT_1544_ITD_IMPRECISION_UNSAFE_MATH - *out = (float) ( itd * input_Fs ) / ( (double) ( STEREO_DFT_ITD_FS ) ); /* use double arithmetic, to avoid imprecisions with optimizations using -funsafe-math-optimizations */ + *out = (float) ( ( itd * input_Fs ) / ( (double) ( STEREO_DFT_ITD_FS ) ) ); /* use double arithmetic, to avoid imprecisions with optimizations using -funsafe-math-optimizations */ #else *out = (float) ( itd * input_Fs ) / ( (float) ( STEREO_DFT_ITD_FS ) ); #endif -- GitLab