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:51uatu schrieb am 07.01.2015:Möglicherweise reicht Dir dieses Verfahren: http://netstorage.iar.com/SuppDB/Public/SUPPORT/000419/AN-G-002.pdf .Das ist mir tatsächlich erst jetzt aufgefallen. Ich muß leider meine Begeisterung über diese schnelle Wurzelfunktion zurücknehmen, die liefert ziemlich schräge Werte.
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.