# Use ** instead of pow in Python

In Python, `x**y`

is much faster than:

Julia is more than 5 times faster than Python at scalar exponentiation, while Go was in-between Python and Julia in performance.

## Python

Benchmarking was the same for integer or float base or exponent.

Python testing done with:

- Python 3.7.4
- Ipython 7.8.0
- Numpy 1.16.5

###
`**`

operator

The `**`

operator in Python also has the advantage of returning `int`

if inputs are `int`

and arithmetic result is integer.

```
10**(-3)
8.22 ns ± 0.0182 ns per loop (mean ± std. dev. of 7 runs, 100000000 loops each)
pow(10, -3)
227 ns ± 0.313 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
math.pow(10, -3)
252 ns ± 1.56 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
numpy.power(10., -3)
1.5 µs ± 2.91 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
```

Numpy is known in general to be slower at scalar operations than Python-native operators and Python built-in math. But of course Numpy is generally a lot faster and easier for N-dimensional array operations.

## Julia

Julia 1.2.0 was likewise benchmarked under power/ for reference on the same computer.

First we installed Julia BenchmarkTools:

```
import Pkg
Pkg.add("BenchmarkTools")
```

The Julia wallclock time for
exponentiation
was the same for `float`

and `int`

as with Python.

3.399 nanoseconds

## Go

Go 1.13.1 was benchmarked under power/:

`go test -bench=Power`

`BenchmarkPower-12 33883672 31.8 ns/op`