22.3 Mathematische Funktionen – <math.h>
 
Häufig werden bei Berechnungen die Quadratwurzel, der Sinus, der Cosinus oder der Tangens einer Zahl benötigt. Damit Sie nicht jedes Mal eine neue Funktion schreiben müssen, wurde die Bibliothek <math.h> geschrieben. Sie beinhaltet viele nützliche mathematische Funktionen.
Hinweis (Anmerkung für Linux-User) Damit ein Programm die <math.h>-Bibliothek verwenden kann, muss diese erst mit dem Compilerflag -lm hinzugelinkt werden. Beispiel: gcc –o programm programm.c –lm
|
Hierzu ein Überblick über die Funktionen in der Headerdatei <math.h> und ihre Bedeutungen:
Tabelle 22.2
Mathematische Funktionen
Funktion
|
Beschreibung
|
double acos(double zahl)
|
Arcuscosinus
|
double asin(double zahl)
|
Arcussinus
|
double atan(double zahl)
|
Arcustangens
|
double atan2(double zahl1,
double zahl2)
|
Arcustangens von zahl1 und zahl2
|
double cos(double zahl)
|
Cosinus
|
double sin(double zahl)
|
Sinus
|
double tan(double zahl)
|
Tangens
|
double cosh(double zahl)
|
Cosinus hyperbolicus
|
double sinh(double zahl)
|
Sinus hyperbolicus
|
double tanh(double zahl)
|
Tangens hyperbolicus
|
double exp(double zahl)
|
Exponentialfunktion berechnen
|
double log(double zahl)
|
Logarithmus von zahl zur Basis e = 2.71828...
|
double log10(double zahl)
|
Logarithmus zur Basis 10
|
double sqrt(double zahl)
|
Quadratwurzel
|
double ceil(double zahl)
|
Gleitpunktzahl aufrunden
|
double fabs(double zahl)
|
Absolutwert
|
double floor(double zahl)
|
Gleitpunktzahl abrunden
|
double frexp(double zahl,
int zahl2)
|
Zerlegt zahl in eine Mantisse und einen ganzzahligen Exponenten
|
double modf(double1 zahl1,
double2 *zahl2)
|
Zerlegt den Wert von zahl1 in einen gebrochenen und einen ganzzahligen Wert. Der ganzzahlige Wert (Vorkommateil) befindet sich dann in der Adresse von zahl2.
|
double pow(double zahl1,
double zahl2)
|
Potenz zahl1zahl2
|
int fmod(double zahl1,
double zahl2)
|
float modulo errechnet den Rest von zahl1/zahl2
|
Es fällt außerdem auf, dass all diese Funktionen mit dem Typ double deklariert sind. Abhilfe schafft allerdings erst der ANSI C99-Standard. Dazu in ein paar Seiten mehr.
Diese Funktionen lassen sich einfach einsetzen, wie das folgende Beispiel zeigt:
/* mathematik.c */
#include <stdio.h>
#include <stdlib.h>
/* Bei Linux den Compilerflag –lm mit angeben */
#include <math.h>
int main(void) {
double i=5.5;
printf("Quadradwurzel von %f = %f\n",i,sqrt(i));
printf("Der Sinus von %f = %f\n",i,sin(i));
printf("Der Tangens von %f = %f\n",i,tan(i));
printf("Der Cosinus von %f = %f\n",i,cos(i));
printf("Der Absolute Wert von %f = %f\n",i,fabs(i));
return EXIT_SUCCESS;
}
Sollte der double-Wert nicht mehr richtig darstellbar sein, geben all diese Funktionen die Konstante HUGE_VAL zurück, die ebenfalls in der Headerdatei <math.h> deklariert ist.
|