[FFmpeg-devel] [PATCH] dnn-layer-mathbinary-test: Fix tests for cases with extra intermediate precision

Guo, Yejun yejun.guo at intel.com
Thu Apr 23 15:55:36 EEST 2020



> -----Original Message-----
> From: ffmpeg-devel [mailto:ffmpeg-devel-bounces at ffmpeg.org] On Behalf Of
> Martin Storsj?
> Sent: Thursday, April 23, 2020 2:34 PM
> To: ffmpeg-devel at ffmpeg.org
> Subject: [FFmpeg-devel] [PATCH] dnn-layer-mathbinary-test: Fix tests for cases
> with extra intermediate precision
> 
> This fixes tests on 32 bit x86 mingw with clang, which uses x87
> fpu by default.
> 
> In this setup, while the get_expected function is declared to
> return float, the compiler is (especially given the optimization
> flags set) free to keep the intermediate values (in this case,
> the return value from the inlined function) in higher precision.
> 
> This results in the situation where 7.28 (which actually, as
> a float, ends up as 7.2800002098), multiplied by 100, is
> 728.000000 when really forced into a 32 bit float, but 728.000021
> when kept with higher intermediate precision.
> 
> For the multiplication case, a more suitable epsilon would e.g.
> be 2*FLT_EPSILON*fabs(expected_output), 

thanks for the fix. LGTM.

Just want to have a talk with 2*FLT_EPSILON*fabs(expected_output),
any explanation for this? looks ULP (units of least precision) based method
is a good choice, see https://bitbashing.io/comparing-floats.html. 
Anyway, let's use the hardcoded threshold for simplicity.

but just increase the
> current hardcoded threshold for now.
> ---
>  tests/dnn/dnn-layer-mathbinary-test.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tests/dnn/dnn-layer-mathbinary-test.c
> b/tests/dnn/dnn-layer-mathbinary-test.c
> index f82d15b14c..f67c0f213b 100644
> --- a/tests/dnn/dnn-layer-mathbinary-test.c
> +++ b/tests/dnn/dnn-layer-mathbinary-test.c
> @@ -24,7 +24,7 @@
>  #include "libavfilter/dnn/dnn_backend_native_layer_mathbinary.h"
>  #include "libavutil/avassert.h"
> 
> -#define EPSON 0.00001
> +#define EPSON 0.00005
> 
>  static float get_expected(float f1, float f2, DNNMathBinaryOperation op)
>  {
> --
> 2.17.1
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list