01: #include <iostream>
02: #include <algorithm>
03: using namespace std;
04: /**
05: Tests whether two floating-point numbers are
06: approximately equal.
07: @param x a floating-point number
08: @param y another floating-point number
09: @return true if x and y are approximately equal
10: */
11: bool approx_equal(double x, double y)
12: { const double EPSILON = 1E-14;
13: if (x == 0) return fabs(y) <= EPSILON;
14: if (y == 0) return fabs(x) <= EPSILON;
15: return fabs(x - y) / max(fabs(x), fabs(y)) <= EPSILON;
16: }
17:
18: int main()
19: { double x;
20: cout << "Enter a number: ";
21: cin >> x;
22:
23: double y;
24: cout << "Enter another number: ";
25: cin >> y;
26:
27: if (approx_equal(x, y))
28: cout << "The numbers are approximately equal.\n";
29: else
30: cout << "The numbers are different.\n";
31: return 0;
32: }