I primarly use Ruby for math/science problems/projects because it’s so easy to program in, and it allows me to think about how to solve problems without worrying about how to code it. I’ve also played around with Crystal (aka Ruby on steroids) but it’s still young, and doesn’t let me (currently) do what I want, or without a lot of hassles, and I’ve just recently started looking at Nim (less than a month at time of writing).
Back in 2014/15 I started looking into Rust, which was before it hit 1.0. Now that it’s reached a good level of stability I was thinking of maybe trying to really learn it again.
I am really interested in the capabilities of these language to do real parallel processing of math algorithms.
I developed a prime sieve called the Sieve of Zakiya (SoZ), and it’s companion the Segmented Sieve of Zakiya (SSoZ). I wrote a paper, The Segmented Sieve of Zakiya (SSoZ) which describes its mathematical foundations and algorithm, and provide a working C++ implementation at the end of the paper (compiled, run, and verified), though I don’t consider myself a C++ programmer, just funcitonal enough in it. It’s a relatively short program.
Here’s a link to read and download the paper:
My humble request/challenge is for a/some skilled Rustaceans to translate the code into idiomatic Rust to demonstrate the best way to code the algorithm in it. Extra points if someone can do a true parallel version of the algorithm, which I attempted to do using OpemMP, but what I did didnt’ seem to make the code faster than the serial version (see paper).
I assume coding this the Rust way would look different than the C++ code, and all I can possible do now is try to do a direct translation to Rust using the same (probably suboptimal) structure.
Ultimately, I’d like to publish the results of benchmarks in different languages doing the SSoZ in an updated paper.
If anyone would be willing to take up the challenge I’d be pleased to answer any questions the best I can.
Thanks in advance.