diff options
author | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2023-10-11 15:56:20 -0600 |
---|---|---|
committer | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2023-10-11 15:56:20 -0600 |
commit | 78bd8c4a95049fcd738156a6244635c822044915 (patch) | |
tree | 0516edf836c330d9a73fc5891baa1aebdcb52967 /src/vector.c | |
parent | faaef032d866f956665653e58086af9872c3c093 (diff) | |
download | cmath-78bd8c4a95049fcd738156a6244635c822044915.tar.gz cmath-78bd8c4a95049fcd738156a6244635c822044915.zip |
lu factorization
Diffstat (limited to 'src/vector.c')
-rw-r--r-- | src/vector.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/vector.c b/src/vector.c index 61692e1..e6e2544 100644 --- a/src/vector.c +++ b/src/vector.c @@ -41,12 +41,19 @@ double sum_v(Array_double *v) { return sum; } +Array_double *scale_v(Array_double *v, double m) { + Array_double *copy = copy_vector(v); + for (size_t i = 0; i < v->size; i++) + copy->data[i] *= m; + return copy; +} + Array_double *add_v(Array_double *v1, Array_double *v2) { assert(v1->size == v2->size); - Array_double *sum = InitArrayWithSize(double, v1->size, 0); + Array_double *sum = copy_vector(v1); for (size_t i = 0; i < v1->size; i++) - sum->data[i] = v1->data[i] + v2->data[i]; + sum->data[i] += v2->data[i]; return sum; } @@ -80,6 +87,18 @@ double linf_distance(Array_double *v1, Array_double *v2) { return dist; } +Array_double *copy_vector(Array_double *v) { + Array_double *copy = InitArrayWithSize(double, v->size, 0.0); + for (size_t i = 0; i < copy->size; ++i) + copy->data[i] = v->data[i]; + return copy; +} + +void free_vector(Array_double *v) { + free(v->data); + free(v); +} + void format_vector_into(Array_double *v, char *s) { sprintf(s, ""); if (v->size == 0) |