Andrew: > On Sat, Oct 09, 2010 at 12:22:52PM +0200, Karl Hammar wrote: > > You cannot dissmiss floating point on the ground of rounding error > > when in fact the rounding error of integers (aliasing, truncation) > > are in fact greater. > > > > You cannot dissmiss floating point on the ground of a "non exact" > > equality operator, boot integers and floats, when 1 == 1nm, suffers > > from beeing too fine grained. You will not see any difference for > > +/- 100 basic units when looking at the board, even with a microscope. > > My concern is not with "ordinary" numbers and their rounding error, > but with extremely large ones. > > Once you get past the 52 digits in an IEEE-754 double (about 4500km in > nanometers, so maybe I am being silly), you lose precision. You will > no longer be able to place things with nanometer precision, which means > that your 254-nm mils will no longer be accurate.
Ok, if you really want that great precision, you could either use a "long double" or some for of arbitrary-precision arithmetic, see http://en.wikipedia.org/wiki/Bigint or e.g http://gmplib.org/. But I would consider that clearly out of scope for pcb. > Then, you've got rounding error and you're in the same place we are > now. Regarding the rounding error claim. The error is there and it is easy to prove it. But I think you should not overestimate it. Take a look at: $ cat testc.c #include <stdio.h> int main(int argc, char *argv[]) { double ui = 1e6 * 25.4; // um per inch int ix; double inch = 0; int um = 0; int umpitch = argc > 1 ? atoi(argv[1]) : 800; // pitch in um double inpitch = umpitch/ui; // dito but in inches for (ix = 0; ix < 1000; ix++) { inch += inpitch; um += umpitch; } printf("%g %g %i\n", inch, inch*ui, um); printf("%g\n", inch*ui - um); return 0; } $ ./testc 0.0314961 800000 800000 -2.04558e-08 $ ./testc 300000 11.811 3e+08 300000000 6.77645e-06 $ ./testc 300 0.011811 300000 300000 3.38861e-09 $ This test shows that if we have inches as our basic unit, and using a hypotetical 1000pin connector, the error we get is clearly below the um range for 0.8mm, 0.3m, and 0.3mm pitch. I consider thoose errors insignificant. Regards, /Karl Hammar --------- Aspö Data Lilla Aspö 148 S-742 94 Östhammar Sweden +46 173 140 57 _______________________________________________ geda-user mailing list [email protected] http://www.seul.org/cgi-bin/mailman/listinfo/geda-user

