fcvcnet wrote:
Hi,
I got result 1.#QNAN00000000 and -1.#IND000000000 in my programme, what
happened?
why?
Thanks.
recently I had to do some experimentation with this stuff, here's some
code and the output
float pinf = std::numeric_limits<float>::infinity();
double dpinf = std::numeric_limits<double>::infinity();
float ninf = -std::numeric_limits<float>::infinity();
float zero = 0.0;
float NaN = std::numeric_limits<float>::quiet_NaN();
float nNaN = -std::numeric_limits<float>::quiet_NaN();
double dNaN = std::numeric_limits<double>::quiet_NaN();
float xNaN = static_cast<float>(dNaN);
std::cout << "+ve infinity " << pinf << "\n";
std::cout << "-ve infinity " << ninf << "\n";
std::cout << "+ve QNAN " << NaN << "\n";
std::cout << "+ve dQNAN " << dNaN << "\n";
std::cout << "+ve xQNAN " << xNaN << "\n";
std::cout << "-ve QNAN " << nNaN << "\n";
std::cout << "+inf = +inf " << (pinf == pinf) << "\n";
std::cout << "+inf <= +inf " << (pinf <= pinf) << "\n";
std::cout << "+inf = +dinf " << (pinf == dpinf) << "\n";
std::cout << "+inf = -inf " << (pinf == ninf) << "\n";
std::cout << "+inf / +inf " << pinf/pinf << "\n";
std::cout << "+inf / -inf " << pinf/ninf << "\n";
std::cout << "+inf / zero " << pinf/zero << "\n";
std::cout << "+inf * -inf " << pinf*ninf << "\n";
std::cout << "+inf + -inf " << pinf+ninf << "\n";
std::cout << "+inf + +inf " << pinf+pinf << "\n";
std::cout << "+inf - -inf " << pinf-ninf << "\n";
std::cout << "+inf - +inf " << pinf-pinf << "\n";
std::cout << "-inf - -inf " << ninf-ninf << "\n";
std::cout << "\n\n";
std::cout << "NaN = NaN " << (NaN == NaN) << "\n";
std::cout << "-NaN = -NaN " << (nNaN == nNaN) << "\n";
std::cout << "-NaN = NaN " << (nNaN == NaN) << "\n";
std::cout << "NaN = -NaN " << (NaN == nNaN) << "\n";
std::cout << "NaN = +inf " << (NaN == pinf) << "\n";
std::cout << "NaN = -inf " << (NaN == ninf) << "\n";
std::cout << "0 / zero " << 0/zero << "\n";
+ve infinity 1.#INF
-ve infinity -1.#INF
+ve QNAN 1.#QNAN
+ve dQNAN 1.#QNAN
+ve xQNAN 1.#QNAN
-ve QNAN -1.#IND
+inf = +inf 1
+inf <= +inf 1
+inf = +dinf 1
+inf = -inf 0
+inf / +inf -1.#IND
+inf / -inf -1.#IND
+inf / zero 1.#INF
+inf * -inf -1.#INF
+inf + -inf -1.#IND
+inf + +inf 1.#INF
+inf - -inf 1.#INF
+inf - +inf -1.#IND
-inf - -inf -1.#IND
NaN = NaN 0
-NaN = -NaN 0
-NaN = NaN 0
NaN = -NaN 0
NaN = +inf 0
NaN = -inf 0
0 / zero -1.#IND