[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