`min` does not return the minimum with respect to `isless` when values tie
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 55/100
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Julia
- Estrellas
- 1k
- Forks
- 165
- Merge medio
- 6 h 34 min
- PR fusionados (30 d)
- 1
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de JuliaDiff/ForwardDiff.jl
-
missing floatmin, floatmax, and issubnormal for DualPosiblemente ocupada @devmotion la tomó hace 30 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
JuliaDiff/ForwardDiff.jl#852 · 6 comentarios ·
Los mantenedores suelen responder en 1 día
-
Third-order derivatives of `x / y` are `Inf` or `NaN` for small `y`, e.g. in gradients of Laplace approximationsPosiblemente ocupada @devmotion la tomó hace 4 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 65/100
JuliaDiff/ForwardDiff.jl#866 ·
Los mantenedores suelen responder en 1 día
-
`fma` and `muladd` ignore NaN-safe modePosiblemente ocupada @devmotion la tomó hace 15 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
JuliaDiff/ForwardDiff.jl#860 ·
Los mantenedores suelen responder en 1 día
-
Enable NaN-safe mode by defaultPosiblemente ocupada @devmotion la tomó hace 17 días. Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
JuliaDiff/ForwardDiff.jl#857 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
JuliaDiff/ForwardDiff.jl#854 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de JuliaDiff/ForwardDiff.jl
Issues similares
-
documentation invalid
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
JuliaPhysics/BeamletOptics.jl#190 ·
Los mantenedores suelen responder en 2 días
-
mul! with a Symmetric or Hermitian factor throws for a matrix view whose columns are not contiguousAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
JuliaLang/LinearAlgebra.jl#1829 ·
Los mantenedores suelen responder en 1 día
-
`EnsembleSummary` `ci_type = :SEM` ribbon is `sqrt(N)` too wide for scalar statesPosiblemente ocupada @isaacsas la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
SciML/SciMLBase.jl#1654 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
MagneticResonanceImaging/MRIReco.jl#320 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
rfordatascience/tidytuesday#1098 ·