Add new pa_reduce() and pa_gcd() functions

This commit is contained in:
Lennart Poettering 2009-01-10 02:53:57 +01:00
parent 98049fbf81
commit c850aa0c5b
2 changed files with 27 additions and 0 deletions

View file

@ -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);
}

View file

@ -206,4 +206,7 @@ static inline pa_bool_t pa_in_valgrind(void) {
}
#endif
unsigned pa_gcd(unsigned a, unsigned b);
void pa_reduce(unsigned *num, unsigned *den);
#endif