valarray<double>::operator%() not working

Lance Olav Eastgate lance@ccmr.cornell.edu
Fri Feb 22 11:17:00 GMT 2002



> Lance Olav Eastgate wrote:
>
> >When I try to use the binary operator% or operator%= with valarray<double>
> >this doesn't work (in gcc 3.0.2). The reason, as far as I understand, is
> >that operator% is only defined for integers. The element-by-element
> >modulus in _DEFINE_ARRAY_FUNCTION (in valarray_array.h, line 419, gcc
> >3.0.2) thus doesn't work when _Tp is a double. Thus for two doubles or
> >floats, std::fmod (or similar) needs to be used.
> >
> >Perhaps the operator% etc could be overloaded to take two doubles?
> >
> Hi. I know all of this seems obvious to you, but could you possibly post
> a short self-contained testcase demonstrating the problem?
>
> Thanks,
> Paolo.

Here is a self-contained test-case (all four statements using the %
operator produce errors individually):

#include <valarray>

int main() {
    std::valarray<double> u(10), v(22.0, 10), w(2.3, 10);
    u = v % 2.3;
    u = v % w;
    v %= 2.3;
    v %= w;
}

Thanks,
Lance



More information about the Libstdc++ mailing list