make_trig_tab - Tool zum Erzeugen von Tabellen (C-Arrays) für trigonometrische Funktionen

Beschreibung

Die Berechnung von trigonometrischen Funktionen wie zum Beispiel Sinus oder Cosinus kann zeitaufwendig sein oder die Nutzung von großen Bibliotheken notwendig machen. Das Tool make_trig_tab ermöglicht die Erstellung von Look-up-Tabellen mit bereits vorberechneten Werten beliebiger Anzahl und Auflösung. Das Tool gibt diese Tabellen in Form von C-Arrays aus, die direkt in den Quelltext der eigenen Software übernommen werden können und die ganze Zahlen enthalten (für die Verwendung von Festkommarithmetik).

Quellen

Installation

Das Tool sollte unter UNIX- und auch Windows-Systemen kompilierbar und ausführbar sein. Die Nutzung des Makefiles setzt das Vorhandensein des gcc-Compilers voraus. Prinzipiell sollte jeder andere C-Compiler aber auch in der Lage sein, die Quellen zu übersetzen.

Die Quellen sind mittels

tar -xzf make_trig_tab_0.20.tgz

zu entpacken. Bei Vorhandensein des gcc-Compilers ist dann im entpackten Verzeichnis einfach

make

aufzurufen. Die ausführbare Datei landet im Verzeichnis "bin".

Beispiel

Die Ausgabe aller nutzbaren Optionen zeigt das Tool nach der Eingabe von

./make_trig_tab -h

an. Falls nun eine Tabelle mit Ausgaben der sin()-Funktion mit 360 Werten und dem Faktor 1000 (entspricht der Auflösung aufgrund der Nutzung ganzer Zahlen in der Tabelle) in der Datei outputfile.h angelegt werden soll, ist folgendes einzugeben:

./make_trig_tab -t sin -m 360 -f 1000 outputfile.h

Ein Blick in die Datei outputfile.h zeigt dann die Ausgabe des Tools:

////////////////////////////////////////////////////////////////
// AUTOMATICALLY GENERATED FILE                               //
// generated by: make_trig_tab                                //
// generated at: 14.03.2010, 00:44:03                         //
////////////////////////////////////////////////////////////////



//Used Parameter for Tab:
//Function: SINUS
//Points: 360
//Factor: 1000

sin_tab[360] = {
   0, 17, 34, 52, 69, 87, 104, 121, 139, 156, 173,
   190, 207, 224, 241, 258, 275, 292, 309, 325, 342, 358,
   374, 390, 406, 422, 438, 453, 469, 484, 500, 515, 529,
   544, 559, 573, 587, 601, 615, 629, 642, 656, 669, 681,
   694, 707, 719, 731, 743, 754, 766, 777, 788, 798, 809,
   819, 829, 838, 848, 857, 866, 874, 882, 891, 898, 906,
   913, 920, 927, 933, 939, 945, 951, 956, 961, 965, 970,
   974, 978, 981, 984, 987, 990, 992, 994, 996, 997, 998,
   999, 999, 1000, 999, 999, 998, 997, 996, 994, 992, 990,
   987, 984, 981, 978, 974, 970, 965, 961, 956, 951, 945,
   939, 933, 927, 920, 913, 906, 898, 891, 882, 874, 866,
   857, 848, 838, 829, 819, 809, 798, 788, 777, 766, 754,
   743, 731, 719, 707, 694, 681, 669, 656, 642, 629, 615,
   601, 587, 573, 559, 544, 529, 515, 499, 484, 469, 453,
   438, 422, 406, 390, 374, 358, 342, 325, 309, 292, 275,
   258, 241, 224, 207, 190, 173, 156, 139, 121, 104, 87,
   69, 52, 34, 17, 0, -17, -34, -52, -69, -87, -104,
   -121, -139, -156, -173, -190, -207, -224, -241, -258, -275, -292,
   -309, -325, -342, -358, -374, -390, -406, -422, -438, -453, -469,
   -484, -500, -515, -529, -544, -559, -573, -587, -601, -615, -629,
   -642, -656, -669, -681, -694, -707, -719, -731, -743, -754, -766,
   -777, -788, -798, -809, -819, -829, -838, -848, -857, -866, -874,
   -882, -891, -898, -906, -913, -920, -927, -933, -939, -945, -951,
   -956, -961, -965, -970, -974, -978, -981, -984, -987, -990, -992,
   -994, -996, -997, -998, -999, -999, -1000, -999, -999, -998, -997,
   -996, -994, -992, -990, -987, -984, -981, -978, -974, -970, -965,
   -961, -956, -951, -945, -939, -933, -927, -920, -913, -906, -898,
   -891, -882, -874, -866, -857, -848, -838, -829, -819, -809, -798,
   -788, -777, -766, -754, -743, -731, -719, -707, -694, -681, -669,
   -656, -642, -629, -615, -601, -587, -573, -559, -544, -529, -515,
   -499, -484, -469, -453, -438, -422, -406, -390, -374, -358, -342,
   -325, -309, -292, -275, -258, -241, -224, -207, -190, -173, -156,
   -139, -121, -104, -87, -69, -52, -34, -17
};

Fehlerquellen

Folgende Punkte sind bei der Erstellung von Lookup-Tabellen zu beachten:

Lizenz

Alle hier veröffentlichten Quellen stehen unter der GPLv3.

Versionsinfo

Anregungen oder weitere Informationen

Für Anregungen oder die Beantwortung von Fragen zum Projekt steht ein Forum zur Verfügung.