public static uint[] bmul(uint[] x, uint[] y)
{
var n = x.Length;
var t = y.Length;
var r = new uint[n + t];
uint c, i, j;
for (i = 0; i < t; i++)
{
c = 0;
for (j = 0; j < n; j++)
{
c = ip(r, i + j, x[j], y[i], c);
}
r[i + n] = c;
}
return zclip(r);
}