From ad53ccf4c86b856ba94d454b6fefeb79a9d6de18 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Sat, 12 Mar 2016 16:11:23 +0100 Subject: [PATCH] add isl_mat_row_gcd This function will be needed in the next commit. Signed-off-by: Sven Verdoolaege --- isl_mat.c | 16 ++++++++++++++++ isl_mat_private.h | 2 ++ 2 files changed, 18 insertions(+) diff --git a/isl_mat.c b/isl_mat.c index f3e36ed0..b0af75e2 100644 --- a/isl_mat.c +++ b/isl_mat.c @@ -1692,6 +1692,22 @@ error: return NULL; } +/* Return the gcd of the elements in row "row" of "mat" in *gcd. + * Return isl_stat_ok on success and isl_stat_error on failure. + */ +isl_stat isl_mat_row_gcd(__isl_keep isl_mat *mat, int row, isl_int *gcd) +{ + if (!mat) + return isl_stat_error; + + if (row < 0 || row >= mat->n_row) + isl_die(isl_mat_get_ctx(mat), isl_error_invalid, + "row out of range", return isl_stat_error); + isl_seq_gcd(mat->row[row], mat->n_col, gcd); + + return isl_stat_ok; +} + void isl_mat_gcd(__isl_keep isl_mat *mat, isl_int *gcd) { int i; diff --git a/isl_mat_private.h b/isl_mat_private.h index 1bf65d61..fd808ed0 100644 --- a/isl_mat_private.h +++ b/isl_mat_private.h @@ -39,6 +39,8 @@ __isl_give isl_vec *isl_mat_get_row(__isl_keep isl_mat *mat, unsigned row); int isl_mat_is_scaled_identity(__isl_keep isl_mat *mat); +isl_stat isl_mat_row_gcd(__isl_keep isl_mat *mat, int row, isl_int *gcd); + void isl_mat_col_mul(struct isl_mat *mat, int dst_col, isl_int f, int src_col); void isl_mat_col_submul(struct isl_mat *mat, int dst_col, isl_int f, int src_col); -- 2.11.4.GIT