From 42a2c2b0de3e904ca7e68f7d40040a8602dfa958 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Thu, 23 Jul 2009 11:46:25 +0200 Subject: [PATCH] add isl_seq_last_non_zero --- include/isl_seq.h | 1 + isl_seq.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/include/isl_seq.h b/include/isl_seq.h index 1d71b7b..d4ca039 100644 --- a/include/isl_seq.h +++ b/include/isl_seq.h @@ -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); diff --git a/isl_seq.c b/isl_seq.c index 532b8e6..73af52d 100644 --- 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); -- 2.7.4