zaeld
Diskussionsleiter
Profil anzeigen
Private Nachricht
Link kopieren
Lesezeichen setzen
dabei seit 2010
Profil anzeigen
Private Nachricht
Link kopieren
Lesezeichen setzen
Streckenlänge ohne Wurzel berechnen
07.02.2015 um 19:51Das ist mir tatsächlich erst jetzt aufgefallen. Ich muß leider meine Begeisterung über diese schnelle Wurzelfunktion zurücknehmen, die liefert ziemlich schräge Werte.uatu schrieb am 07.01.2015:Möglicherweise reicht Dir dieses Verfahren: http://netstorage.iar.com/SuppDB/Public/SUPPORT/000419/AN-G-002.pdf .
Beispielsweise die Wurzel aus 9. Die Funktion rechnet daraus (Kommentare dahinter von mir):
unsigned int root(unsigned int x){ // x = 9
unsigned int a,b;
b = x; // b = 9
a = x = 0x3f; // a, x = 0x3f
x = b/x; // x = 9 / 0x3f = 0
a = x = (x+a)>>1; // a, x = 0x3f >> 1 = 0x1f
x = b/x; // x = 9 / 0x1f = 0
a = x = (x+a)>>1; // a, x = 0x1f >> 1 = 0x0f
x = b/x; // x = 9 / 0x0f = 0
x = (x+a)>>1; // x = 0x0f >> 1 = 0x07
return(x); // x = 7
Die Wurzel aus 9 ist also 7, aha... ok, der Fehler liegt nur bei 4, absolut gesehen also recht gering.
Naja, wollte ich nur noch kurz berichten.
Z.