[PCB_FORUM] Re: Metric to English - English to Metric

  • From: Dave Elder <dave.elder@xxxxxxxxxx>
  • To: icu-pcb-forum@xxxxxxxxxxxxx
  • Date: Thu, 25 Aug 2005 08:48:01 +1200

Cadence floating point maths has severe limitations that other CAD tools do not.
Try typing
4.1 * 100 == 410
in a Skill window.


Here is the Cadence explanation:
"The real issue is that some numbers can't be represented exactly in the standard floating point representation. As IEEE floating point numbers represent real numbers by what are essentially binary fractions, what you might normally expect is not what you necessarily get. For example: the fraction 1/3 cannot be exactly represented in base ten fractions, but it can be in base 2. Conversely, 1/10 (0.1) cannot be exactly represented in base 2, although it can be in base 10. And that's what's happening here. 4.1 is not exact in IEEE floating point. It's a very well known phenomena, usually turns up in Computer Science 101, and is present in all computer languages. See _http://www.lahey.com/float.htm_ for a nice write up in Fortran. So what can you do? One technique feels that works (but feels wrong) is to add a 'precision' factor to the result of the multiplication. You do have to have a feel for what is reasonable for your calculation though. A smarter way is to know the strengths of the format. IEEE precision is greatest for numbers (excluding exponent) between 0 and 1.0. In this case if you adjust things to take account of that, you will find that fix(0.41 * 1000) is 410.0"


Cheers, Dave

Andrew Noonan (annoonan) wrote:

There are board packages that allow seamless interchange between metric and inch/mil database, on the fly and no rounding errors (PowerPCB). So, it's not impossible, just unfortunate that it works this way within Allegro (imho).
Andrew -----Original Message-----
*From: * icu-pcb-forum-bounce@xxxxxxxxxxxxx [_mailto:icu-pcb-forum-bounce@xxxxxxxxxxxxxx] * On Behalf Of* Don Folk
*Sent: * Wednesday, August 24, 2005 11:45
*To: * icu-pcb-forum@xxxxxxxxxxxxx
*Subject: * [PCB_FORUM] Metric to English - English to Metric




                I have a customer that does business in Japan and the
                US.  He would like to be able
                to go back and forth between English and Metric in
                Allegro 15.2 to supply Metric files
                to Japan and English files to the US.  I always seem
                to have round off errors, which
                can create DRC's, disconnects and pad stack
                corruption.  It seems like you can
                minimize the problems, but you can not go cleanly back
                and forth with out having to
                fix something.  If you keep going back and forth
                between English and Metric will the
                board eventually be corrupt beyond repair.  Is this
                going to be fixed in Allegro 15.5?

                Thanks in advance,
                */[Don Folk]/*  Don Folk

begin:vcard
fn:Dave Elder
n:Elder;Dave
org:Tait Electronics
adr:;;PO Box 1645;Christchurch;;;New Zealand
email;internet:dave.elder@xxxxxxxxxx
title:PCB Design Manager
tel;work:+64 3 3580327
tel;cell:+64 21 37 37 25
url:http://www.taitworld.com
version:2.1
end:vcard

Other related posts: