{
if (x == INF_COSTS || y == INF_COSTS) return INF_COSTS;
- return x + y;
+ num res = x + y;
+
+ /* No positive overflow. */
+ assert(x < 0 || y < 0 || res >= x);
+ assert(x < 0 || y < 0 || res >= y);
+
+ /* No negative overflow. */
+ assert(x > 0 || y > 0 || res <= x);
+ assert(x > 0 || y > 0 || res <= y);
+
+ /* Result is not infinity.*/
+ assert(res < INF_COSTS);
+
+ return res;
}
vector *vector_alloc(pbqp *pbqp, unsigned length)