From c850aa0c5b5e856618f11021a3e2a338c625de67 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 10 Jan 2009 02:53:57 +0100 Subject: Add new pa_reduce() and pa_gcd() functions --- src/pulsecore/core-util.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/pulsecore/core-util.c') diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c index dde34d7b..6f315666 100644 --- a/src/pulsecore/core-util.c +++ b/src/pulsecore/core-util.c @@ -2487,3 +2487,27 @@ pa_bool_t pa_in_valgrind(void) { return b > 1; } #endif + +unsigned pa_gcd(unsigned a, unsigned b) { + + while (b > 0) { + unsigned t = b; + b = a % b; + a = t; + } + + return a; +} + +void pa_reduce(unsigned *num, unsigned *den) { + + unsigned gcd = pa_gcd(*num, *den); + + if (gcd <= 0) + return; + + *num /= gcd; + *den /= gcd; + + pa_assert(pa_gcd(*num, *den) == 1); +} -- cgit