mirror of
https://github.com/fastfloat/fast_float.git
synced 2025-12-06 16:56:57 +08:00
More elaborate.
This commit is contained in:
parent
c0b5ffe54c
commit
2e1d8ba899
@ -57,6 +57,7 @@ void allvalues() {
|
|||||||
memcpy(&v, &word, sizeof(v));
|
memcpy(&v, &word, sizeof(v));
|
||||||
if(std::isfinite(v)) {
|
if(std::isfinite(v)) {
|
||||||
float nextf = std::nextafterf(v, INFINITY);
|
float nextf = std::nextafterf(v, INFINITY);
|
||||||
|
if(copysign(1,v) != copysign(1,nextf)) { continue; }
|
||||||
if(!std::isfinite(nextf)) { continue; }
|
if(!std::isfinite(nextf)) { continue; }
|
||||||
double v1{v};
|
double v1{v};
|
||||||
assert(float(v1) == v);
|
assert(float(v1) == v);
|
||||||
@ -77,16 +78,28 @@ void allvalues() {
|
|||||||
}
|
}
|
||||||
if(copysign(1,result_value) != copysign(1,v)) {
|
if(copysign(1,result_value) != copysign(1,v)) {
|
||||||
std::cerr << buffer << std::endl;
|
std::cerr << buffer << std::endl;
|
||||||
|
std::cerr << "v " << std::hexfloat << v << std::endl;
|
||||||
|
std::cerr << "v2 " << std::hexfloat << v2 << std::endl;
|
||||||
|
std::cerr << "midv " << std::hexfloat << midv << std::endl;
|
||||||
|
std::cerr << "expected_midv " << std::hexfloat << expected_midv << std::endl;
|
||||||
std::cerr << "I got " << std::hexfloat << result_value << " but I was expecting " << v
|
std::cerr << "I got " << std::hexfloat << result_value << " but I was expecting " << v
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
abort();
|
abort();
|
||||||
} else if (std::isnan(v)) {
|
} else if (std::isnan(v)) {
|
||||||
if (!std::isnan(result_value)) {
|
if (!std::isnan(result_value)) {
|
||||||
std::cerr << "not nan" << buffer << std::endl;
|
std::cerr << "not nan" << buffer << std::endl;
|
||||||
|
std::cerr << "v " << std::hexfloat << v << std::endl;
|
||||||
|
std::cerr << "v2 " << std::hexfloat << v2 << std::endl;
|
||||||
|
std::cerr << "midv " << std::hexfloat << midv << std::endl;
|
||||||
|
std::cerr << "expected_midv " << std::hexfloat << expected_midv << std::endl;
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
} else if (result_value != str_answer) {
|
} else if (result_value != str_answer) {
|
||||||
std::cerr << "no match ? " << buffer << std::endl;
|
std::cerr << "no match ? " << buffer << std::endl;
|
||||||
|
std::cerr << "v " << std::hexfloat << v << std::endl;
|
||||||
|
std::cerr << "v2 " << std::hexfloat << v2 << std::endl;
|
||||||
|
std::cerr << "midv " << std::hexfloat << midv << std::endl;
|
||||||
|
std::cerr << "expected_midv " << std::hexfloat << expected_midv << std::endl;
|
||||||
std::cout << "started with " << std::hexfloat << midv << std::endl;
|
std::cout << "started with " << std::hexfloat << midv << std::endl;
|
||||||
std::cout << "round down to " << std::hexfloat << str_answer << std::endl;
|
std::cout << "round down to " << std::hexfloat << str_answer << std::endl;
|
||||||
std::cout << "got back " << std::hexfloat << result_value << std::endl;
|
std::cout << "got back " << std::hexfloat << result_value << std::endl;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user