ModSqrt calls (big.Int).ModSqrt.
(x, p *BigInt)
| 670 | |
| 671 | // ModSqrt calls (big.Int).ModSqrt. |
| 672 | func (z *BigInt) ModSqrt(x, p *BigInt) *BigInt { |
| 673 | var tmp1, tmp2 big.Int //gcassert:noescape |
| 674 | var tmp3 big.Int // escapes because of https://github.com/golang/go/pull/50527. |
| 675 | zi := z.inner(&tmp1) |
| 676 | if zi.ModSqrt(x.inner(&tmp2), p.inner(&tmp3)) == nil { |
| 677 | return nil |
| 678 | } |
| 679 | z.updateInner(zi) |
| 680 | return z |
| 681 | } |
| 682 | |
| 683 | // Mul calls (big.Int).Mul. |
| 684 | func (z *BigInt) Mul(x, y *BigInt) *BigInt { |