Andrew Poelstra: > On Thu, Aug 11, 2011 at 09:30:34PM +0200, Karl Hammar wrote: ... > > -#define LARGE_VALUE (LONG_MAX / 2 - 1) /* maximum extent of > > board and elements */ > > +#define LARGE_VALUE LONG_MAX /* (LONG_MAX / 2 - 1) maximum > > extent of board and elements */ ... > > Why do you want to use only half the range? > > So that the width of a "max width" box can be calculated as > LARGE_VALUE - (-LARGE_VALUE) without overflow,
Hmm, wouldn't it be better to use unsigned here? For typedef unsigned long Coord; Coord width( Coord a, Coord b ) { if (a > b) { return a - b; } else { return b - a; } } do work without overflow for all possible walues of a and b. And we don't really need a signed type, do we? > and so that two maximum widths can be averaged as (x + x) / 2. Isn't that most easily fixed by using a wider type during addition? Coord mean( a, b) { bigger_int c = ((bigger_int) a + (bigger_int) b); return (Coord) c; } Also, most (all?) arch. have a carry bit, which means you could possible have a n+1 wide type during adding and div by 2. Maybe that would involve to much hackery. Well, not any great consern, just thinking aloud. Regards, /Karl Hammar ----------------------------------------------------------------------- Aspö Data Lilla Aspö 148 S-742 94 Östhammar Sweden +46 173 140 57 _______________________________________________ geda-user mailing list geda-user@moria.seul.org http://www.seul.org/cgi-bin/mailman/listinfo/geda-user