[Speex-dev] More floating point errors

Jean-Marc Valin Jean-Marc.Valin at USherbrooke.ca
Tue Dec 13 01:35:59 PST 2005


> It seems that using a different compiler (I assume the development is
> done with MSC) uncovers various issues with the floating point.

No, all development is done on gcc/Linux.

> 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));

change that to:

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

(note the "1+" in the spx_sqrt)

As for this appearing only on some version/compiler configurations, the
only explanation is sheer luck (order in which the float operations are
done and when it goes to registers).

	Jean-Marc


More information about the Speex-dev mailing list