[Python-ideas] Add the imath module

Steven D'Aprano steve at pearwood.info
Fri Jul 13 07:58:57 EDT 2018


On Fri, Jul 13, 2018 at 10:43:12AM +0200, Jacco van Dorp wrote:
> If there's going to be failure possible primality tests, there should
> also exist certain ones. No matter how slow it can be to do it.
>
> Python if often a language for beginners. I think it'd be confusing to
> a lot of people that there's going to be tests that show "This one is
> probably prime", instead of sure tests.

I think that it is precisely because this will be used by beginners that 
we shouldn't offer such a choice. Its our job to curate the APIs in the 
std lib, not to burden inexpert users with excess choices that will only 
worry them.

If this were a third-party module, I would say, "the more the merrier". 
Let it provide a dozen different implementations, that's cool. But the 
stdlib is batteries, not nuclear reactors. If you want a choice of 
algorithms, or the ability to configure space versus time versus 
guarantees, I think you ought to be using a 3rd party module, not the 
std library.


I'm not saying hide the fact that it is probabilistic, but that's an 
implementation detail that *in practice* makes no difference at all. 
Using Miller-Rabin and 30 randomly chosen witnesses, the probability of 
a wrong answer is < 0.000000000000000001. If we tested a million numbers 
a second, it would take an average of 18,000+ years to come across a 
single such error.

In comparison, your computer probably experiences something of the order 
of 1 cosmic-ray induced bit-flip causing data corruption per week.

https://stackoverflow.com/questions/2580933/cosmic-rays-what-is-the-probability-they-will-affect-a-program

Since using probabilistic methods is good enough for PGP and other 
high-security protocols, it's surely good enough for Tom Schoolboy 
testing whether 1234567890123456789 is prime.

(For the record: it isn't.)


-- 
Steve


More information about the Python-ideas mailing list