1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-12 19:18:44 +02:00
FFmpeg/tests/ref/fate/eval
Michael Niedermayer 278fea3664
avutil/eval: Use even better PRNG
This is the 64bit version of Chris Doty-Humphreys SFC64

Compared to the LCGs these produce much better quality numbers.
Compared to LFGs this needs less state. (our LFG has 224 byte
state for its 32bit version) this has 32byte state
Also the initialization for our LFG is slower.
This is also much faster than KISS or PCG.

This commit replaces the broken LCG used before.
(broken as it had only a period ~200M due to being put in a double)

This changes the output from random() which is why libswresample.mak
is updated, update was done using the command in libswresample.mak

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2024-01-16 01:34:57 +01:00

308 lines
5.9 KiB
Plaintext

Evaluating ''
'' -> nan
av_expr_parse_and_eval failed
Evaluating '1;2'
'1;2' -> 2.000000
Evaluating '-20'
'-20' -> -20.000000
Evaluating '-PI'
'-PI' -> -3.141593
Evaluating '+PI'
'+PI' -> 3.141593
Evaluating '1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)'
'1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)' -> 12.700000
Evaluating '80G/80Gi'
'80G/80Gi' -> 0.931323
Evaluating '1k'
'1k' -> 1000.000000
Evaluating '1Gi'
'1Gi' -> 1073741824.000000
Evaluating '1gi'
'1gi' -> nan
av_expr_parse_and_eval failed
Evaluating '1GiFoo'
'1GiFoo' -> nan
av_expr_parse_and_eval failed
Evaluating '1k+1k'
'1k+1k' -> 2000.000000
Evaluating '1Gi*3foo'
'1Gi*3foo' -> nan
av_expr_parse_and_eval failed
Evaluating 'foo'
'foo' -> nan
av_expr_parse_and_eval failed
Evaluating 'foo('
'foo(' -> nan
av_expr_parse_and_eval failed
Evaluating 'foo()'
'foo()' -> nan
av_expr_parse_and_eval failed
Evaluating 'foo)'
'foo)' -> nan
av_expr_parse_and_eval failed
Evaluating 'sin'
'sin' -> nan
av_expr_parse_and_eval failed
Evaluating 'sin('
'sin(' -> nan
av_expr_parse_and_eval failed
Evaluating 'sin()'
'sin()' -> nan
av_expr_parse_and_eval failed
Evaluating 'sin)'
'sin)' -> nan
av_expr_parse_and_eval failed
Evaluating 'sin 10'
'sin 10' -> nan
av_expr_parse_and_eval failed
Evaluating 'sin(1,2,3)'
'sin(1,2,3)' -> nan
av_expr_parse_and_eval failed
Evaluating 'sin(1 )'
'sin(1 )' -> 0.841471
Evaluating '1'
'1' -> 1.000000
Evaluating '1foo'
'1foo' -> nan
av_expr_parse_and_eval failed
Evaluating 'bar + PI + E + 100f*2 + foo'
'bar + PI + E + 100f*2 + foo' -> nan
av_expr_parse_and_eval failed
Evaluating '13k + 12f - foo(1, 2)'
'13k + 12f - foo(1, 2)' -> nan
av_expr_parse_and_eval failed
Evaluating '1gi'
'1gi' -> nan
av_expr_parse_and_eval failed
Evaluating '1Gi'
'1Gi' -> 1073741824.000000
Evaluating 'st(0, 123)'
'st(0, 123)' -> 123.000000
Evaluating 'st(1, 123); ld(1)'
'st(1, 123); ld(1)' -> 123.000000
Evaluating 'lte(0, 1)'
'lte(0, 1)' -> 1.000000
Evaluating 'lte(1, 1)'
'lte(1, 1)' -> 1.000000
Evaluating 'lte(1, 0)'
'lte(1, 0)' -> 0.000000
Evaluating 'lt(0, 1)'
'lt(0, 1)' -> 1.000000
Evaluating 'lt(1, 1)'
'lt(1, 1)' -> 0.000000
Evaluating 'gt(1, 0)'
'gt(1, 0)' -> 1.000000
Evaluating 'gt(2, 7)'
'gt(2, 7)' -> 0.000000
Evaluating 'gte(122, 122)'
'gte(122, 122)' -> 1.000000
Evaluating 'st(0, 1); while(lte(ld(0), 100), st(1, ld(1)+ld(0));st(0, ld(0)+1)); ld(1)'
'st(0, 1); while(lte(ld(0), 100), st(1, ld(1)+ld(0));st(0, ld(0)+1)); ld(1)' -> 5050.000000
Evaluating 'st(1, 1); st(2, 2); st(0, 1); while(lte(ld(0),10), st(3, ld(1)+ld(2)); st(1, ld(2)); st(2, ld(3)); st(0, ld(0)+1)); ld(3)'
'st(1, 1); st(2, 2); st(0, 1); while(lte(ld(0),10), st(3, ld(1)+ld(2)); st(1, ld(2)); st(2, ld(3)); st(0, ld(0)+1)); ld(3)' -> 233.000000
Evaluating 'while(0, 10)'
'while(0, 10)' -> nan
av_expr_parse_and_eval failed
Evaluating 'st(0, 1); while(lte(ld(0),100), st(1, ld(1)+ld(0)); st(0, ld(0)+1))'
'st(0, 1); while(lte(ld(0),100), st(1, ld(1)+ld(0)); st(0, ld(0)+1))' -> 101.000000
Evaluating 'isnan(1)'
'isnan(1)' -> 0.000000
Evaluating 'isnan(NAN)'
'isnan(NAN)' -> 1.000000
Evaluating 'isnan(INF)'
'isnan(INF)' -> 0.000000
Evaluating 'isinf(1)'
'isinf(1)' -> 0.000000
Evaluating 'isinf(NAN)'
'isinf(NAN)' -> 0.000000
Evaluating 'isinf(INF)'
'isinf(INF)' -> 1.000000
Evaluating 'floor(NAN)'
'floor(NAN)' -> nan
av_expr_parse_and_eval failed
Evaluating 'floor(123.123)'
'floor(123.123)' -> 123.000000
Evaluating 'floor(-123.123)'
'floor(-123.123)' -> -124.000000
Evaluating 'trunc(123.123)'
'trunc(123.123)' -> 123.000000
Evaluating 'trunc(-123.123)'
'trunc(-123.123)' -> -123.000000
Evaluating 'ceil(123.123)'
'ceil(123.123)' -> 124.000000
Evaluating 'ceil(-123.123)'
'ceil(-123.123)' -> -123.000000
Evaluating 'sqrt(1764)'
'sqrt(1764)' -> 42.000000
Evaluating 'isnan(sqrt(-1))'
'isnan(sqrt(-1))' -> 1.000000
Evaluating 'not(1)'
'not(1)' -> 0.000000
Evaluating 'not(NAN)'
'not(NAN)' -> 0.000000
Evaluating 'not(0)'
'not(0)' -> 1.000000
Evaluating '6.0206dB'
'6.0206dB' -> 2.000000
Evaluating '-3.0103dB'
'-3.0103dB' -> 0.707107
Evaluating 'pow(0,1.23)'
'pow(0,1.23)' -> 0.000000
Evaluating 'pow(PI,1.23)'
'pow(PI,1.23)' -> 4.087844
Evaluating 'PI^1.23'
'PI^1.23' -> 4.087844
Evaluating 'pow(-1,1.23)'
'pow(-1,1.23)' -> nan
av_expr_parse_and_eval failed
Evaluating 'if(1, 2)'
'if(1, 2)' -> 2.000000
Evaluating 'if(1, 1, 2)'
'if(1, 1, 2)' -> 1.000000
Evaluating 'if(0, 1, 2)'
'if(0, 1, 2)' -> 2.000000
Evaluating 'ifnot(0, 23)'
'ifnot(0, 23)' -> 23.000000
Evaluating 'ifnot(1, NaN) + if(0, 1)'
'ifnot(1, NaN) + if(0, 1)' -> 0.000000
Evaluating 'ifnot(1, 1, 2)'
'ifnot(1, 1, 2)' -> 2.000000
Evaluating 'ifnot(0, 1, 2)'
'ifnot(0, 1, 2)' -> 1.000000
Evaluating 'taylor(1, 1)'
'taylor(1, 1)' -> 2.718282
Evaluating 'taylor(eq(mod(ld(1),4),1)-eq(mod(ld(1),4),3), PI/2, 1)'
'taylor(eq(mod(ld(1),4),1)-eq(mod(ld(1),4),3), PI/2, 1)' -> 1.000000
Evaluating 'root(sin(ld(0))-1, 2)'
'root(sin(ld(0))-1, 2)' -> 1.570796
Evaluating 'root(sin(ld(0))+6+sin(ld(0)/12)-log(ld(0)), 100)'
'root(sin(ld(0))+6+sin(ld(0)/12)-log(ld(0)), 100)' -> 60.965601
Evaluating '7000000B*random(0)'
'7000000B*random(0)' -> 12864914.486611
Evaluating 'squish(2)'
'squish(2)' -> 0.000335
Evaluating 'gauss(0.1)'
'gauss(0.1)' -> 0.396953
Evaluating 'hypot(4,3)'
'hypot(4,3)' -> 5.000000
Evaluating 'gcd(30,55)*print(min(9,1))'
'gcd(30,55)*print(min(9,1))' -> 5.000000
Evaluating 'bitor(42, 12)'
'bitor(42, 12)' -> 46.000000
Evaluating 'bitand(42, 12)'
'bitand(42, 12)' -> 8.000000
Evaluating 'bitand(NAN, 1)'
'bitand(NAN, 1)' -> nan
av_expr_parse_and_eval failed
Evaluating 'between(10, -3, 10)'
'between(10, -3, 10)' -> 1.000000
Evaluating 'between(-4, -2, -1)'
'between(-4, -2, -1)' -> 0.000000
Evaluating 'between(1,2)'
'between(1,2)' -> nan
av_expr_parse_and_eval failed
Evaluating 'clip(0, 2, 1)'
'clip(0, 2, 1)' -> nan
av_expr_parse_and_eval failed
Evaluating 'clip(0/0, 1, 2)'
'clip(0/0, 1, 2)' -> nan
av_expr_parse_and_eval failed
Evaluating 'clip(0, 0/0, 1)'
'clip(0, 0/0, 1)' -> nan
av_expr_parse_and_eval failed
12.700000 == 12.7
0.931323 == 0.931322575