complete parallelization of algorithm
make it possible to use a different type for computation than for input data