`ForwardDiff.jacobian` throws error for `fft`
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 28/100
Línea de trabajo
Comienza volviendo a ejecutar la reproducción reportada de ForwardDiff.jacobian(fft, x) y leyendo el stack trace a través de AbstractFFTs definitions.jl y la ruta de jacobian de ForwardDiff. Determina la compatibilidad prevista entre FFT y los valores duales de ForwardDiff y, a continuación, añade una prueba de regresión que muestre el comportamiento esperado del Jacobiano.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
reproducing script is below
(@v1.8) pkg> activate --temp
Activating new project at `/var/folders/29/j2y0t06d1918t1tymbv45wgr0000gn/T/jl_T8WfIS`
(jl_T8WfIS) pkg> add ForwardDiff, FFTW
Updating registry at `~/.julia/registries/General.toml`
Resolving package versions...
Installed ChainRulesCore ─ v1.18.0
Updating `/private/var/folders/29/j2y0t06d1918t1tymbv45wgr0000gn/T/jl_T8WfIS/Project.toml`
[7a1cc6ca] + FFTW v1.7.1
[f6369f11] + ForwardDiff v0.10.36
Updating `/private/var/folders/29/j2y0t06d1918t1tymbv45wgr0000gn/T/jl_T8WfIS/Manifest.toml`
[621f4979] + AbstractFFTs v1.5.0
[d360d2e6] + ChainRulesCore v1.18.0
[9e997f8a] + ChangesOfVariables v0.1.8
[bbf7d656] + CommonSubexpressions v0.3.0
[34da2185] + Compat v4.10.0
[163ba53b] + DiffResults v1.1.0
[b552c78f] + DiffRules v1.15.1
[ffbed154] + DocStringExtensions v0.9.3
[7a1cc6ca] + FFTW v1.7.1
[f6369f11] + ForwardDiff v0.10.36
[3587e190] + InverseFunctions v0.1.12
[92d709cd] + IrrationalConstants v0.2.2
[692b3bcd] + JLLWrappers v1.5.0
[2ab3a3ac] + LogExpFunctions v0.3.26
[1914dd2f] + MacroTools v0.5.11
[77ba4419] + NaNMath v1.0.2
[21216c6a] + Preferences v1.4.1
[189a3867] + Reexport v1.2.2
[276daf66] + SpecialFunctions v2.3.1
[90137ffa] + StaticArrays v1.6.5
[1e83bf80] + StaticArraysCore v1.4.2
[f5851436] + FFTW_jll v3.3.10+0
[1d5cc7b8] + IntelOpenMP_jll v2023.2.0+0
[856f044c] + MKL_jll v2023.2.0+0
[efe28fd5] + OpenSpecFun_jll v0.5.5+0
[0dad84c5] + ArgTools v1.1.1
[56f22d72] + Artifacts
[2a0f44e3] + Base64
[ade2ca70] + Dates
[f43a241f] + Downloads v1.6.0
[7b1f6079] + FileWatching
[b77e0a4c] + InteractiveUtils
[4af54fe1] + LazyArtifacts
[b27032c2] + LibCURL v0.6.3
[76f85450] + LibGit2
[8f399da3] + Libdl
[37e2e46d] + LinearAlgebra
[56ddb016] + Logging
[d6f4376e] + Markdown
[ca575930] + NetworkOptions v1.2.0
[44cfe95a] + Pkg v1.8.0
[de0858da] + Printf
[3fa0cd96] + REPL
[9a3f8284] + Random
[ea8e919c] + SHA v0.7.0
[9e88b42a] + Serialization
[6462fe0b] + Sockets
[2f01184e] + SparseArrays
[10745b16] + Statistics
[fa267f1f] + TOML v1.0.0
[a4e569a6] + Tar v1.10.1
[8dfed614] + Test
[cf7118a7] + UUIDs
[4ec0a83e] + Unicode
[e66e0078] + CompilerSupportLibraries_jll v0.5.2+0
[deac9b47] + LibCURL_jll v7.84.0+0
[29816b5a] + LibSSH2_jll v1.10.2+0
[c8ffd9c3] + MbedTLS_jll v2.28.0+0
[14a3606d] + MozillaCACerts_jll v2022.2.1
[4536629a] + OpenBLAS_jll v0.3.20+0
[05823500] + OpenLibm_jll v0.8.1+0
[83775a58] + Zlib_jll v1.2.12+3
[8e850b90] + libblastrampoline_jll v5.1.1+0
[8e850ede] + nghttp2_jll v1.48.0+0
[3f19e933] + p7zip_jll v17.4.0+0
Precompiling project...
7 dependencies successfully precompiled in 6 seconds. 25 already precompiled.
julia> x = randn(2)
2-element Vector{Float64}:
-0.04005888157665624
1.7357331187899907
julia> using ForwardDiff, FFTW
julia> ForwardDiff.jacobian(fft, x)
ERROR: type ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2} not supported
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:35
[2] _fftfloat(#unused#::Type{ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2}})
@ AbstractFFTs ~/.julia/packages/AbstractFFTs/4iQz5/src/definitions.jl:38
[3] _fftfloat(x::ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2})
@ AbstractFFTs ~/.julia/packages/AbstractFFTs/4iQz5/src/definitions.jl:39
[4] fftfloat(x::ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2})
@ AbstractFFTs ~/.julia/packages/AbstractFFTs/4iQz5/src/definitions.jl:34
[5] complexfloat(x::Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2}})
@ AbstractFFTs ~/.julia/packages/AbstractFFTs/4iQz5/src/definitions.jl:47
[6] fft(x::Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2}}, region::UnitRange{Int64})
@ AbstractFFTs ~/.julia/packages/AbstractFFTs/4iQz5/src/definitions.jl:214
[7] fft(x::Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2}})
@ AbstractFFTs ~/.julia/packages/AbstractFFTs/4iQz5/src/definitions.jl:66
[8] vector_mode_dual_eval!(f::typeof(fft), cfg::ForwardDiff.JacobianConfig{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2}}}, x::Vector{Float64})
@ ForwardDiff ~/.julia/packages/ForwardDiff/PcZ48/src/apiutils.jl:24
[9] vector_mode_jacobian(f::typeof(fft), x::Vector{Float64}, cfg::ForwardDiff.JacobianConfig{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2}}})
@ ForwardDiff ~/.julia/packages/ForwardDiff/PcZ48/src/jacobian.jl:125
[10] jacobian(f::Function, x::Vector{Float64}, cfg::ForwardDiff.JacobianConfig{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2}}}, ::Val{true})
@ ForwardDiff ~/.julia/packages/ForwardDiff/PcZ48/src/jacobian.jl:0
[11] jacobian(f::Function, x::Vector{Float64}, cfg::ForwardDiff.JacobianConfig{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(fft), Float64}, Float64, 2}}}) (repeats 2 times)
@ ForwardDiff ~/.julia/packages/ForwardDiff/PcZ48/src/jacobian.jl:19
[12] top-level scope
@ REPL[5]:1
- 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 14 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ó hoy. 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 2 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
-
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
-
Truncated discrete ccdf and logccdf return incorrect values at the lower atomPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
JuliaStats/Distributions.jl#2095 ·
-
documentation 📜 microphysics💧 ❄️
Dificultad 2/5 1-3 horas Aptitud para principiantes 63/100
NumericalEarth/Breeze.jl#1073 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 Menos de una hora Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día