[FFmpeg-devel] [PATCH 1/2] libavutil/eval: introduce UINT64_MAX constant

Michael Niedermayer michael at niedermayer.cc
Wed Jan 3 21:40:21 EET 2024


On Wed, Jan 03, 2024 at 05:17:07PM +0100, Stefano Sabatini wrote:
> On date Tuesday 2024-01-02 01:10:28 +0100, Michael Niedermayer wrote:
> > On Mon, Jan 01, 2024 at 08:38:58PM +0100, Stefano Sabatini wrote:
> > > This might be useful, e.g. when setting the random seed expressed as a
> > > uint64_t.
> > > ---
> > >  doc/utils.texi   | 3 +++
> > >  libavutil/eval.c | 1 +
> > >  2 files changed, 4 insertions(+)
> > > 
> > > diff --git a/doc/utils.texi b/doc/utils.texi
> > > index 0c4f146f4f..ac9b63826e 100644
> > > --- a/doc/utils.texi
> > > +++ b/doc/utils.texi
> > > @@ -1030,6 +1030,9 @@ area of the unit disc, approximately 3.14
> > >  exp(1) (Euler's number), approximately 2.718
> > >  @item PHI
> > >  golden ratio (1+sqrt(5))/2, approximately 1.618
> > > + at item UINT64_MAX
> > > +maximum value expressed as an unsigned integer, corresponds to
> > 
> > > +18446744073709551616 ((2^64)-1)
> > 
> > this doesnt look right
> > 2^x is even
> > even -1 is odd
> > 18446744073709551616 should be a odd number
> > 18446744073709551615 looks more likely
> > 
> > double precission also doesnt like exactly ((2^64)-1) because the mantisse has too few bits
> > 
> > (U)INT64_MIN should work though exactly in double
> 
> Updated.

>  doc/utils.texi   |    3 +++
>  libavutil/eval.c |    1 +
>  2 files changed, 4 insertions(+)
> 97bdb4309465dc8ad995abb2740d3f3063251398  0001-libavutil-eval-introduce-UINT64_MAX-constant.patch
> From f2772a82779b16982e3bc74176c6ff1011156096 Mon Sep 17 00:00:00 2001
> From: Stefano Sabatini <stefasab at gmail.com>
> Date: Mon, 1 Jan 2024 20:32:38 +0100
> Subject: [PATCH 1/2] libavutil/eval: introduce UINT64_MAX constant
> 
> This might be useful, e.g. when setting the random seed expressed as a
> uint64_t value.
> ---
>  doc/utils.texi   | 3 +++
>  libavutil/eval.c | 1 +
>  2 files changed, 4 insertions(+)
> 
> diff --git a/doc/utils.texi b/doc/utils.texi
> index 0c4f146f4f..dec009a015 100644
> --- a/doc/utils.texi
> +++ b/doc/utils.texi
> @@ -1030,6 +1030,9 @@ area of the unit disc, approximately 3.14
>  exp(1) (Euler's number), approximately 2.718
>  @item PHI
>  golden ratio (1+sqrt(5))/2, approximately 1.618
> + at item UINT64_MAX
> +maximum value expressed as an unsigned 64-bits integer, corresponds to
> +18446744073709551615 ((2^64)-1)
>  @end table

This has unexpected issues

because its in double based table
18446744073709551615 cant be stored in a double so it will become 18446744073709551616
the difference is very small but the value is not the maximum representable but
rather the smallest non representable integer and also the smallest non representable double

so really its
2^64
POW2_64

given that, POW2_64 seems the more precisse name. And how much faster is that
than 2^64 ?

thx

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The worst form of inequality is to try to make unequal things equal.
-- Aristotle
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20240103/41f69bb4/attachment.sig>


More information about the ffmpeg-devel mailing list