Closed tdelabro closed 10 months ago
Sure, we can add a defaulted method to Euclid
, and I supposed CheckedEuclid
too while we're at it. For primitive types, I expect the difference will usually get optimized away, but for types like BigInt
it could definitely improve performance to use a combined method.
Sometimes you need both the quotient and the remainder.
With the current state of the trait you would have to call both
div_euclid
andrem_euclid
. But part of the computation done by each one of those methods can be shared. See:can become
And you spare one computation of
self % v
. This is a really small optimization for f32, but with the kind of big field elements I'm working with, it actually a pretty significant hit. The method can be defined with a default impl:Which has not optimization nor drawback for people using it, but can be overwritten in order to achieve better performances.
Wdyt?