1 | #include <stdio.h>
|
---|
2 | #include <boost/multiprecision/cpp_bin_float.hpp>
|
---|
3 |
|
---|
4 |
|
---|
5 | typedef boost::multiprecision::number<boost::multiprecision::backends::cpp_bin_float<256> > ext_float_t;
|
---|
6 |
|
---|
7 | int main(int, char**) {
|
---|
8 | ext_float_t x = 5e15;
|
---|
9 | x += 0.5;
|
---|
10 | ext_float_t x1 = x + 255.0/(1<<20); // + 2^-12 - eps
|
---|
11 | ext_float_t x2 = x + 257.0/(1<<20); // + 2^-12 + eps
|
---|
12 | double d1 = x1.convert_to<double>();
|
---|
13 | double d2 = x2.convert_to<double>();
|
---|
14 | printf("%.1f\n%.1f\n%s\n", d1, d2, d1==d2 ? "good" : "bad");
|
---|
15 | return 0;
|
---|
16 | }
|
---|