public static uint simplemod(uint[] i, uint m) { uint c = 0, v; for (var n = i.Length - 1; n >= 0; n--) { v = i[n]; c = ((v >> bd) + (c << bd)) % m; c = (uint)(((v & bdm) + (c << bd)) % m); } return c; }