Support init
keyword in maximum
/minimum
#35839
Closed
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.
We can supply
init
for general reductions, butmaximum
andminimum
do not support this keyword. This PR allows them to do so:This was motivated by writing a blog post on invalidations (JuliaLang/www.julialang.org#794), and together with some changes to Pkg to supply the
init
keyword it eliminates all of thereduce_empty
invalidations from loading FixedPointNumbers (which extendsreduce_empty
).It's worth noting one unfortunate fact:
init
has different meanings forreduce(+, src)
than forsum!(dest, src)
. In the former case, it's the value for seeding the result; in the latter, it's a boolean indicating whether to re-initializedest
to the sentinel value or to keep whatever result is already there. This PR might make the situation slightly worse by supporting more cases where the conflict becomes appreciable (maximum
vsmaximum!
). This feels like something we should fix for Julia 2.0.Closes #35733