Symbolics.jl compatibility
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Reproduce el ejemplo usando ForwardDiff.derivative, Symbolics.jl, Num y ForwardDiff.Dual; después, inspecciona los métodos aritméticos en conflicto que se muestran en el error de ForwardDiff y SymbolicUtils. Determina si el cambio de compatibilidad debe hacerse en ForwardDiff.jl o en Symbolics.jl, y verifica que las operaciones aritméticas básicas ya no produzcan un error de método ambiguo.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Arithmetic operations between Num and Dual based on Num is not clearly defined. The basic usecase is this:
using ForwardDiff, Symbolics.jl
@variables a, x
f = x -> a*x
Differential(x)(f(x)) |> expand_derivatives # This works, and gives what I would expect from ForwardDiff.derivative
ForwardDiff.derivative(f, x) # This returns an error
The error given by the last line is this
ERROR: MethodError: *(::Num, ::ForwardDiff.Dual{ForwardDiff.Tag{var"#5#6", Num}, Num, 1}) is ambiguous.
Candidates:
*(x::Real, y::ForwardDiff.Dual{Ty}) where Ty
@ ForwardDiff ~/.julia/packages/ForwardDiff/PcZ48/src/dual.jl:145
*(a::Num, b::Real)
@ Symbolics ~/.julia/packages/SymbolicUtils/ssQsQ/src/methods.jl:73
*(a::Num, b::Number)
@ Symbolics ~/.julia/packages/SymbolicUtils/ssQsQ/src/methods.jl:75
Possible fix, define
*(::Num, ::ForwardDiff.Dual{Ty}) where Ty
Stacktrace:
[1] (::var"#5#6")(x::ForwardDiff.Dual{ForwardDiff.Tag{var"#5#6", Num}, Num, 1})
@ Main ./REPL[21]:1
[2] derivative(f::var"#5#6", x::Num)
@ ForwardDiff ~/.julia/packages/ForwardDiff/PcZ48/src/derivative.jl:14
[3] top-level scope
@ REPL[22]:1
This seems to be the case for (at least) all basic arithmetic operations. Not sure if this should be fixed here or in Symbolics.jl.
- Lenguaje dominante
- Julia
- Estrellas
- 1k
- Forks
- 162
- Métricas de merge de PR
- Sin PR fusionados en 30 d
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 15 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
JuliaDiff/ForwardDiff.jl#852 · 6 comentarios ·
-
`fma` and `muladd` ignore NaN-safe modePosiblemente ocupada @devmotion la tomó hace 1 día. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
JuliaDiff/ForwardDiff.jl#860 ·
-
Enable NaN-safe mode by defaultPosiblemente ocupada @devmotion la tomó hace 3 días. Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
JuliaDiff/ForwardDiff.jl#857 · 1 reacción ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
JuliaDiff/ForwardDiff.jl#854 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 75/100
JuliaDiff/ForwardDiff.jl#849 ·
Todos los issues de JuliaDiff/ForwardDiff.jl
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
oscar-system/GAP.jl#1455 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
JuliaAI/MLJTransforms.jl#85 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
SciML/OrdinaryDiffEq.jl#4875 ·
Los mantenedores suelen responder en 4 días
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
SciML/NonlinearSolve.jl#1372 ·
Los mantenedores suelen responder en 1 día