Gast
#679422
Hallo Forum, da ich Zeitkritisch den Sinus berechnen muss (<200 Takte), habe ich mir überlegt den Sinus so zu implementieren: Was haltet ihr von dieser Methode?
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
-hub
|
Anzeige
|
Sinusfunktion in C gut implementiert?
Gast
#679422
Hallo Forum, da ich Zeitkritisch den Sinus berechnen muss (<200 Takte), habe ich mir überlegt den Sinus so zu implementieren: Was haltet ihr von dieser Methode?
-hub @ hubert (Gast) >da ich Zeitkritisch den Sinus berechnen muss (<200 Takte), >habe ich mir überlegt den Sinus so zu implementieren: >Was haltet ihr von dieser Methode? Gut, kann man aber noch auf 1/4 von 2*Pi reduzieren. Man hat dann halt 4 Fallunterscheidungen. MFG Falk
Gast
#679473
Wenn die Berechnung zeitkritisch ist, würde ich auf die Rekursion verzichten und die Unterteilung der Werte in die vier Quadranten explizit hinschreiben:
Oder natürlich, wenn genug Speicher da ist, die Tabelle so groß machen, dass sie alle vier Quadranten umfasst. @ yalu (Gast) >Wenn die Berechnung zeitkritisch ist, würde ich auf die Rekursion >verzichten und die Unterteilung der Werte in die vier Quadranten >explizit hinschreiben: Fast richtig. Aber bei dir dauert die Funktion für verschiedene Quadranten unterschiedlich lang. Besser so. Binärer Baum. [c] signed char sinus(unsigned char p){ if(p>AnzahlinTabelle*2) { if(p>AnzahlinTabelle*3) return -tabelle[AnzahlinTabelle*4-p]; else return -tabelle[p-AnzahlinTabelle*2]; } else { if(p>AnzahlinTabelle) return tabelle[AnzahlinTabelle*2-p]; else return tabelle[p]; } } [c] >Oder natürlich, wenn genug Speicher da ist, die Tabelle so groß >machen, dass sie alle vier Quadranten umfasst. Das kann ja jeder ;-) MFG Falk
Gast
#679512
Hast recht. Damit ist die Berechnung im worst Case eine Abfrage schneller. Hatte auch die Idee, aber erst, nachdem ich den Code schon getippt hatte ;-)
Gast
#679585
danke für die Antworten! inzwischen habe ich mich für die Tabellengröße 45 entschieden:
Das heißt also 180 entspricht dem Vollwinkel(360°). -hub AnzahlinTabelle würde ich aber drin lassen und als #define schreiben. Macht den Code einfach wiederverwendbar. MfG Falk Hi oder noch besser gleich mit sizeof arbeiten. Matthias Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|