summaryrefslogtreecommitdiff
path: root/src/vector.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vector.c')
-rw-r--r--src/vector.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/vector.c b/src/vector.c
index 3e4f62d..1b3e0b0 100644
--- a/src/vector.c
+++ b/src/vector.c
@@ -88,6 +88,21 @@ Array_double *copy_vector(Array_double *v) {
return copy;
}
+Array_double *add_element(Array_double *v, double x) {
+ Array_double *pushed = InitArrayWithSize(double, v->size + 1, 0.0);
+ for (size_t i = 0; i < v->size; ++i)
+ pushed->data[i] = v->data[i];
+ pushed->data[v->size] = x;
+ return pushed;
+}
+
+Array_double *slice_element(Array_double *v, size_t x) {
+ Array_double *sliced = InitArrayWithSize(double, v->size - 1, 0.0);
+ for (size_t i = 0; i < v->size - 1; ++i)
+ sliced->data[i] = i >= x ? v->data[i + 1] : v->data[i];
+ return sliced;
+}
+
void free_vector(Array_double *v) {
free(v->data);
free(v);