On 2022-03-19 02:38, Steven D'Aprano wrote:
Hi Nathan, and welcome!
On Fri, Mar 18, 2022 at 05:13:16AM -0000, Nathan Levett wrote:
First time posting here ~ I've recently encountered that python does
not have an OOTB operator for modulo that is consistent with Euclidean
division. Although it should be easy for anyone who wants this to
create it themselves, it struck me as odd that it was not an already
included feature. I was even more shocked to see a list indicating
that most languages don't include one consister with Euclidean
division (disheartening to realise that the number theory way of doing
things is not the default).
Your post would be more persuasive if you:
* explained how Python's modulo is not consistent with Euclidean division;
* defined what definition of modulo is "the number theory way of doing things";
* told us what languages you have found that do include this version of modulo.
Wikipedia describes Euclidean division.
Basically, the modulo is non-negative:
a == b * q + r where 0 <= r < abs(b)
I'm not sure what part of number theory you are referring to. You should
explain, since its not obvious. I've just grabbed one of my text books,
and it doesn't even define a modulo operator. It only defines modulo
arithmetic, as in:
a is congruent to b mod m if m∣(a-b)
with a, b, m ∈ ℤ and m non-negative.
where ∣ is "divides". Although both a and b may be negative, not one of
the examples or exercises include examples where they are negative.
Wolfram language (Mathematica) define their Mod[a, b] function:
a mod b = a - b*floor(a/b)
which for real-valued a, b gives the result with the same sign as b.
https://functions.wolfram.com/IntegerFunctions/Mod/
That, I believe, makes it the same as Python's % operator.
Ada has two functions, mod() and rem(). I believe that mod(a, b) is the
same as Python's a%b, while rem(a, b) takes the sign of a rather than
the sign of b.
http://archive.adaic.com/standards/83lrm/html/lrm-04-05.html#4.5.5
Julia has the same:
https://docs.julialang.org/en/v1/manual/mathematical-operations/#Division-functions
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/python-ideas@python.org/message/ODGEFXNJKZUSV6ZGRI5HEI3A57CXPE4D/
Code of Conduct: http://python.org/psf/codeofconduct/