gstutils: add a 64 bit version of GCD calculation

https://bugzilla.gnome.org/show_bug.cgi?id=665294
This commit is contained in:
Vincent Penquerc'h 2011-11-30 17:58:07 +00:00
parent b6abb9794c
commit 7319b52a2e
2 changed files with 27 additions and 0 deletions

View file

@ -3521,6 +3521,32 @@ gst_util_greatest_common_divisor (gint a, gint b)
return ABS (a);
}
/**
* gst_util_greatest_common_divisor_int64:
* @a: First value as #gint64
* @b: Second value as #gint64
*
* Calculates the greatest common divisor of @a
* and @b.
*
* Returns: Greatest common divisor of @a and @b
*
* Since: 0.11.0
*/
gint64
gst_util_greatest_common_divisor_int64 (gint64 a, gint64 b)
{
while (b != 0) {
gint64 temp = a;
a = b;
b = temp % b;
}
return ABS (a);
}
/**
* gst_util_fraction_to_double:
* @src_n: Fraction numerator as #gint

View file

@ -957,6 +957,7 @@ gpointer gst_util_array_binary_search (gpointer array, guint num_eleme
/* fraction operations */
gint gst_util_greatest_common_divisor (gint a, gint b);
gint64 gst_util_greatest_common_divisor_int64 (gint64 a, gint64 b);
void gst_util_fraction_to_double (gint src_n, gint src_d, gdouble *dest);
void gst_util_double_to_fraction (gdouble src, gint *dest_n, gint *dest_d);