A bug or a documentation error

Tim Peters tim_one at email.msn.com
Thu Sep 14 21:36:31 EDT 2000


It's not a bug, but it's hard to see how to make *look* like it's not
<wink>.  What the infix "%" operator  does is explained correctly in the
docs.  *Accurate* docs for math.fmod would have to say something more like:

    Return the value returned by the underlying fmod function in
    your platform's implementation of C's math library.  See your
    platform documentation for an exact definition.

And then the problem is that, in my experience, most platform docs don't
actually *have* an exact definition, and it definitely varies across
platforms.  The same is true of many of the math.* functions, which are just
thin wrappers around the platform libm.  Rather than just confuse people
more, the math module docs have generally been left cryptic to the point of
bliss <wink>.

Note that you'll get the same kinds of answers running straight C; e.g.,

#include <math.h>
#include <stdio.h>

void
main()
{
    double x = -3.2;
    double y = 1.0;
    double quotient = floor(x/y);
    double mod = x - quotient * y;
    double dmod = fmod(x, y);
    printf("%g quotient %.17g %.17g\n", quotient, mod, dmod);
}

prints

-4 quotient 0.79999999999999982 -0.20000000000000018

for me, today, under Win98SE, using MS's math functions.

Note that the builtin pow isn't the same as math.pow either.

> -----Original Message-----
> From: python-list-admin at python.org
> [mailto:python-list-admin at python.org]On Behalf Of Nadav Horesh
> Sent: Thursday, September 14, 2000 5:11 PM
> To: python-list at python.org
> Subject: A bug or a documentation error
>
>
> >>> math.fmod.__doc__
> 'fmod(x,y)\012\012Return x % y.'
> >>> math.fmod(-3.2,1)
> -0.20000000000000018
> >>> (-3.2)%1
> 0.79999999999999982
>
> This was taken from Python 2.0b1, but it is very much the same in 1.5.2:
>
> Is the __doc__ string wrong or is it a bug?
>
>     Nadav.
>
>
> --
> http://www.python.org/mailman/listinfo/python-list






More information about the Python-list mailing list