generalize isl_basic_set_preimage_multi_aff to isl_basic_map_preimage_multi_aff
[platform/upstream/isl.git] / isl_vec.c
index b197b5e..ce17449 100644 (file)
--- a/isl_vec.c
+++ b/isl_vec.c
@@ -136,6 +136,8 @@ struct isl_vec *isl_vec_dup(struct isl_vec *vec)
        if (!vec)
                return NULL;
        vec2 = isl_vec_alloc(vec->ctx, vec->size);
+       if (!vec2)
+               return NULL;
        isl_seq_cpy(vec2->el, vec->el, vec->size);
        return vec2;
 }
@@ -341,6 +343,19 @@ __isl_give isl_vec *isl_vec_scale(__isl_take isl_vec *vec, isl_int m)
        return vec;
 }
 
+/* Reduce the elements of "vec" modulo "m".
+ */
+__isl_give isl_vec *isl_vec_fdiv_r(__isl_take isl_vec *vec, isl_int m)
+{
+       vec = isl_vec_cow(vec);
+       if (!vec)
+               return NULL;
+
+       isl_seq_fdiv_r(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)
 {