add isl_seq_abs_max
authorSven Verdoolaege <skimo@kotnet.org>
Wed, 11 Apr 2012 08:53:10 +0000 (10:53 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Fri, 13 Apr 2012 13:18:01 +0000 (15:18 +0200)
include/isl/seq.h
isl_seq.c

index eda8818..a84a3fa 100644 (file)
@@ -36,6 +36,7 @@ void isl_seq_combine(isl_int *dst, isl_int m1, isl_int *src1,
                        isl_int m2, isl_int *src2, unsigned len);
 void isl_seq_elim(isl_int *dst, isl_int *src, unsigned pos, unsigned len,
                  isl_int *m);
+void isl_seq_abs_max(isl_int *p, unsigned len, isl_int *max);
 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(struct isl_ctx *ctx, isl_int *p, unsigned len);
index dd80c19..8cf2996 100644 (file)
--- a/isl_seq.c
+++ b/isl_seq.c
@@ -194,6 +194,17 @@ int isl_seq_last_non_zero(isl_int *p, unsigned len)
        return -1;
 }
 
+void isl_seq_abs_max(isl_int *p, unsigned len, isl_int *max)
+{
+       int i;
+
+       isl_int_set_si(*max, 0);
+
+       for (i = 0; i < len; ++i)
+               if (isl_int_abs_gt(p[i], *max))
+                       isl_int_abs(*max, p[i]);
+}
+
 int isl_seq_abs_min_non_zero(isl_int *p, unsigned len)
 {
        int i, min = isl_seq_first_non_zero(p, len);