diff options
Diffstat (limited to 'Client/ThirdParty/fpm/docs/accuracy.md')
-rw-r--r-- | Client/ThirdParty/fpm/docs/accuracy.md | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/Client/ThirdParty/fpm/docs/accuracy.md b/Client/ThirdParty/fpm/docs/accuracy.md new file mode 100644 index 0000000..8a9c462 --- /dev/null +++ b/Client/ThirdParty/fpm/docs/accuracy.md @@ -0,0 +1,36 @@ +# Accuracy + +The images below compare the accuracy (versus the real result) of: +* `fpm` (the `Q8.24` and `Q16.16` types) +* [libfixmath](https://github.com/PetteriAimonen/libfixmath) (`fix16`), an alternative C library. + +The accuracy of `Q24.8` was not shown since it was wildly inaccurate. It's advised to use at least 16 bits of fraction for reasonable accuracy for trigonometric operations (as in these tests). + +Plotted is the relative error (`(result - real) / real`). Closer to 0 is better. + +## Trigonometry functions + + + + +The results show that `fpm`'s trigonometric functions have better worst-case accuracy than `libfixmath`, although the latter has better overall accuracy except for certain domains where it has very large error. + +## Inverse trigonometry functions + + + + + +The results show that `fpm`'s inverse trigonometric functions have better accuracy then `libfixmath`. + +## Power functions + + + + + + + + + +The results show that for those power functions that `libfixmath` supports, `fpm` is less accurate. However, the relative error of all power functions is well below 0.1% in the tested cases, and even less some functions. |