math.h

math.h ist eine Header-Datei in der Standard C Library der Programmiersprache C. Sie wurde für mathematische Funktionen entwickelt. Die Programmiersprache C++ benutzt die Funktionen ebenfalls, um die Kompatibilität von C zu C++ zu gewährleisten, und deklariert sie in der Header-Datei cmath (dort ohne die Dateinamenserweiterung „.h“ verwendet).

Alle Funktionen, die einen Winkel einlesen oder ausgeben, arbeiten mit Radiant. Die meisten Funktionen arbeiten mit Gleitkommazahlen. Mathematische Funktionen, die mit ganzzahligen Werten (Integer) arbeiten, wie abv, labs, div oder ldiv, sind stattdessen in der Header-Datei stdlib.h vertreten.

Funktionen bis C95

In den Normen bis einschließlich C95 waren die folgenden Funktionen deklariert.

NameBeschreibungMathematische Formulierung
acosArkuskosinus
asinArkussinus
atanArkustangens
atan2„Arkustangens“ mit zwei Argumenten
ceilAufrundungsfunktion
cosKosinus
coshKosinus hyperbolicus
expExponentialfunktion
fabsBetragsfunktion
floorGanzteilfunktion
fmodFührt die Modulo-Funktion für Gleitkommazahlen durch
frexpTeilt eine Gleitkommazahl in Faktor und Potenz mit der Basis 2 auf
ldexpMultipliziert den ersten Parameter mit 2 um den zweiten Parameter potenziert
logNatürlicher Logarithmus
log10Logarithmus zur Basis 10
modfTeilt eine Gleitkommazahl in zwei Zahlen auf, vor und nach dem Komma
powPotenziert ersten mit dem zweiten Parameter
sinSinus
sinhSinus hyperbolicus
sqrtQuadratwurzel
tanTangens
tanhTangens hyperbolicus

C99-Funktionen

Mit der Norm C99 wurde math.h um die folgenden Funktionen erweitert.

NameBeschreibungMathematische Formulierung
acoshAreakosinus hyperbolicus
asinhAreasinus hyperbolicus
atanhAreatangens hyperbolicus
cbrtKubikwurzel
copysign(x,y)gibt den Wert von x mit dem Vorzeichen von y zurück
erfFehlerfunktion
erfcGibt den Komplementärfehler von x zurück
exp2(x)Potenziert 2 mit dem übergebenen Parameter
expm1(x)Liefert den Wert von exp()-1 zurück
fdim(x,y)Positive Differenz
fma(x,y,z)Multipliziert und Addiert
fmax(x,y)Maximum
fmin(x,y)Minimum
hypot(x,y)Hypotenuse
ilogbwie logb, gibt allerdings int zurück(int)logb(x)
lgammaLogarithmus der Gammafunktion
llrintRundungsfunktion
lrintRundungsfunktion
llroundRundungsfunktion
lroundRundungsfunktion
log1p(x)Natürlicher Logarithmus von 1 + x
log2Logarithmus zur Basis 2
logbLiefert den ganzzahligen Exponenten einer Gleitkommazahl als Gleitkommazahl
nan(s)Ein NaN erzeugen
nearbyintRundet Gleitkommazahlen zum nächsten Integer
nextafter(x,y)Gibt die nächst darstellbare Zahl nach x (Richtung y) zurück
nexttoward(x,y)Wie nextafter, außer dass y als long double übergeben wird
remainder(x,y)Rest einer Division
remquo(x,y,p)Genauso wie remainder, speichert jedoch den Quotienten (als int) als Ziel des Zeigers p
rintRundet je nach Rundungsmodus zum nächsten Integer, gibt eine Gleitkommazahl zurück
roundkaufmännische Rundungsfunktion
scalbln(x,y)x * FLT_RADIXy (y ist long)
scalbn(x,y)x * FLT_RADIXy (y ist int)
tgammaGammafunktion
truncBeschneidet eine Gleitkommazahl, d. h. rundet „Richtung Null“

Beispiel

#include <stdio.h>
#include <math.h>

int main() {
    double a = 5, b = 4;
    double c = pow(a, b);
    printf("%f hoch %f ist %f\n", a, b, c);
}