Actual work of sparse matvec is delegated to a function pointer