added __restrict__ definition