#include #include /** * Initialize an N-dimensional Euclidean Vector. */ c_err_t c_Vector_Init(c_Vector_t* vec, c_size_t dimensions) { if (vec == NULL || dimensions == 0) return C_ERR_PARAM; vec->dimensions = dimensions; vec->components = (double*)C_ALLOC(dimensions * sizeof(double)); if (vec->components == NULL) return C_ERR_NOMEM; memset(vec->components, 0, dimensions * sizeof(double)); return C_ERR_OK; } /** * Clean up allocations within the vector wrapper safely. */ void c_Vector_Destroy(c_Vector_t* vec) { if (vec) { if (vec->components) { C_FREE(vec->components); vec->components = NULL; } vec->dimensions = 0; } }