`min` does not return the minimum with respect to `isless` when values tie
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 55/100
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
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de JuliaDiff/ForwardDiff.jl
-
missing floatmin, floatmax, and issubnormal for DualPeut-être pris @devmotion l’a pris il y a 31 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
JuliaDiff/ForwardDiff.jl#852 · 6 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Third-order derivatives of `x / y` are `Inf` or `NaN` for small `y`, e.g. in gradients of Laplace approximationsPeut-être pris @devmotion l’a pris il y a 5 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 65/100
JuliaDiff/ForwardDiff.jl#866 ·
Les mainteneurs répondent en général sous 1 jour
-
`fma` and `muladd` ignore NaN-safe modePeut-être pris @devmotion l’a pris il y a 16 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
JuliaDiff/ForwardDiff.jl#860 ·
Les mainteneurs répondent en général sous 1 jour
-
Enable NaN-safe mode by defaultPeut-être pris @devmotion l’a pris il y a 18 jours. Ouverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
JuliaDiff/ForwardDiff.jl#857 · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
JuliaDiff/ForwardDiff.jl#854 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de JuliaDiff/ForwardDiff.jl
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour
-
documentation invalid
Difficulté 1/5 1-3 heures Accessibilité débutants 88/100
JuliaPhysics/BeamletOptics.jl#190 ·
Les mainteneurs répondent en général sous 1 jour
-
mul! with a Symmetric or Hermitian factor throws for a matrix view whose columns are not contiguousPeut-être pris @dkarrasch l’a pris il y a 1 jour. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
JuliaLang/LinearAlgebra.jl#1829 ·
Les mainteneurs répondent en général sous 1 jour
-
`EnsembleSummary` `ci_type = :SEM` ribbon is `sqrt(N)` too wide for scalar statesPeut-être pris @isaacsas l’a pris il y a 1 jour. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
SciML/SciMLBase.jl#1654 ·
Les mainteneurs répondent en général sous 3 jours