Message ID | 20240101193859.1038078-1-stefasab@gmail.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,1/2] libavutil/eval: introduce UINT64_MAX constant | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
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 > +@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 thx [...]
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 > > +@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.
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 > > > +@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@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 > +@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 [...]
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 +@item UINT64_MAX +maximum value expressed as an unsigned integer, corresponds to +18446744073709551616 ((2^64)-1) @end table Assuming that an expression is considered "true" if it has a non-zero diff --git a/libavutil/eval.c b/libavutil/eval.c index dc6b3697bc..93048bff91 100644 --- a/libavutil/eval.c +++ b/libavutil/eval.c @@ -100,6 +100,7 @@ static const struct { { "PI", M_PI }, { "PHI", M_PHI }, { "QP2LAMBDA", FF_QP2LAMBDA }, + { "UINT64_MAX", UINT64_MAX } }; double av_strtod(const char *numstr, char **tail)