[Speex-dev] More floating point errors

Tom Harper tharper at sightspeed.com
Tue Dec 13 08:16:59 PST 2005


I had this issue a (couple of?) weeks ago...  the solution then (from jm) was-

g = DIV32(corr[i-start], SHR32(MULT16_16(spx_sqrt(10 + e0), 
spx_sqrt(10+energy[i-start])),6));

This effects more than fixed point- basically, once this goes bad it will 
eventually
cause the codec to only produce fuzz in floating point, and it will result in
ol_pitch_coef getting set to NAN, which is then preserved for all of eternity
(or until the speex enc gets destroyed) in vbr->soft_pitch- i.e. you can't 
just
reset the state to fix it.

Tom

At 10:31 PM 12/12/2005, Alex Bakaev wrote:

>Hi!
>
>It seems that using a different compiler (I assume the development is done 
>with MSC) uncovers various issues with the floating point.
>
>Here is the second one I'm seeing - DOMAIN error from sqrt().
>
>In the open_loop_nbest_pitch(), this line:
>
>           g = DIV32(corr[i-start], 
> 10+SHR32(MULT16_16(spx_sqrt(e0),spx_sqrt(energy[i-start])),6));
>
>The values are:
>
>e0 is 7.2
>i is 142,
>start is 17
>energy [i-start] is -2.1004911E-015
>
>Hope this information is enough to go on.
>
>Tia,
>.a
>_______________________________________________
>Speex-dev mailing list
>Speex-dev at xiph.org
>http://lists.xiph.org/mailman/listinfo/speex-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.xiph.org/pipermail/speex-dev/attachments/20051213/abb7bb72/attachment.html


More information about the Speex-dev mailing list