computing convolution