#include #include #include #include "vector.h" struct Vector VectorConstruct(size_t dim) { struct Vector vec = { malloc(dim * sizeof(vec.data)), dim, }; if (!vec.data) { fprintf(stderr, "VectorConstruct(%zu): out of memory\n", dim); exit(1); } return vec; } void VectorDestruct(struct Vector *vec) { free(vec->data); # ifndef NDEBUG *(double *) &vec->data = 0; # endif } double * VectorElementPtr(struct Vector *vec, size_t index) { assert(index < vec->dim); return &vec->data[index]; } double VectorElement(const struct Vector *vec, size_t index) { assert(index < vec->dim); return vec->data[index]; }