alloy-rs / alloy-rs/ruint

`root`: The division can be turned into bit-shifts when the degree

Open
#629 0 comments 0 reactions 1 assignee Claimed by @decofe View on GitHub
optimize tracker
Dominant language
Rust
Stars
225
Forks
70
Avg merge
16h 54m
Merged PRs (30d)
8

Description

*On 2026-08-31 @decofe wrote in [`a9450b4`](https://github.com/alloy-rs/ruint/commit/a9450b499c03f259238c2955b9512de873a77e12) “chore: apply latest nightly rustfmt (#627)”:*

The division can be turned into bit-shifts when the degree
is a power of two.

```rust
let mut decreasing = false;
loop {
// OPT: This could benefit from single-limb multiplication
// and division.
//
// OPT: The division can be turned into bit-shifts when the degree
// is a power of two.
let division = result
.checked_pow(deg_m1)
.map_or(Self::ZERO, |power| self / power);
let iter = (division + deg_m1 * result) / Self::from(degree);
match (decreasing, iter.cmp(&result)) {

```
*From [`src/root.rs:65`](https://github.com/alloy-rs/ruint/blob/a9450b499c03f259238c2955b9512de873a77e12/src/root.rs#L65)*

Contributor guide

No contributing guide indexed for this repository

Research direction

Start in src/root.rs around line 65 and trace the root iteration involving the degree and division. Check how power-of-two degrees can use bit-shifts, then verify that root results remain unchanged for those degrees and that the existing behavior is preserved for other degrees.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
performance
Issue type
Refactor
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.