RE: Floating point related question

From: Peter Ashenden <peter_at_.....>
Date: Wed Dec 20 2006 - 19:03:46 PST
Arpad,

In the forthcoming revision of VHDL, we are adding an ENV package that
contains declarations that are environment dependent. For example, it
includes a function that returns the time resolution limit for simulation.
Such a package could contain a host-dependent declaration of an eps
function, along the lines of

  function eps ( x : real ) return real;

Cheers,

PA

--
Dr. Peter J. Ashenden         peter@ashenden.com.au
Ashenden Designs Pty. Ltd.    www.ashenden.com.au
PO Box 640                    VoIP: sip://0871270078@sip.internode.on.net
Stirling, SA 5152             Phone (mobile):  +61 414 70 9106
Australia


> -----Original Message-----
> From: owner-vhdl-ams@server.eda.org 
> [mailto:owner-vhdl-ams@server.eda.org] On Behalf Of Muranyi, Arpad
> Sent: Thursday, 21 December 2006 11:59 AM
> To: vhdl-ams@server.vhdl.org
> Subject: RE: Floating point related question
> 
> 
> Peter,
> 
> Thanks for your reply.  I agree fully, the magnitude of the 
> error will change depending on the equations, but that 
> shouldn't make the "eps" function less useful.  One just has 
> to propagate the error through the equations rigorously and 
> arrive to the maximum possible error that way.  Of course the 
> better way would be if the tools or compilers could take care 
> of this automatically...  Is that wishful thinking?  I should 
> have told Santa when he came... :-)
> 
> I would highly recommend to add an "eps" compatible function 
> to VHDL-AMS.  Would this have to be a language feature, or 
> can it be provided in a standard library of some sort?
> 
> Thanks,
> 
> Arpad 
> ===================================================================
> 
> -----Original Message-----
> From: Peter Ashenden [mailto:peter@ashenden.com.au] 
> Sent: Wednesday, December 20, 2006 5:21 PM
> To: Muranyi, Arpad; vhdl-ams@server.vhdl.org
> Subject: RE: Floating point related question
> 
> Arpad,
> 
> That's a really good question. Currently, there is no such 
> function. As of VHDL-2002 (and hence VHDL-AMS-2007), floating 
> point numbers have to be IEEE double precision or better. So 
> it would be feasible to define a function similar to Matlab's 
> eps function, assuming double precision representation. Might 
> be worth raising it as a requirement for both VHDL and VHDL-AMS.
> 
> A further issue comes to mind. If you're doing numerical 
> computation, you accumulate error, the magnitude of which 
> depends on the behavior of the algorithm. That means a final 
> result may have greater than eps error compared to some 
> expected value. For example, if you do
> 
>   assert abs(computation(x) - expected_x) < eps;
> 
> the accumulated error might mean that the result of the 
> computation is more than eps away from expected_x, even 
> though the computation has been performed correctly. Knowing 
> what value to use in place of eps (or how much to scale eps) 
> involves numerical analysis of the computation. Does this 
> make a putative eps function less useful in practice?
> 
> Cheers,
> 
> PA
> --
> Dr. Peter J. Ashenden         peter@ashenden.com.au
> Ashenden Designs Pty. Ltd.    www.ashenden.com.au
> PO Box 640                    VoIP: 
> sip://0871270078@sip.internode.on.net
> Stirling, SA 5152             Phone (mobile):  +61 414 70 9106
> Australia
> 
> 
> > -----Original Message-----
> > From: owner-vhdl-ams@server.eda.org
> > [mailto:owner-vhdl-ams@server.eda.org] On Behalf Of Muranyi, Arpad
> > Sent: Thursday, 21 December 2006 10:39 AM
> > To: vhdl-ams@server.vhdl.org
> > Subject: Floating point related question
> > 
> > 
> > Hello Everyone,
> > 
> > We all know that using relational operators between
> > floating point numbers is a risky proposition.  This
> > code, for example, may never execute, believe it or
> > not, (I tried it):
> > 
> >       if (0.1+0.2 = 0.3) then
> >         report "Test";
> >       end if;
> > 
> > However, there are times when taking care of such
> > floating point errors may be needed.
> > 
> > In Matlab there is a function, called "eps" which
> > can help in incorporating such errors in equations.
> > http://www.mathworks.com/access/helpdesk/help/techdoc/ref/inde
> x.html?/ac 
> cess/helpdesk/help/techdoc/ref/eps.html&http://www.google.com/
> search?hl=
> en&q=eps+function
> 
> I would like to find out whether there is a similar
> function in VHDL-AMS.  For a moment I thought I could
> use the T'succ(x) or related functions, but the problem
> is that this would only work on discrete or physical
> types.  The type "real" is not one of these.  Could
> someone give me some ideas how to go about this?
> 
> Thanks, and Happy Holidays...
> 
> Arpad
> ========================================================
> 
Received on Wed Dec 20 19:03:55 2006

This archive was generated by hypermail 2.1.8 : Wed Dec 20 2006 - 19:04:23 PST