Clarify mathematical definition of lcm
#56992
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Some folks define
lcm(x::T,y::T)
as anyz::T
such that there existsa::T, b::T
witha*x==z
andb*y==z
and for allzʹ::T
such that there exista::T, b::T
witha*x==zʹ
andb*y==zʹ
, there also existsc::T
withz*c==zʹ
. This is a reasonable definition, but not what we use. Notably, it makeslcm(x::Rational, y::Rational) = z::Rational
true for all finite, nonzerox
,y
, andz
.The definition we use requires
a
,b
, andc
to all be integers, not rationals in the case oflcm(x::Rational, y::Rational)
. This clarifies what we mean when we definelcm(x::Rational, y::Rational)
and also how the generic function should be extended.See this thread for more discussion
cc @oscardssmith