On Mon, Jun 25, 2012 at 12:11:16PM +0200, jp.charras wrote: > It is. > However in debug mode, KiROUND print a warning if the rounding cannot be made.
Something escaped then, the doubt was because I've seen that construction in the legacy_plugin code... should have user KiROUND, right? *look at the code* ok, now it does XD > For this kind of issue, the fix is easy (however find the reason was tricky) > (It was just a read function where the call to the rounding conversion was > forgotten) Ok got it. The famous '0.1 is periodic in binary' so division by 10 is not exact. Also the format string... > And saving values using the internal values "as is" is a very bad idea. > Values in files *must* be independent of the internal representation, > that can be modified without breaking the file format Well, just use the external file in nm, then :P:P or also use a format/scan which doesn't suffer from this kind of issues (mainframes have *as opcodes* routines for bcd arithmetics... well, even the x87, even if I didn't see them uses). The new C specification also adds the 'decimal' types (like in SQL), so we should see a resurgence of these... > If possible, yes. > However, there is a lot of case where it is not possible, or even bad, > mainly in trigonometric calculations: > rotations, moving a line and keep slope, distance between items... There is a whole class of algorithms dedicated to these (two examples: the CORDIC and the Bresenham classes of routines); also most DSP are fixed point so there is a strong request for that (btw I have no idea of the difference in precision for a trig calculated using CORDIC or the 'conventional' Taylor expansion...) > Fortunately rounding errors are not always an issue, but sometimes they are. I don't know in other fields but in control and DSP we always need to check: 1) overflows 2) roundings and 3) stability. Hardware tends to explode otherwise, so is not only a good idea! Also financial uses almost exclusively fixed point bcd... Fortunately the limitation of both fixed and floating point are well studied, so there is a lot of literature to save our ass (i.e. numerical recipes in whatever language you're using at the moment) > And remember using ints *does not* avoid truncation errors in calculations. It gives remainders :D (which can be taken into account, usually) Just to give good news: the board is finished and passed the external DRC. I've reloaded it with a temporarily hacked version of the biuParse (which rounds everything to 1/20 of mm) so it's our first fully metric board. Let's see how much the fabricator will break it:P -- Lorenzo Marcantonio Logos Srl _______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : [email protected] Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp

