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. 
 |