add isl_seq_normalize
authorSven Verdoolaege <skimo@kotnet.org>
Thu, 26 Feb 2009 11:35:55 +0000 (12:35 +0100)
committerSven Verdoolaege <skimo@kotnet.org>
Sun, 8 Mar 2009 18:27:06 +0000 (19:27 +0100)
include/isl_seq.h
isl_seq.c

index acfc192..459bc4b 100644 (file)
@@ -19,6 +19,7 @@ void isl_seq_elim(isl_int *dst, isl_int *src, unsigned pos, unsigned len,
                  isl_int *m);
 void isl_seq_gcd(isl_int *p, unsigned len, isl_int *gcd);
 void isl_seq_lcm(isl_int *p, unsigned len, isl_int *lcm);
+void isl_seq_normalize(isl_int *p, unsigned len);
 void isl_seq_inner_product(isl_int *p1, isl_int *p2, unsigned len,
                           isl_int *prod);
 int isl_seq_first_non_zero(isl_int *p, unsigned len);
index 62d8da5..a67c0e9 100644 (file)
--- a/isl_seq.c
+++ b/isl_seq.c
@@ -171,6 +171,19 @@ void isl_seq_gcd(isl_int *p, unsigned len, isl_int *gcd)
        }
 }
 
+void isl_seq_normalize(isl_int *p, unsigned len)
+{
+       isl_int gcd;
+
+       if (len == 0)
+               return;
+       isl_int_init(gcd);
+       isl_seq_gcd(p, len, &gcd);
+       if (!isl_int_is_zero(gcd))
+               isl_seq_scale_down(p, p, gcd, len);
+       isl_int_clear(gcd);
+}
+
 void isl_seq_lcm(isl_int *p, unsigned len, isl_int *lcm)
 {
        int i;