Re: III_requantize() accuracy

Rob Leslie <[email protected]>
Newsgroups gmane.comp.audio.mad.devel
Message-ID <[email protected]>
On Mar 24, 2004, at 12:36 AM, Grigory A. wrote:
> I am again about accuracy.
> input parameters
> exp=0xffffff6d=-147 -> -(36.75) right?
> value d2=210
>
>>> 210^(4/3)*2^(-36.75)*2^28
> ans =
>    2.89921171527700
>
> my answer 3
>
> MAD 0.15 - #define FPM_INTEL
> answer 2
>
> What is the problem?

Keeping in mind that 2^(-36.75) = 2^(-36) × 2^(-3/4), you will find 
that III_requantize(210, -147) calculates:

              210^(4/3)    ⇒ 0x04e0393e × 2^12
   0x04e0393e × 2^(-36+12) ⇒ 0x00000005
                2^(-3/4)   ⇒ 0x09837f05
   0x00000005 × 0x09837f05 ⇒ 0x00000002

I think the difference is due to rounding errors from the limited 
precision of the fixed-point type. You're talking about a difference of 
3.725e-9, pretty insignificant in the grand scheme of things.

If you configure with --enable-accuracy, you'll get a slightly better 
fixed-point multiplication in the last step that happens to yield the 
value you were expecting.

-- 
Rob Leslie
[email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.