<html><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px"><div id="yui_3_16_0_1_1412625357546_34101">Hi list,</div><div dir="ltr" id="yui_3_16_0_1_1412625357546_34100">[iem_sqrt4~] crashes when trying to create on amd_64. It creates fine on 32 bit linux.</div><div id="yui_3_16_0_1_1412625357546_34111" dir="ltr"><br></div><div id="yui_3_16_0_1_1412625357546_34110" dir="ltr">This leads me to believe there is something in the setup routine that makes an assumption that only holds true for a 32bit OS.</div><div id="yui_3_16_0_1_1412625357546_34129" dir="ltr"><br></div><div id="yui_3_16_0_1_1412625357546_34191" dir="ltr">The only thing that stands out to me is a function called in the setup routine, posted below. This looks particularly suspicious to my untrained eye:</div><div id="yui_3_16_0_1_1412625357546_34197" dir="ltr"> *(long *)(&f) = l;</div><div id="yui_3_16_0_1_1412625357546_34206" dir="ltr">Even if that's not causing the crash, what does it do?<br></div><div id="yui_3_16_0_1_1412625357546_34207" dir="ltr"><br></div><div id="yui_3_16_0_1_1412625357546_34205" dir="ltr">And does that or anything stand out to anyone else?</div><div id="yui_3_16_0_1_1412625357546_34204" dir="ltr"><br></div><div dir="ltr">Thanks,</div><div dir="ltr">Jonathan<br></div><div dir="ltr"><br></div><div id="yui_3_16_0_1_1412625357546_34158" dir="ltr">static void iem_sqrt4_tilde_maketable(void)<br style="" class="">{<br style="" class=""> int i;<br style="" class=""> t_float f;<br style="" class=""> long l;<br style="" class=""> <br style="" class=""> if(!iem_sqrt4_tilde_exptab)<br style="" class=""> {<br style="" class=""> iem_sqrt4_tilde_exptab = (t_float *)getbytes(sizeof(t_float) * IEMSQRT4TAB1SIZE);<br style="" class=""> for(i=0; i<IEMSQRT4TAB1SIZE; i++)<br style="" class=""> {<br style="" class=""> l = (i ? (i == IEMSQRT4TAB1SIZE-1 ? IEMSQRT4TAB1SIZE-2 : i) : 1)<< 23;<br style="" class=""> *(long *)(&f) = l;<br style="" class=""> iem_sqrt4_tilde_exptab[i] = 1.0f/sqrt(f);<br style="" class=""> }<br style="" class=""> }<br style="" class=""> if(!iem_sqrt4_tilde_mantissatab)<br style="" class=""> {<br style="" class=""> iem_sqrt4_tilde_mantissatab = (t_float *)getbytes(sizeof(t_float) * IEMSQRT4TAB2SIZE);<br style="" class=""> for(i=0; i<IEMSQRT4TAB2SIZE; i++)<br style="" class=""> {<br style="" class=""> f = 1.0f + (1.0f/(t_float)IEMSQRT4TAB2SIZE) * (t_float)i;<br style="" class=""> iem_sqrt4_tilde_mantissatab[i] = 1.0f/sqrt(f);<br style="" class=""> }<br style="" class=""> }<br style="" class="">}<br style="" class=""><br></div><div></div></div></body></html>