fdim, fdimf, fdiml
Von cppreference.com
| Definiert in Header <math.h> |
||
| float fdimf( float x, float y ); |
(1) | (seit C99) |
| double fdim( double x, double y ); |
(2) | (seit C99) |
| long double fdiml( long double x, long double y ); |
(3) | (seit C99) |
| Definiert in Header <tgmath.h> |
||
| #define fdim( x, y ) |
(4) | (seit C99) |
1-3) Gibt die positive Differenz zwischen x und y zurück, d.h. wenn x>y, wird x-y zurückgegeben, andernfalls (wenn x≤y) wird +0 zurückgegeben.
4) Typ-generischer Makro: Wenn ein Argument den Typ long double hat, wird
fdiml aufgerufen. Andernfalls, wenn ein Argument einen Ganzzahltyp oder den Typ double hat, wird fdim aufgerufen. Andernfalls wird fdimf aufgerufen.Inhalt |
[bearbeiten] Parameter
| x, y | - | Gleitkommawert |
[bearbeiten] Rückgabewert
Bei Erfolg wird die positive Differenz zwischen x und y zurückgegeben.
Wenn ein Bereichsfehler aufgrund von Überlauf auftritt, wird +HUGE_VAL, +HUGE_VALF oder +HUGE_VALL zurückgegeben.
Wenn ein Bereichsfehler aufgrund von Unterlauf auftritt, wird der korrekte Wert (nach Rundung) zurückgegeben.
[bearbeiten] Fehlerbehandlung
Fehler werden wie in Template:rllpt angegeben gemeldet.
Wenn die Implementierung IEEE-Gleitkomma-Arithmetik (IEC 60559) unterstützt,
- Wenn eines der Argumente NaN ist, wird NaN zurückgegeben.
[bearbeiten] Hinweise
Äquivalent zu fmax(x-y, 0), mit Ausnahme der NaN-Handlungsanforderungen.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <errno.h> #include <fenv.h> #include <math.h> #include <stdio.h> // #pragma STDC FENV_ACCESS ON int main(void) { printf("fdim(4, 1) = %f, fdim(1, 4)=%f\n", fdim(4,1), fdim(1,4)); printf("fdim(4,-1) = %f, fdim(1,-4)=%f\n", fdim(4,-1), fdim(1,-4)); //error handling errno = 0; feclearexcept(FE_ALL_EXCEPT); printf("fdim(1e308, -1e308) = %f\n", fdim(1e308, -1e308)); if (errno == ERANGE) perror(" errno == ERANGE"); if (fetestexcept(FE_OVERFLOW)) puts(" FE_OVERFLOW raised"); }
Mögliche Ausgabe
fdim(4, 1) = 3.000000, fdim(1, 4)=0.000000
fdim(4,-1) = 5.000000, fdim(1,-4)=5.000000
fdim(1e308, -1e308) = inf
errno == ERANGE: Numerical result out of range
FE_OVERFLOW raised[bearbeiten] Referenzen
- C23-Standard (ISO/IEC 9899:2024)
- 7.12.12.1 The fdim functions (p: TBD)
- 7.25 Typ-generische Mathematik <tgmath.h> (S. TBD)
- F.10.9.1 The fdim functions (p: TBD)
- C17-Standard (ISO/IEC 9899:2018)
- 7.12.12.1 The fdim functions (p: 187-188)
- 7.25 Typ-generische Mathematik <tgmath.h> (S. 272-273)
- F.10.9.1 The fdim functions (p: 386)
- C11-Standard (ISO/IEC 9899:2011)
- 7.12.12.1 The fdim functions (p: 257)
- 7.25 Typ-generische Mathematik <tgmath.h> (S. 373-375)
- F.10.9.1 The fdim functions (p: 530)
- C99-Standard (ISO/IEC 9899:1999)
- 7.12.12.1 The fdim functions (p: 238)
- 7.22 Typ-generische Mathematik <tgmath.h> (S. 335-337)
- F.9.9.1 The fdim functions (p: 466)
[bearbeiten] Siehe auch
| (C99) |
berechnet den Absolutwert eines ganzzahligen Wertes (|x|) (Funktion) |
| (C99)(C99)(C99) |
ermittelt den größeren von zwei Gleitkommawerten (Funktion) |
| C++-Dokumentation für fdim
| |