1. Index
  2. Shell
  3. C
  4. POSIX
  5. JavaScript

Gleitpunkt-Arithmetik

Der Datentyp Float repräsentiert eine Teilmenge der Rationalen Zahlen. Da nicht alle Prozessoren eine FPU. besitzen, sind Funktionen für Gleitpunktzahlen in eine Bibliothek namens libm ausgelagert. Beim Binden von Programen, die darauf zugreifen, muss die Option -lm gesetzt werden.

float.h

#defineDBL_MIN Kleinster darstellbarer Wert
#defineDBL_MAX Größter darstellbarer Wert

math.h

double fabs (double x) Absolutwert
double copysign (double x, double y) fabs(x) und sgn(y)
double nan (const char * tagp) Nicht darstellbare Zahl
Vergleich
double fdim (double x, double y) Positive Differenz
double fmin (double x, double y) Kleinerer Wert
double fmax (double x, double y) Größerer Wert
Division
double fmod (double x, double y) Divisionsrest: x % y
double fma (double x, double y, double z) Schnelle Variante: x*y+z
double modf (double x, double * i) Nachkommastellen trennen
double remainder (double x, double y) Divisionsrest
double remquo (double x, double y, int * quo)…mit zusätzlichen Bits
Wurzelziehen
double sqrt (double x) Quadratwurzel
double cbrt (double x) Kubikwurzel
Trigonometrie
double [a]sin[h] (double x) (Arcus) Sinus (hyperbolicus)
double [a]cos[h] (double x) (Arcus) Cosinus (hyperbolicus)
double [a]tan[h] (double x) (Arcus) Tangens (hyperbolicus)
double atan2 (double y, double x) Arcus Tangens für 2 Variablen
double hypot (double x, double y) Hypothenuse: sqrt(x²+y²)
Exponent
double pow (double x, double n) Potenz: xn
double exp (double x) Natürlichen Exponent: ex
double exp2 (double x) Zweierpotenz: 2x
double expm1 (double x) Zweierpotenz Minus Eins: 2x-1
double ldexp (double x, int exp)
double frexp (double x, int * exp)
double scalbln (double x, long int n) x * 2n
Logarithmus
double log (double x) Natürlicher Logarithmus: ln(x)
double log10 (double x) Dezimaler Logarithmus: log10(x)
double log2 (double x) Binärer Logarithmus: log2(x)
double logb (double x) Exponent einer Gleitpunktzahl
double log1p (double x) Logartihmus plus Eins: log(x + 1)
int ilogb (double x)
Rundung
double floor (double x) Nächstgrößere Ganzzahl
double ceil (double x) Nächstkleinere Ganzzahl
double trunc (double x) Dezimalstellen Abschneiden
double round (double x) Rundung
double rint (double x)
long lround (double x)
long lrint (double x)
long longllround (long double x)
long longllrint (long double x)
double nearbyint (double x)
double nextafter (double x, double y) Nächste darstellbare Zahl in [x, y]
double nexttoward (double x, long double y)
Besondere-Funktionen
double erf (double x) Fehlerfunktion: 2/√π·∫0…x e(-t·t) dt
double erfc (double x) Komplementäre Fehlerfunktion
double tgamma (double x) Gammafunktion: 0…∞ t(x-1) e-t dt
double lgamma (double x) log(fabs(tgamma(x)))
extern intsigngam Vorzeichen der Gammafunktion
double j0 (double x) Bessel-Funktionen erster Art
double j1 (double x)
double jn (int n, double x)
double y0 (double x) Bessel-Funktionen zweiter Art
double y1 (double x)
double yn (int n, double x)
Klassifikations-Makros
int fpclassify (double x) Klassifikation
int signbit (double x) Vorzeichenbit gesetzt
int isnan (double x) Keine darstellbare Zahl
int isinf (double x) Unendlich große Zahl
int isnormal (double x) Keine besondere Zahl
int isfinite (double x) Endliche Zahl
int isgreater (double x, double y) x größer als y
int isgreaterequal (double x, double y) x größer oder gleich y
int isless (double x, double y) x kleiner als y
int islessequal (double x, double y) x kleiner oder gleich y
int islessgreater (double x, double y) x ungleich y
int isunordered (double x, double y) x oder y nicht darstellbar
FP_NAN Nicht darstellbar
FP_INFINITE Positiv oder negativ unendlich
FP_ZERO Null
FP_SUBNORMAL Zu klein zum Normalisieren
FP_NORMAL Nichts von den genannten

complex.h

Mit komplexen Zahlen rechnen. Die Funktionen gibt es auch in einer float- und long float-Variante.

#define I Imaginärzahl
#define complex _Complex Komplexer Zahlentyp mit Real- und Imaginärteil
double cimag (double complex z) Liefert Imaginärteil
double creal (double complex z) Liefert Realteil
double cabs (double complex z) Berechnet Abstand vom Ursprung
double carg (double complex z) Berechnet Phasenwinkel
double c[a]sin[h] (double complex z) Komplexer Sinus
double c[a]cos[h] (double complex z) Komplexer Kosinus
double c[a]tan[h] (double complex z) Komplexer Tangens
double complex conj (double complex z) Berechnet Konjugat
double complex cexp (double complex z) Komplexe Exponentialfunktion
double complex cpow (double complex x, double complex y)
double complex clog (double complex z) Berechnet komplexen natürlichen Logarithmus
double complex clog2 (double complex z) Berechnet komplexen binären Logarithmus
double complex clog10 (double complex z) Berechnet komplexen dezimalen Logarithmus
double complex csqrt (double complex x) Berechnet komplexe Quadratwurzel
double complex cproj (double complex z) Projiziert Punkt in die Riemannsche Zahlenkugel

fenv.h

Gleitkomma-Umgebung steuern

#pragma STD FENV_ACCESS OFF
#pragma STD FP_CONTRACT ON
#pragma STD CX_LIMITED_RANGE OFF
int fegetexcept (void)
int feenableexcept ( int excepts)
int fedisableexcept ( int excepts)
int feclearexcept ( int excepts)
int fegetexceptflag ( fexcept_t * flagp, int excepts)
int feraiseexcept ( int excepts)
int fesetexceptflag (const fexcept_t * flagp, int excepts)
int fetestexcept ( int excepts)
int feholdexcept ( fenv_t * envp)
int fesetenv (const fenv_t * envp)
int fegetenv ( fenv_t * envp)
int feupdateenv (const fenv_t * envp)
int fegetround (void)
int fesetround (int rounding_direction)

tgmath.h