So meine Quadratwurzel ist fertig.
Hab mir ein Iteratives VErfahren ausgedacht, dass nach dem Prinzip der Annäherung durch Intervallhalbierung funktioniert.
dadurch konnte ich folgende verbesserung erziehlen:
400000/232000 Berechnung der Gelenkwinkel IK (72% schneller)
hat jemand von euch eine Idee wie man die Arkus Winkelfunktionen Approximieren kann? In Festkomma Arithmetik...
mfg WarChildCode:uint16_t sqroot(unsigned long number) // O(n)=log_2(n) Max Abweichung meistens 0 oder 1, selten 2 bzw. 0.1% für große zahlen { if(number==0) return 0; //triviale Fälle abfangen if(number==1) return 1; unsigned long r2; uint16_t root=0,delta; if(number>16777216UL) //falls die Zahl größer als eine 24 Bit Zahl ist delta=(number>>16); else if(number>64536) //falls die Zahl größer als eine 16 Bit Zahl ist delta=(number>>8); //günstigeren Anfangspunkt Wählen --> führt zu leichter Unschärfe 0.1% else delta=(number>>1); //sonst beginn bei der Zahl selbst while (delta) //sollte innerhalb von 16 Iterationen eine Lösung liefern { r2=(unsigned long)root*root; if(r2>number) root-=delta; else root+=delta; delta=(delta>>1); } return (uint16_t)root; }







Zitieren
Lesezeichen