Inadequate support of `promote_rule` for non-concrete types
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
Direzione di ricerca
Reproduce the listed promote_rule cases in the Julia REPL and read the handling in ColorTypes.jl. Compare the behavior with issue #342, then establish expected results for the examples, including avoiding StackOverflowError. Done means the non-concrete promotion cases behave consistently without the reported errors.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
For better or worse, PR #207 is the most significant change in FPN v0.9.
However the current promote_rule for non-concrete types is somewhat imperfect.
In ColorTypes.jl, I am keenly aware that the handling of non-concrete types can lead to chaos.
Here, I’d like to think about ways to make things a little better, as long as they don’t go against common sense.
julia> promote_rule(Normed{UInt8, 8}, Fixed{Int8, 7})
Float32
julia> promote_rule(Normed{UInt8}, Fixed{Int8})
Union{} # -> Float32
julia> promote_rule(Normed{UInt8}, Normed{UInt8})
Union{} # -> Normed{UInt8}
julia> promote_rule(Normed{UInt8}, Normed{UInt16})
Union{} # -> Normed{UInt16}
julia> promote_rule(Normed{UInt8}, Normed)
Union{} # -> Normed
julia> promote_rule(Normed{UInt8}, Normed{Union{UInt8, UInt16}})
Union{} # -> Normed (Any desire to make this more strict is a path to despair.)
julia> promote_rule(Normed{UInt8}, FixedPoint)
Union{} # -> FixedPoint
julia> promote_rule(Normed{UInt8}, Float64)
Float64
julia> promote_rule(Normed, Float64)
ERROR: StackOverflowError # -> BigFloat
julia> promote_rule(Normed{UInt8}, Int8)
Float32
julia> promote_rule(Normed, Int8)
Normed # -> BigFloat
Some of the unnatural promotions or stack overflow errors are caused by issue #342. In other words, fixing issue #342 will resolve some of these issues.
- Lingua principale
- Julia
- Stelle
- 95
- Fork
- 38
- Merge medio
- 16h 31m
- PR unite (30g)
- 9
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di JuliaMath/FixedPointNumbers.jl
-
bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 62/100
JuliaMath/FixedPointNumbers.jl#342 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
JuliaMath/FixedPointNumbers.jl#337 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 42/100
JuliaMath/FixedPointNumbers.jl#331 · 7 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
needs comments
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
JuliaMath/FixedPointNumbers.jl#318 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
add-on enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
JuliaMath/FixedPointNumbers.jl#311 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di JuliaMath/FixedPointNumbers.jl
Issue simili
-
add-on doc enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
JuliaGraphics/ColorTypes.jl#344 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
`enzymexla.linalg.lu` lowering fails for a tall matrix: the permutation is built with the pivot typeAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
EnzymeAD/Enzyme-JAX#3286 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
SciML/LinearSolve.jl#1359 ·
I maintainer di solito rispondono entro 1 giorno