`UIntX.pow` and `IntX.pow` needs native implementaton
Nobody has claimed this yet.
- Dominant language
- Lean
- Stars
- 9.2k
- Forks
- 990
- Avg merge
- 1d 17h
- Merged PRs (30d)
- 175
Description
#7886 introduces UIntX.pow functions which are just the naive implementation, so we can provide a Pow UIntX Nat instance. (Similarly for signed fixed-width integers.) #7893 introduces BitVec.pow.
These functions need a native implementation provided by @[extern]. This is likely non-trivial as it will probably require extending Lean's bignum library with a version of mpz_powm.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the UIntX.pow work from #7886 and the BitVec.pow work from #7893, then trace the existing bignum library and @[extern] integrations. Compare the needed behavior with GMP's mpz_powm documentation. Done means native implementations support UIntX.pow and IntX.pow rather than the naive versions, with the relevant behavior verified.
Written by the indexing model from the issue text.
Assessment
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100