add isl_mat_is_equal
authorSven Verdoolaege <skimo@kotnet.org>
Fri, 16 Oct 2009 12:24:49 +0000 (14:24 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Fri, 16 Oct 2009 12:24:49 +0000 (14:24 +0200)
include/isl_mat.h
isl_mat.c

index 0034a7c..0b5cfff 100644 (file)
@@ -82,6 +82,8 @@ struct isl_mat *isl_mat_unimodular_complete(struct isl_mat *M, int row);
 __isl_give isl_mat *isl_mat_concat(__isl_take isl_mat *top,
        __isl_take isl_mat *bot);
 
+int isl_mat_is_equal(__isl_keep isl_mat *mat1, __isl_keep isl_mat *mat2);
+
 void isl_mat_dump(struct isl_mat *mat, FILE *out, int indent);
 
 #if defined(__cplusplus)
index 2b8f540..660ed23 100644 (file)
--- a/isl_mat.c
+++ b/isl_mat.c
@@ -1136,3 +1136,23 @@ error:
        isl_mat_free(bot);
        return NULL;
 }
+
+int isl_mat_is_equal(__isl_keep isl_mat *mat1, __isl_keep isl_mat *mat2)
+{
+       int i;
+
+       if (!mat1 || !mat2)
+               return -1;
+
+       if (mat1->n_row != mat2->n_row)
+               return 0;
+
+       if (mat1->n_col != mat2->n_col)
+               return 0;
+
+       for (i = 0; i < mat1->n_row; ++i)
+               if (!isl_seq_eq(mat1->row[i], mat2->row[i], mat1->n_col))
+                       return 0;
+
+       return 1;
+}