From fda08da389f354d303fbaf2ad8ebdc9f7fdde972 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Fri, 25 Jun 2010 14:37:09 +0200 Subject: [PATCH] add isl_vec_add --- include/isl_vec.h | 2 ++ isl_vec.c | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/include/isl_vec.h b/include/isl_vec.h index 746b70f1..dd15510f 100644 --- a/include/isl_vec.h +++ b/include/isl_vec.h @@ -43,6 +43,8 @@ void isl_vec_lcm(struct isl_vec *vec, isl_int *lcm); struct isl_vec *isl_vec_ceil(struct isl_vec *vec); struct isl_vec *isl_vec_normalize(struct isl_vec *vec); __isl_give isl_vec *isl_vec_scale(__isl_take isl_vec *vec, isl_int m); +__isl_give isl_vec *isl_vec_add(__isl_take isl_vec *vec1, + __isl_take isl_vec *vec2); struct isl_vec *isl_vec_read_from_file(struct isl_ctx *ctx, FILE *input, unsigned input_format); diff --git a/isl_vec.c b/isl_vec.c index c16d71a5..d3c11261 100644 --- a/isl_vec.c +++ b/isl_vec.c @@ -138,3 +138,23 @@ __isl_give isl_vec *isl_vec_scale(__isl_take isl_vec *vec, isl_int m) isl_seq_scale(vec->el, vec->el, m, vec->size); return vec; } + +__isl_give isl_vec *isl_vec_add(__isl_take isl_vec *vec1, + __isl_take isl_vec *vec2) +{ + vec1 = isl_vec_cow(vec1); + if (!vec1 || !vec2) + goto error; + + isl_assert(vec1->ctx, vec1->size == vec2->size, goto error); + + isl_seq_combine(vec1->el, vec1->ctx->one, vec1->el, + vec1->ctx->one, vec2->el, vec1->size); + + isl_vec_free(vec2); + return vec1; +error: + isl_vec_free(vec1); + isl_vec_free(vec2); + return NULL; +} -- 2.11.4.GIT