From cd7037dd7ac14823619cf1649922b0ef31310291 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Fri, 3 Jan 2014 17:35:09 +0100 Subject: [PATCH] avutil/rational: av_add_stable() test code Signed-off-by: Michael Niedermayer --- libavutil/rational.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/libavutil/rational.c b/libavutil/rational.c index ec2f2e5386..55a8dd5897 100644 --- a/libavutil/rational.c +++ b/libavutil/rational.c @@ -171,6 +171,36 @@ int main(void) } } } + + for (a.num = 1; a.num <= 10; a.num++) { + for (a.den = 1; a.den <= 10; a.den++) { + if (av_gcd(a.num, a.den) > 1) + continue; + for (b.num = 1; b.num <= 10; b.num++) { + for (b.den = 1; b.den <= 10; b.den++) { + int start; + if (av_gcd(b.num, b.den) > 1) + continue; + if (av_cmp_q(b, a) < 0) + continue; + for (start = 0; start < 10 ; start++) { + int acc= start; + int i; + + for (i = 0; i<100; i++) { + int exact = start + av_rescale_q(i+1, b, a); + acc = av_add_stable(a, acc, b, 1); + if (FFABS(acc - exact) > 2) { + av_log(NULL, AV_LOG_ERROR, "%d/%d %d/%d, %d %d\n", a.num, + a.den, b.num, b.den, acc, exact); + return 1; + } + } + } + } + } + } + } return 0; } #endif