6 vector *vector_alloc(pbqp *pbqp, unsigned length)
11 vector *vec = obstack_alloc(&pbqp->obstack, sizeof(*vec) + sizeof(*vec->entries) * length);
15 for (index = 0; index < length; ++index) {
16 vec->entries[index].data = 0;
18 vec->entries[index].name = NULL;
25 vector *vector_copy(pbqp *pbqp, vector *v)
28 vector *copy = obstack_alloc(&pbqp->obstack, sizeof(*copy) + sizeof(*copy->entries) * length);
32 unsigned len = v->len;
35 for (i = 0; i < len; ++i) {
36 copy->entries[i] = v->entries[i];
42 void vector_add(vector *sum, vector *summand)
49 assert(sum->len == summand->len);
53 for (i = 0; i < len; ++i) {
54 sum->entries[i].data += summand->entries[i].data;
58 void vector_set(vector *vec, unsigned index, num value)
60 assert(index < vec->len);
61 vec->entries[index].data = value;
65 void vector_set_description(vector *vec, unsigned index, char *name)
67 assert(index < vec->len);
68 vec->entries[index].name = name;