#include "libcpp.h" using namespace liberr; using namespace libcpp; using namespace std; /* The following is in "tools.h", which is included in "libcpp.h" inline bool IsFinite(REAL x) { return (x == x) && (x < REAL_MAX) && (x > -REAL_MAX); } */ int main(int argc, char** argp, char** envp) { REAL x,y,z,v,r,s; v = 1.0; y = 0.0; r = 1.0; s = 1.0; z = sqrt(r) - sqrt(s); z = fabs(z); x=y/z; cout << '\n'; cout << " COMPUTED VALUE CORRECT VALUE\n"; cout << '\n'; cout << " x =" << fmt('f',9,6,x) << " x = NaN" << '\n'; cout << " v =" << fmt('f',9,6,v) << " v = 1.00000" << '\n'; cout << '\n'; cout << " IsFinite(x) = " << IsFinite(x) << " IsFinite(x) = F" << '\n'; cout << '\n'; cout << " (x == v) = " << (x == v) << " (x == v) = F" << '\n'; cout << " (x < v) = " << (x < v) << " (x < v) = F" << '\n'; cout << " (x <= v) = " << (x <= v) << " (x <= v) = F"<< '\n'; cout << " (x > v) = " << (x > v) << " (x > v) = F" << '\n'; cout << " (x >= v) = " << (x >= v) << " (x >= v) = F" << '\n'; cout << " (x != v) = " << (x != v) << " (x != v) = T" << '\n'; cout << '\n'; cout << " (x == x) = " << (x == x) << " (x == x) = F" << '\n'; cout << " (x < x) = " << (x < x) << " (x < x) = F" << '\n'; cout << " (x <= x) = " << (x <= x) << " (x <= x) = F" << '\n'; cout << " (x > x) = " << (x > x) << " (x > x) = F" << '\n'; cout << " (x >= x) = " << (x >= x) << " (x >= x) = F" << '\n'; cout << " (x != x) = " << (x != x) << " (x != x) = T" << '\n'; x=-x; cout << '\n'; cout << " x =" << fmt('f',9,6,x) << " x = -NaN" << '\n'; cout << " v =" << fmt('f',9,6,v) << " v = 1.00000" << '\n'; cout << '\n'; cout << " IsFinite(x) = " << IsFinite(x) << " IsFinite(x) = F" << '\n'; cout << '\n'; cout << " (x == v) = " << (x == v) << " (x == v) = F" << '\n'; cout << " (x < v) = " << (x < v) << " (x < v) = F" << '\n'; cout << " (x <= v) = " << (x <= v) << " (x <= v) = F"<< '\n'; cout << " (x > v) = " << (x > v) << " (x > v) = F" << '\n'; cout << " (x >= v) = " << (x >= v) << " (x >= v) = F" << '\n'; cout << " (x != v) = " << (x != v) << " (x != v) = T" << '\n'; cout << '\n'; cout << " (x == x) = " << (x == x) << " (x == x) = F" << '\n'; cout << " (x < x) = " << (x < x) << " (x < x) = F" << '\n'; cout << " (x <= x) = " << (x <= x) << " (x <= x) = F" << '\n'; cout << " (x > x) = " << (x > x) << " (x > x) = F" << '\n'; cout << " (x >= x) = " << (x >= x) << " (x >= x) = F" << '\n'; cout << " (x != x) = " << (x != x) << " (x != x) = T" << '\n'; cout << '\n'; x = exp(REAL_MAX); cout << " x =" << fmt('f',9,6,x) << " x = Inf" << '\n'; cout << '\n'; cout << " IsFinite(x) = " << IsFinite(x) << " IsFinite(x) = F" << '\n'; cout << '\n'; cout << " (x == x) = " << (x == x) << " (x == x) = T" << '\n'; cout << " (x != x) = " << (x != x) << " (x != x) = F" << '\n'; cout << " (xREAL_MAX)=" << (x>REAL_MAX) << " (x>REAL_MAX)=T" << '\n'; x = -exp(REAL_MAX); cout << '\n'; cout << " x =" << fmt('f',9,6,x) << " x = -Inf" << '\n'; cout << '\n'; cout << " IsFinite(x) = " << IsFinite(x) << " IsFinite(x) = F" << '\n'; cout << '\n'; cout << " (x == x) = " << (x == x) << " (x == x) = T" << '\n'; cout << " (x != x) = " << (x != x) << " (x != x) = F" << '\n'; cout << " (x<-REAL_MAX)=" << (x<-REAL_MAX) << " (x<-REAL_MAX)=T" << '\n'; cout << " (x>-REAL_MAX)=" << (x>-REAL_MAX) << " (x>-REAL_MAX)=F" << '\n'; return 0; }