add isl_aff_plain_is_equal
authorSven Verdoolaege <skimo@kotnet.org>
Fri, 24 Jun 2011 11:14:52 +0000 (13:14 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Sat, 25 Jun 2011 20:22:20 +0000 (22:22 +0200)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
doc/user.pod
include/isl/aff.h
isl_aff.c

index e1c7270..8060791 100644 (file)
@@ -2236,10 +2236,13 @@ set the I<numerator> of the constant or coefficient, while
 C<add_constant> and C<add_coefficient> add an integer value to
 the possibly rational constant or coefficient.
 
-To check whether an affine expressions is obviously zero, use
+To check whether an affine expressions is obviously zero
+or obviously equal to some other affine expression, use
 
        #include <isl/aff.h>
        int isl_aff_plain_is_zero(__isl_keep isl_aff *aff);
+       int isl_aff_plain_is_equal(__isl_keep isl_aff *aff1,
+               __isl_keep isl_aff *aff2);
 
 Operations include
 
index da23d44..64d16d8 100644 (file)
@@ -42,6 +42,7 @@ __isl_give isl_aff *isl_aff_add_constant_si(__isl_take isl_aff *aff, int v);
 __isl_give isl_aff *isl_aff_add_coefficient_si(__isl_take isl_aff *aff,
        enum isl_dim_type type, int pos, int v);
 
+int isl_aff_plain_is_equal(__isl_keep isl_aff *aff1, __isl_keep isl_aff *aff2);
 int isl_aff_plain_is_zero(__isl_keep isl_aff *aff);
 
 __isl_give isl_div *isl_aff_get_div(__isl_keep isl_aff *aff, int pos);
index 1faa493..d0fe73a 100644 (file)
--- a/isl_aff.c
+++ b/isl_aff.c
@@ -151,6 +151,20 @@ int isl_aff_plain_is_zero(__isl_keep isl_aff *aff)
        return isl_seq_first_non_zero(aff->v->el + 1, aff->v->size - 1) < 0;
 }
 
+int isl_aff_plain_is_equal(__isl_keep isl_aff *aff1, __isl_keep isl_aff *aff2)
+{
+       int equal;
+
+       if (!aff1 || !aff2)
+               return -1;
+
+       equal = isl_local_space_is_equal(aff1->ls, aff2->ls);
+       if (equal < 0 || !equal)
+               return equal;
+
+       return isl_vec_is_equal(aff1->v, aff2->v);
+}
+
 int isl_aff_get_denominator(__isl_keep isl_aff *aff, isl_int *v)
 {
        if (!aff)