User Tools

Site Tools


math_library

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
math_library [2022/04/29 23:34]
max [The relative method]
math_library [2022/05/01 18:38] (current)
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' memory. This is because of the [[https://en.wikipedia.org/wiki/IEEE_754|IEEE-754]] standard that is used to store the number. Floating-point numbers are almost always stored inaccurately in computers' memory. This is because of the [[https://en.wikipedia.org/wiki/IEEE_754|IEEE-754]] standard that is used to store the number.
  
-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 Impulse Physics offers to compare floating-point numbersvisit [[floating point comparison]].
-Since computers are exact in comparison by default, you can see how you can run into issues with this. +
- +
- +
-Impulse, therefore, offers two methods of float comparison by default.  +
-The default option is a combination of both the absolute and relative methods of epsilon comparison. ((http://www.realtimecollisiondetection.net/pubs/Tolerances/)) +
-The second option is simply the computer's default "==" operator. It is not recommended, but it is marginally faster.  +
- +
-==== 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 workbut it does not work on large values. +
- +
-==== The relative method ==== +
- +
-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://www.realtimecollisiondetection.net/pubs/Tolerances/|Christer Erison's research on this topic.]]+
math_library.1651275262.txt.gz · Last modified: 2022/04/29 23:34 by max