modify accumulate.hpp to avoid recursion
implement inner_product.hpp