(self, values)
| 58 | return 1 if p == 0 else 0 if x == 0 else self.cache[(self.invcache[x] * p) % self.order] |
| 59 | |
| 60 | def multi_inv(self, values): |
| 61 | partials = [1] |
| 62 | for i in range(len(values)): |
| 63 | partials.append(self.mul(partials[-1], values[i] or 1)) |
| 64 | inv = self.inv(partials[-1]) |
| 65 | outputs = [0] * len(values) |
| 66 | for i in range(len(values), 0, -1): |
| 67 | outputs[i-1] = self.mul(partials[i-1], inv) if values[i-1] else 0 |
| 68 | inv = self.mul(inv, values[i-1] or 1) |
| 69 | return outputs |
| 70 | |
| 71 | def div(self, x, y): |
| 72 | return self.mul(x, self.inv(y)) |
no test coverage detected