https://github.com/JuliaLang/julia
Revision 7e297def65c658bcc4f86521e04a15478c7cf402 authored by Tim Holy on 16 September 2023, 20:32:51 UTC, committed by Tim Holy on 16 September 2023, 20:32:51 UTC
In #23155, we made the generic `min/max` use `isless` rather than `<`.
This is motivated by the observation that the implementation

    min(a, b) = cmp(a, b) ? a : b

implies that `cmp` satisfies the same properties as `isless` (either
`cmp(a, b)` in which case we return `a`, otherwise either `cmp(b, a)`
or they are equal, in which case returning `b` is correct).

However, this is not true for `Real` types, including AbstractFloat
(due to `NaN`).

Part of the motivation here is that many packages seem to subtype
`Real` when, theoretically, perhaps they shouldn't. Prominent examples
include `IntervalArithmetic.Interval` and `ForwardDiff.Dual`.
1 parent ebe1a37
Raw File
Tip revision: 7e297def65c658bcc4f86521e04a15478c7cf402 authored by Tim Holy on 16 September 2023, 20:32:51 UTC
Make `min/max` use `isless` even for `Real`
Tip revision: 7e297de
CITATION.cff
cff-version: 1.2.0
message: "Cite this paper whenever you use Julia"
authors:
- family-names: "Bezanson"
  given-names: "Jeff"
- family-names: "Edelman"
  given-names: "Alan"
- family-names: "Karpinski"
  given-names: "Stefan"
- family-names: "Shah"
  given-names: "Viral B."
title: "Julia: A fresh approach to numerical computing"
version: "v1"
license: "MIT"
doi: "10.1137/141000671"
date-released: 2017-02-07
url: "https://julialang.org"
preferred-citation:
  authors:
    - family-names: "Bezanson"
      given-names: "Jeff"
    - family-names: "Edelman"
      given-names: "Alan"
    - family-names: "Karpinski"
      given-names: "Stefan"
    - family-names: "Shah"
      given-names: "Viral B."
  doi: "10.1137/141000671"
  journal: "SIAM Review"
  month: 9
  start: 65
  end: 98
  pages: 33
  title: "Julia: A fresh approach to numerical computing"
  type: article
  volume: 59
  issue: 1
  year: 2017
  publisher:
    name: "SIAM"
back to top