boost::numeric::interval constructor seems not creating an interval enclosing its arguments
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện các ví dụ với boost/numeric/interval.hpp, Boost 1.85.0 và -frounding-math, sau đó so sánh hành vi của constructor và += với tài liệu về interval. Xác định xem các cận quan sát được có khớp với các bảo đảm về làm tròn được ghi trong tài liệu hay không, đồng thời xác định các test hiện có nào bao phủ những trường hợp này. Được xem là hoàn tất khi hành vi đã được giải thích và mọi thay đổi cần thiết đối với implementation hoặc tài liệu đều được bao phủ bởi các test.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
In the document of boost interval https://www.boost.org/doc/libs/1_86_0/libs/numeric/interval/doc/interval.htm#interval
If the interval constructor has only one argument, "The constructors create an interval enclosing their arguments."
But in the following code, seems not working like this, it just sets interval's upper and lower bounds as the same value of my input. This is NOT what we expect for interval arithmetic, since the input may not be precisely stored in a computer.
#include <iostream>
#include <boost/numeric/interval.hpp>
using namespace std;
int main() {
cout << setprecision(20);
boost::numeric::interval<double> I = boost::numeric::interval<double>(0.1);
cout << I.upper() << endl; // print: 0.10000000000000000555
cout << I.lower() << endl; // print: 0.10000000000000000555
}
another strange thing is when I add a double number, sometimes it gives the desired bound, but sometimes NOT! See below, adding 0.1 to the interval and adding 1.1 to the interval gives different type of the result. adding 1.1 gives the desired result.
#include <iostream>
#include <boost/numeric/interval.hpp>
using namespace std;
int main() {
cout << setprecision(20);
boost::numeric::interval<double> I = boost::numeric::interval<double>(0.1);
I += 0.1 // add 0.1
cout << I.upper() << endl; // print: 0.2000000000000000111
cout << I.lower() << endl; // print: 0.2000000000000000111
}
#include <iostream>
#include <boost/numeric/interval.hpp>
using namespace std;
int main() {
cout << setprecision(20);
boost::numeric::interval<double> I = boost::numeric::interval<double>(0.1);
I += 1.1 // add 1.1
cout << I.upper() << endl; // print: 1.2000000000000001776
cout << I.lower() << endl; // print: 1.1999999999999999556
}
When compiling I add -frounding-math, and the boost version is v1.85.0.
- Ngôn ngữ chính
- C++
- Star
- 31
- Fork
- 49
- Merge trung bình
- 2 ngày 2 giờ
- Pull request đã merge (30 ngày)
- 3
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
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 boostorg/interval
-
Emscripten compilation issueĐang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 10/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 45/100
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
Tất cả issue của boostorg/interval
Issue tương tự
-
needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
flashinfer-ai/flashinfer#6212 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug graphics
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
FlaxEngine/FlaxEngine#4295 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
Algorithmiq/monoprop#390 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
docs
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày
-
8-membered-ring atrop stereo lost in 2026.09.1Có thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởbug
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 86/100
Maintainer thường phản hồi trong vòng 2 ngày