BigInteger Log10 can produce incorrect result
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 88/100
Direzione di ricerca
Inizia dalla posizione di BigInteger.cs collegata nell’issue e riproduci le chiamate generica e diretta a BigInteger.Log10 con BigInteger.Pow(10, 21306). Esamina il coefficiente utilizzato per la stima e verifica che la chiamata generica restituisca 21306 senza modificare il risultato corretto della chiamata diretta.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
BigInteger BigInteger.Log10 can produce an incorrect result for the IBinaryInteger<T> implementation. The coefficient 1292913986 / 2^32 is slightly below log10(2), so the estimate can be too small.
Reproduction Steps
using System;
using System.Numerics;
static T IntegerLog10<T>(T value) where T : IBinaryInteger<T> => T.Log10(value);
Console.WriteLine(IntegerLog10(BigInteger.Pow(10, 21306))); // Incorrect, prints 21305
Console.WriteLine(BigInteger.Log10(BigInteger.Pow(10, 21306))); // Correct, prints 21306
Expected behavior
Both should print 21306.
Actual behavior
The first invocation prints 21305, the second line is 21306.
Regression?
No, this API is new in .NET 11.
Known Workarounds
No response
Configuration
.NET SDK:
Version: 11.0.100-rc.1.26425.128
Commit: 3551975be0
Workload version: 11.0.100-manifests.a6e318ce
MSBuild version: 18.11.0-1.26425.128+3551975be
Runtime Environment:
OS Name: Mac OS X
OS Version: 27.0
OS Platform: Darwin
RID: osx-arm64
Base Path: /usr/local/share/dotnet/sdk/11.0.100-rc.1.26425.128
Other information
This appears to be off-by-one. https://github.com/dotnet/runtime/blob/0598ca0a45c1f29be94f889a1fc6e9b30c40ea64/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigInteger.cs#L3958
it should probably be 1292913987L not 1292913986L.
- Lingua principale
- C#
- Stelle
- 18.3k
- Fork
- 5.6k
- Merge medio
- 2g 17h
- PR unite (30g)
- 615
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 dotnet/runtime
-
area-Infrastructure-coreclr os-ios os-maccatalyst os-tvos untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
dotnet/runtime#134766 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
area-System.Linq untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
dotnet/runtime#134736 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
area-System.Numerics.Tensors untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
dotnet/runtime#134691 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
area-System.Threading blocking-clean-ci Known Build Error untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
dotnet/runtime#134679 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
ARM64: conditional compare rejects negative immediates the emitter can already encode as `ccmn`Apertaarea-CodeGen-coreclr performance
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
dotnet/runtime#134663 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di dotnet/runtime
Issue simili
-
area-ai untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
dotnet/extensions#7790 ·
I maintainer di solito rispondono entro 1 giorno
-
P2 testing
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
I maintainer di solito rispondono entro 1 giorno
-
0 - Backlog Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
BrighterCommand/Brighter#4444 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
area:frontend bug FE P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
klasolsson81/jobbliggaren#1915 ·
I maintainer di solito rispondono entro 1 giorno