title: In python, is math.acos() faster than numpy.arccos() for scalars?
body: <p>I'm doing some scientific computing in Python with a lot of geometric calculations, and I ran across a significant difference between using <code>numpy</code> versus the standard <code>math</code> library.</p>
  
  <pre><code>&gt;&gt;&gt; x = timeit.Timer('v = np.arccos(a)', 'import numpy as np; a = 0.6')
  &gt;&gt;&gt; x.timeit(100000)
  0.15387153439223766
  &gt;&gt;&gt; y = timeit.Timer('v = math.acos(a)', 'import math; a = 0.6')
  &gt;&gt;&gt; y.timeit(100000)
  0.012333301827311516
  </code></pre>
  
  <p>That's more than a 10x speedup!  I'm using numpy for almost all standard math functions, and I just assumed it was optimized and at least as fast as <code>math</code>.  For long enough vectors, numpy.arccos() will eventually win vs. looping with math.acos(), but since I only use the scalar case, is there any downside to using math.acos(), math.asin(), math.atan() across the board, instead of the numpy versions?</p>