add isl_mat_scale_down_row
authorSven Verdoolaege <skimo@kotnet.org>
Sun, 29 Jan 2012 13:42:01 +0000 (14:42 +0100)
committerSven Verdoolaege <skimo@kotnet.org>
Mon, 30 Jan 2012 15:00:25 +0000 (16:00 +0100)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
include/isl/mat.h
isl_mat.c

index e888888..d4a4ba8 100644 (file)
@@ -65,6 +65,9 @@ struct isl_mat *isl_mat_transpose(struct isl_mat *mat);
 __isl_give isl_mat *isl_mat_right_inverse(__isl_take isl_mat *mat);
 __isl_give isl_mat *isl_mat_right_kernel(__isl_take isl_mat *mat);
 
+__isl_give isl_mat *isl_mat_scale_down_row(__isl_take isl_mat *mat, int row,
+       isl_int m);
+
 __isl_give isl_mat *isl_mat_normalize(__isl_take isl_mat *mat);
 __isl_give isl_mat *isl_mat_normalize_row(__isl_take isl_mat *mat, int row);
 
index 9724900..a4b6e5a 100644 (file)
--- a/isl_mat.c
+++ b/isl_mat.c
@@ -1589,6 +1589,21 @@ __isl_give isl_mat *isl_mat_scale_down(__isl_take isl_mat *mat, isl_int m)
        return mat;
 }
 
+__isl_give isl_mat *isl_mat_scale_down_row(__isl_take isl_mat *mat, int row,
+       isl_int m)
+{
+       if (isl_int_is_one(m))
+               return mat;
+
+       mat = isl_mat_cow(mat);
+       if (!mat)
+               return NULL;
+
+       isl_seq_scale_down(mat->row[row], mat->row[row], m, mat->n_col);
+
+       return mat;
+}
+
 __isl_give isl_mat *isl_mat_normalize(__isl_take isl_mat *mat)
 {
        isl_int gcd;