Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gh-126719: Improve math.fmod documentation. #127741

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions Doc/library/math.rst
Original file line number Diff line number Diff line change
Expand Up @@ -248,16 +248,16 @@ Floating point arithmetic

.. function:: fmod(x, y)

Return ``fmod(x, y)``, as defined by the platform C library. Note that the
Python expression ``x % y`` may not return the same result. The intent of the C
standard is that ``fmod(x, y)`` be exactly (mathematically; to infinite
precision) equal to ``x - n*y`` for some integer *n* such that the result has
the same sign as *x* and magnitude less than ``abs(y)``. Python's ``x % y``
returns a result with the sign of *y* instead, and may not be exactly computable
for float arguments. For example, ``fmod(-1e-100, 1e100)`` is ``-1e-100``, but
the result of Python's ``-1e-100 % 1e100`` is ``1e100-1e-100``, which cannot be
represented exactly as a float, and rounds to the surprising ``1e100``. For
this reason, function :func:`fmod` is generally preferred when working with
Return the remainder of division ``x / y``, as defined by the platform C library
StanFromIreland marked this conversation as resolved.
Show resolved Hide resolved
function ``fmod(x, y)``. Note that the Python expression ``x % y`` may not return
the same result. The intent of the C standard is that ``fmod(x, y)`` be exactly
(mathematically; to infinite precision) equal to ``x - n*y`` for some integer *n*
such that the result has the same sign as *x* and magnitude less than ``abs(y)``.
Python's ``x % y`` returns a result with the sign of *y* instead, and may not be
exactly computable for float arguments. For example, ``fmod(-1e-100, 1e100)``
is ``-1e-100``, but the result of Python's ``-1e-100 % 1e100`` is ``1e100-1e-100``,
which cannot be represented exactly as a float, and rounds to the surprising ``1e100``.
For this reason, the function :func:`fmod` is generally preferred when working with
StanFromIreland marked this conversation as resolved.
Show resolved Hide resolved
floats, while Python's ``x % y`` is preferred when working with integers.


Expand Down
Loading