Mercurial > imath
changeset 6:904ce4614770 draft default tip
Add imath.ino for testing
To run it, rename or delete main.c
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Thu, 22 Dec 2016 15:37:51 +0100 |
| parents | 48601e076cb7 |
| children | |
| files | imath.ino |
| diffstat | 1 files changed, 76 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imath.ino Thu Dec 22 15:37:51 2016 +0100 @@ -0,0 +1,76 @@ +extern "C" { + #include "imath.h" +} +#include <math.h> + +void setup() { + Serial.begin(115200); + + int16_t m = 1<<13; + float deg; + int16_t ideg; + + for (int16_t i = -m; i <= m; i += 1 << 10) { + float f = float(i) / m; + deg = degrees(asin(f)); + ideg = iasin(i); + + Serial.print("asin("); + Serial.print(f); + Serial.print(")="); + Serial.print(deg); + + Serial.print(" iasin("); + Serial.print(i); + Serial.print(")="); + Serial.print(ideg); + + Serial.print(" diff "); + Serial.println(deg - float(ideg)/10); + } + + for (int16_t i = 0; i <= m; i += 1 << 10) { + deg = sqrt(i); + ideg = isqrt(i); + Serial.print("sqrt("); + Serial.print(i); + Serial.print(")="); + Serial.print(deg); + + Serial.print(" isqrt("); + Serial.print(i); + Serial.print(")="); + Serial.print(ideg); + + Serial.print(" diff "); + Serial.println(deg - ideg); + } + + for (int16_t i = 0; i <= m; i += 1 << 10) { + for (int16_t j = 0; j <= m; j += 1 << 10) { + deg = degrees(atan2(i, j)); + ideg = iatan2(i, j); + + Serial.print("atan2("); + Serial.print(i); + Serial.print(", "); + Serial.print(j); + Serial.print(")="); + Serial.print(deg); + + Serial.print(" iatan2("); + Serial.print(i); + Serial.print(", "); + Serial.print(j); + Serial.print(")="); + Serial.print(ideg); + + Serial.print(" diff "); + Serial.println(deg - float(ideg)/10); + } + } +} + +void loop() { + delay(1000); +}
