Boost logo

Boost :

From: Stephen Silver (boost_at_[hidden])
Date: 2001-01-12 13:16:05

Nickolay Mladenov wrote:

> What is wrong with the negative reminders?

Good point, negative remainders are not really a problem.

> Shouldn't one just check the result(before return) for it's sign?

Yes, or just return abs(n). I've noticed that gcd(1,-1) currently
returns -1, so we can fix this bug at the same time:

template <typename IntType>
IntType gcd(IntType n, IntType m)
    IntType r, zero(0);
    while (m != zero) {
        r = n % m;
        n = m;
        m = r;

    using std::abs;
    return abs(n);

r is best declared outside of the loop, otherwise it gets repeatedly
constructed and destructed.


Boost list run by bdawes at, gregod at, cpdaniel at, john at