# What did work:
## Removing a double calculation when step
I changed `config[i] = 0.5*previous[i] + 0.25*previous[(i-1) % size]+ 0.25*previous[(i+1) % size];` to `config[i] = 0.5*previous[i] + 0.25*previous[(i-1) % size]*2;` in step
This made all the improvement as far as i can tell


## In shift_centre_to_origin compute the ratio before the for loop
```
const float ratio = sum/size;
for(long i = 0; i < size; i++) config[i] -= ratio;
```
This did not make a noticable difference

# What did not work and actually made it slower:
- Trying to find a fancy way to get a random bool in stochastic_unit_step
- Using the std::minmax_element function in elongation
- Changing the step function to be a void that changed the array directly made it about 8 secounds slower

# Compiler optimizations
I treid these flags: -Ofast -march=native -flto -fno-signed-zeros -fno-trapping-math
The improvements were in the margin of error

# Speedup
I got at best a 1.1 times speedup. See 12_speedup.png