[PD-cvs] externals/iemlib/iemlib1/src iem_sqrt4~.c,1.1,1.2
musil
tmusil at users.sourceforge.net
Wed Oct 24 17:59:25 CEST 2007
Update of /cvsroot/pure-data/externals/iemlib/iemlib1/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30481/iemlib/iemlib1/src
Modified Files:
iem_sqrt4~.c
Log Message:
union tabfudge_f instead *(long *)(float *)
for HCS's strict aliasing
Index: iem_sqrt4~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/iemlib/iemlib1/src/iem_sqrt4~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** iem_sqrt4~.c 9 Dec 2006 01:57:26 -0000 1.1
--- iem_sqrt4~.c 24 Oct 2007 15:59:23 -0000 1.2
***************
*** 34,38 ****
t_float f = *in;
t_float g, h;
! long l = *(long *)(in);
if(f < 0.0f)
--- 34,38 ----
t_float f = *in;
t_float g, h;
! union tabfudge_f tf;
if(f < 0.0f)
***************
*** 45,49 ****
else
{
! g = iem_sqrt4_tilde_exptab[(l >> 23) & 0xff] * iem_sqrt4_tilde_mantissatab[(l >> 13) & 0x3ff];
h = f * (1.5f * g - 0.5f * g * g * g * f);
*out++ = h;
--- 45,50 ----
else
{
! tf.tf_f = f;
! g = iem_sqrt4_tilde_exptab[((tf.tf_l) >> 23) & 0xff] * iem_sqrt4_tilde_mantissatab[((tf.tf_l) >> 13) & 0x3ff];
h = f * (1.5f * g - 0.5f * g * g * g * f);
*out++ = h;
More information about the Pd-cvs
mailing list