Boost logo

Boost :

From: Michael Marcin (mike.marcin_at_[hidden])
Date: 2008-07-31 20:44:08

John C. Femiani wrote:
> Neal Becker wrote:
>> //self operator %=(base_type x) { val %= x; return *this; } What
>> should this do?
> I think perhaps it should behave like fmod (?)

I had a fixed-point library with the purpose that code written should be
able to choose to use fixed-point or floating point math at compile time
without having to rewrite the algorithms.

Instead of providing a % operator I provided an fmod function for parity
with floating point types.

/// Computes the remainder of fixed-point division
/// @param x The numerator.
/// @param y The divisor.
/// @return the value x - i * y, for some integer i such that, if y is
/// non-zero, the result has the same sign as x and magnitude
/// less than the magnitude of y.
template<std::size_t M, std::size_t F> inline
fixed<M,F> fmod( fixed<M,F> x, fixed<M,F> y )
    return as_fixed(x.raw() % y.raw());

/// shorthand for fmod( fixed, integer )
template<std::size_t M, std::size_t F, typename T > inline
typename boost::enable_if<boost::is_integral<T>,fixed<M,F> >::type
fmod( fixed<M,F> x, T y )
    return fmod( x, fixed<M,F>(y) );


Michael Marcin

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