BigInteger Log10 can produce incorrect result
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 88/100
Hướng nghiên cứu
Bắt đầu tại vị trí BigInteger.cs được liên kết trong issue và tái hiện các lệnh gọi generic và trực tiếp đến BigInteger.Log10 với BigInteger.Pow(10, 21306). Kiểm tra hệ số được sử dụng cho phép ước tính và xác minh rằng lệnh gọi generic trả về 21306 mà không thay đổi kết quả chính xác của lệnh gọi trực tiếp.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- C#
- Star
- 18.3k
- Fork
- 5.6k
- Merge trung bình
- 2 ngày 17 giờ
- Pull request đã merge (30 ngày)
- 615
Chuẩn bị môi trường
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của dotnet/runtime
-
area-Infrastructure-coreclr os-ios os-maccatalyst os-tvos untriaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
dotnet/runtime#134766 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area-System.Linq untriaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
dotnet/runtime#134736 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area-System.Numerics.Tensors untriaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
dotnet/runtime#134691 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area-System.Threading blocking-clean-ci Known Build Error untriaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
dotnet/runtime#134679 · 4 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
ARM64: conditional compare rejects negative immediates the emitter can already encode as `ccmn`Đang mởarea-CodeGen-coreclr performance
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
dotnet/runtime#134663 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của dotnet/runtime
Issue tương tự
-
area-ai untriaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
dotnet/extensions#7790 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
P2 testing
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
Maintainer thường phản hồi trong vòng 1 ngày
-
0 - Backlog Bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
BrighterCommand/Brighter#4444 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày
-
area:frontend bug FE P3
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
klasolsson81/jobbliggaren#1915 ·
Maintainer thường phản hồi trong vòng 1 ngày