From 09f54c062bac3e81b2323da3a6b818221c031ee6 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Sun, 7 Mar 2010 18:56:19 +0100 Subject: [PATCH] add isl_mat_insert_cols --- include/isl_mat.h | 2 ++ isl_mat.c | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/include/isl_mat.h b/include/isl_mat.h index a6542fba..6d93450d 100644 --- a/include/isl_mat.h +++ b/include/isl_mat.h @@ -81,6 +81,8 @@ struct isl_mat *isl_mat_drop_cols(struct isl_mat *mat, unsigned col, unsigned n); struct isl_mat *isl_mat_drop_rows(struct isl_mat *mat, unsigned row, unsigned n); +__isl_give isl_mat *isl_mat_insert_cols(__isl_take isl_mat *mat, + unsigned col, unsigned n); 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, diff --git a/isl_mat.c b/isl_mat.c index b71aaf01..b713cda5 100644 --- a/isl_mat.c +++ b/isl_mat.c @@ -1067,6 +1067,31 @@ struct isl_mat *isl_mat_drop_rows(struct isl_mat *mat, unsigned row, unsigned n) return mat; } +__isl_give isl_mat *isl_mat_insert_cols(__isl_take isl_mat *mat, + unsigned col, unsigned n) +{ + isl_mat *ext; + + if (!mat) + return NULL; + if (n == 0) + return mat; + + ext = isl_mat_alloc(mat->ctx, mat->n_row, mat->n_col + n); + if (!ext) + goto error; + + isl_mat_sub_copy(mat->ctx, ext->row, mat->row, mat->n_row, 0, 0, col); + isl_mat_sub_copy(mat->ctx, ext->row, mat->row, mat->n_row, + col + n, col, mat->n_col - col); + + isl_mat_free(mat); + return ext; +error: + isl_mat_free(mat); + return NULL; +} + void isl_mat_col_submul(struct isl_mat *mat, int dst_col, isl_int f, int src_col) { -- 2.11.4.GIT