From 64736c6f748bace12e7f6f152eb7b1fa09b83703 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Sun, 29 Jan 2012 14:42:01 +0100 Subject: [PATCH] add isl_mat_scale_down_row Signed-off-by: Sven Verdoolaege --- include/isl/mat.h | 3 +++ isl_mat.c | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/include/isl/mat.h b/include/isl/mat.h index e888888..d4a4ba8 100644 --- a/include/isl/mat.h +++ b/include/isl/mat.h @@ -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); diff --git a/isl_mat.c b/isl_mat.c index 9724900..a4b6e5a 100644 --- 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; -- 2.7.4