text: Title: consider splitting memory allocation and computation functions in the c_rewrite branch
  Body: e.g. see: https://github.com/kwgoodman/bottleneck/blob/6a4a315f7c5426b8071903697e5e65e27d0c905d/bottleneck/src/move2_template.c#L27 
  
  If the split happens now, it will make it easy to parallelize these functions later.  Also, it makes it easy to benchmark the computation part only, as you can avoid repeated memory allocation.
  