<br><br><div><span class="gmail_quote">On 7/20/07, <b class="gmail_sendername">Kevin Jacobs <<a href="mailto:jacobs@bioinformed.com">jacobs@bioinformed.com</a>></b> <<a href="mailto:bioinformed@gmail.com">bioinformed@gmail.com
</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><span class="q">On 7/20/07, <b class="gmail_sendername">Kevin Jacobs <
<a href="mailto:jacobs@bioinformed.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">jacobs@bioinformed.com</a>></b> <<a href="mailto:bioinformed@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
bioinformed@gmail.com</a>> wrote:</span><div><div><span class="e" id="q_113e54a075bb6a9b_2"><span class="gmail_quote">
</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><span>On 7/20/07, <b class="gmail_sendername">Charles R Harris</b> <<a href="mailto:charlesr.harris@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">

charlesr.harris@gmail.com</a>> wrote:</span><div><span><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">


<div><div>I expect using sqrt(x) will be faster than x**.5.</div></div></blockquote></span><div><br>I did test this at one point and was also surprised that sqrt(x) seemed slower than **.5.  However I found out otherwise while preparing a timeit script to demonstrate this observation.  Unfortunately, I didn't save the precise script I used to explore this issue the first time.  On my system for arrays with more than 2 elements, sqrt is indeed faster.  For smaller arrays, the different is negligible, but inches out in favor of **
0.5.</div></div></blockquote></span></div><div><br><br>This is just not my day.  My observations above are valid for integer arrays, but not float arrays:<br><br>sqrt(int array)   :  6.98 usec/pass<br>(int array)**0.5  : 
22.75 usec/pass
<br>sqrt(float array) :  6.70 usec/pass<br>(float array)**0.5:  4.66 usec/pass</div></div></blockquote><div><br><br>From the source, it appears that powers [-1, 0, 0.5, 1, 2] are optimized for float and complex types, while one power, 2, is optimized for other types. I can't recall why that is however.
<br> </div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div>Generated by:<br><br>import timeit<br><br>n=100000<br><br>t=timeit.Timer
(stmt='sqrt(arange(3))',setup='from numpy import arange,array,sqrt\nx=arange(100)')
<br>print 'sqrt(int array)   : %5.2f usec/pass' % (1000000*t.timeit(number=n)/n)<br><br>t=timeit.Timer(stmt='x**0.5',setup='from numpy import arange,array\nx=arange(100)')<br>print '(int array)**
0.5  : %5.2f usec/pass' % (1000000*t.timeit(number=n)/n)<br><br>t=timeit.Timer(stmt='sqrt(arange(3))',setup='from numpy import arange,array,sqrt\nx=arange(100,dtype=float)')<br>print 'sqrt(float array) : %5.2f usec/pass' % (1000000*
t.timeit(number=n)/n)<br><br>t=timeit.Timer(stmt='x**0.5',setup='from numpy import arange,array\nx=arange(100,dtype=float)')<br>print '(float array)**0.5: %5.2f usec/pass' % (1000000*t.timeit(number=n)/n)
<br><br>-Kevin<br><br></div><br>
<br>_______________________________________________<br>Numpy-discussion mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:Numpy-discussion@scipy.org">Numpy-discussion@scipy.org</a><br>
<a onclick="return top.js.OpenExtLink(window,event,this)" href="http://projects.scipy.org/mailman/listinfo/numpy-discussion" target="_blank">http://projects.scipy.org/mailman/listinfo/numpy-discussion</a><br><br></blockquote>
</div><br><br clear="all"><br>-- <br>.  __<br>.   |-\<br>.<br>.  <a href="mailto:tim.hochberg@ieee.org">tim.hochberg@ieee.org</a>