`Fixed` does not fully support `fraction bits >= storage bits - 1`
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 68/100
Direzione di ricerca
Inizia eseguendo le riproduzioni nel REPL con Fixed{Int8, 6}(1), Fixed{Int8, 7}(1), sprint(show, ...), e l'esempio di moltiplicazione di Unitful. Confronta i percorsi di visualizzazione per f=6 e f=7; il lavoro è completato quando il valore f>=b-1 viene visualizzato senza virgolette aggiuntive e l'espressione Unitful non genera più il MethodError mostrato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Somehow related to #311 as it also concerns the lack of generalization, but in the other direction. If precision is really important, but range is not, we want to use all the bits to represent small numbers accepting that larger numbers, like 1, can no longer be represented.
Let b be the number of bits of the storage type and f the number of bits of the fraction. For f < b - 1 everything is fine:
using FixedPointNumbers, Unitful
julia> Fixed{Int8, 6}(1)
1.0Q1f6
julia> Fixed{Int8, 6}(1)u"m"
1.0Q1f6 m
However, for f >= b - 1 things start to break down when using units:
julia> Fixed{Int8, 7}(1)
"0.992188"
julia> Fixed{Int8, 7}(1)u"m"
ERROR: MethodError: no method matching *(::String, ::Unitful.FreeUnits{(m,), 𝐋, nothing})
The function `*` exists, but no method is defined for this combination of argument types.
Closest candidates are:
*(::Any, ::Any, ::Any, ::Any...)
@ Base operators.jl:642
*(::Missing, ::Unitful.Units)
@ Unitful ~/.julia/packages/Unitful/8Qjvg/src/units.jl:94
*(::LinRange, ::Unitful.Units)
@ Unitful ~/.julia/packages/Unitful/8Qjvg/src/range.jl:143
...
Stacktrace:
[1] top-level scope
@ REPL[86]:1
The reason seems to be the additional quotes which are printed for f = 7 instead of f = 6, as can be seen above or more clearly below
julia> sprint(show, Fixed{Int8, 6}(1))
"1.0Q1f6"
julia> sprint(show, Fixed{Int8, 7}(1))
"\"0.992188\""
- Lingua principale
- Julia
- Stelle
- 95
- Fork
- 38
- Merge medio
- 16h 31m
- PR unite (30g)
- 9
Preparare l'ambiente
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à 5/5 Più di una settimana Idoneità per principianti 35/100
JuliaMath/FixedPointNumbers.jl#343 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
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
-
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
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
`default_linear_interpolation` is called with its arguments swapped, so its opt-outs never applyAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
SciML/OrdinaryDiffEq.jl#4684 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
SciML/Evolutionary.jl#182 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
jmejia8/Metaheuristics.jl#130 ·