add isl_seq_last_non_zero
authorSven Verdoolaege <skimo@kotnet.org>
Thu, 23 Jul 2009 09:46:25 +0000 (11:46 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Tue, 4 Aug 2009 17:24:03 +0000 (19:24 +0200)
include/isl_seq.h
isl_seq.c

index 1d71b7b..d4ca039 100644 (file)
@@ -26,6 +26,7 @@ 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);
+int isl_seq_last_non_zero(isl_int *p, unsigned len);
 int isl_seq_abs_min_non_zero(isl_int *p, unsigned len);
 int isl_seq_eq(isl_int *p1, isl_int *p2, unsigned len);
 int isl_seq_is_neg(isl_int *p1, isl_int *p2, unsigned len);
index 532b8e6..73af52d 100644 (file)
--- a/isl_seq.c
+++ b/isl_seq.c
@@ -160,6 +160,16 @@ int isl_seq_first_non_zero(isl_int *p, unsigned len)
        return -1;
 }
 
+int isl_seq_last_non_zero(isl_int *p, unsigned len)
+{
+       int i;
+
+       for (i = len - 1; i >= 0; --i)
+               if (!isl_int_is_zero(p[i]))
+                       return i;
+       return -1;
+}
+
 int isl_seq_abs_min_non_zero(isl_int *p, unsigned len)
 {
        int i, min = isl_seq_first_non_zero(p, len);