Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

`min` does not return the minimum with respect to `isless` when values tie

Ouverte
#868 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@devmotion y travaille déjà.

Depuis le 26/10/2026.

  • #869 par @devmotion — ouverte

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
55/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
julia
Domaine
backend

Piste de recherche

Start by reading the min implementation and its tests, then compare its tie handling with isless as changed in #695. Reproduce the reported min(x, 48.0) and min(48.0, x) results with ForwardDiff.Dual; done means tied values are selected consistently with isless, independent of argument order, and the regression is covered by a test.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

min is documented to "return the minimum of the arguments, with respect to isless", but for a Dual that ties in value it returns whichever argument comes first:

julia> using ForwardDiff

julia> x = ForwardDiff.Dual(48.0, 1.0);

julia> isless(48.0, x)
true

julia> min(x, 48.0)
Dual{Nothing}(48.0,1.0)

julia> min(48.0, x)
Dual{Nothing}(48.0,0.0)

Since #695, isless breaks a value tie on the partials, so 48.0 is the smaller argument here, but min(x, 48.0) returns x. min picks its argument by value only, so on a tie the result depends on argument order rather than on isless.

I ran into this through differentiating Interpolations.jl, whose linear extrapolation clamps with min and then bounds-checks the result with <=, so it throws a BoundsError under --check-bounds=yes when differentiating exactly at the last knot.

ForwardDiff 1.4.6, Julia 1.12.7.

Langage dominant
Julia
Étoiles
1k
Forks
165
Merge moyen
6 h 34 min
PR mergées (30 j)
1

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de JuliaDiff/ForwardDiff.jl

Toutes les issues de JuliaDiff/ForwardDiff.jl

Issues similaires

Plus d'issues Julia

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.