This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
math_library [2022/04/29 23:34] max [Float comparison] - added our method |
math_library [2022/05/01 18:38] max |
||
---|---|---|---|
Line 10: | Line 10: | ||
* [[2D Vector]] | * [[2D Vector]] | ||
* [[3D Vector]] | * [[3D Vector]] | ||
- | * [[4D Vector]] | ||
===== Float comparison ===== | ===== Float comparison ===== | ||
Line 16: | Line 15: | ||
Floating-point numbers are almost always stored inaccurately in computers' | Floating-point numbers are almost always stored inaccurately in computers' | ||
- | It also means that for example, 0.2 + 0.1 is not equal to 0.3; rather it is equal to 0.30000000000000004. | + | To learn which methods |
- | Since computers are exact in comparison by default, you can see how you can run into issues with this. | + | |
- | + | ||
- | + | ||
- | Impulse, therefore, | + | |
- | The default option is a combination of both the absolute and relative methods of epsilon comparison. ((http:// | + | |
- | The second option is simply the computer' | + | |
- | + | ||
- | ==== The absolute method ==== | + | |
- | + | ||
- | The absolute method takes the absolute value of x - y, then checks if they are less than or equal to the FLT_EPSILON preprocessor definition. ((1.192092896e-07F)) | + | |
- | + | ||
- | The absolute method will work, but it does not work on large values. | + | |
- | + | ||
- | ==== The relative method ==== | + | |
- | + | ||
- | (Abs(x – y) <= EPSILON * Max(Abs(x), Abs(y)) | + | |
- | + | ||
- | The relative method takes the result of the absolute method and multiplies the epsilon by x or y, depending on which is larger. | + | |
- | + | ||
- | The drawback to this method is that it does not work on small values. | + | |
- | + | ||
- | ==== The combined method ==== | + | |
- | + | ||
- | Considering the strengths and drawbacks of the two methods above, you can combine the two to overcome these limitations. | + | |
- | + | ||
- | The combined method takes the result of the absolute method and multiplies it by the largest absolute number out of a set of 1, x, or y. Very similar to the relative method. | + | |
- | + | ||
- | This method gives us good results, but it is not without its drawbacks since it uses the same epsilon for the relative and the absolute tolerance. | + | |
- | + | ||
- | For further reading, please check out [[http:// | + |