Namespaces
Variants

fdim, fdimf, fdiml

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
fdim
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
Power functions
Trigonometric and hyperbolic functions
Nearest integer floating-point
(C99) (C99) (C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
Decimal re-encoding functions
Total order and payload functions
Classification
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Types
Macro constants
Special floating-point values
Arguments and return values
Error handling
Fast operation indicators
Definiert im 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 im Header <tgmath.h>
#define fdim( x, y )
(4) (seit C99)
1-3) Gibt die positive Differenz zwischen x und y zurück, das heißt, wenn x > y , wird x - y zurückgegeben, andernfalls (wenn x≤y ), wird +0 zurückgegeben.
4) Typgenerisches Makro: Wenn ein Argument den Typ long double hat, wird fdiml aufgerufen. Andernfalls, wenn ein Argument ganzzahligen Typ oder den Typ double hat, wird fdim aufgerufen. Andernfalls wird fdimf aufgerufen.

Inhaltsverzeichnis

Parameter

x, y - Fließkommawert

Rückgabewert

Bei Erfolg wird die positive Differenz zwischen x und y zurückgegeben.

Wenn ein Bereichsfehler aufgrund von Überlauf auftritt, +HUGE_VAL , +HUGE_VALF , oder +HUGE_VALL wird zurückgegeben.

Wenn ein Bereichsfehler aufgrund von Unterlauf auftritt, wird der korrekte Wert (nach Rundung) zurückgegeben.

Fehlerbehandlung

Fehler werden gemäß den Vorgaben in Template:rllpt gemeldet.

Wenn die Implementierung IEEE-Gleitkommaarithmetik (IEC 60559) unterstützt,

  • Wenn eines der Argumente NaN ist, wird NaN zurückgegeben.

Hinweise

Entspricht fmax ( x - y, 0 ) mit Ausnahme der NaN-Behandlungsanforderungen.

Beispiel

#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

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.12.12.1 Die fdim-Funktionen (S: TBD)
  • 7.25 Typgenerische Mathematik <tgmath.h> (S: TBD)
  • F.10.9.1 Die fdim-Funktionen (S: TBD)
  • C17-Standard (ISO/IEC 9899:2018):
  • 7.12.12.1 Die fdim-Funktionen (S. 187-188)
  • 7.25 Typgenerische Mathematik <tgmath.h> (S. 272-273)
  • F.10.9.1 Die fdim-Funktionen (S. 386)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.12.12.1 Die fdim-Funktionen (S. 257)
  • 7.25 Typgenerische Mathematik <tgmath.h> (S. 373-375)
  • F.10.9.1 Die fdim-Funktionen (S. 530)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.12.12.1 Die fdim-Funktionen (S. 238)
  • 7.22 Typgenerische Mathematik <tgmath.h> (S. 335-337)
  • F.9.9.1 Die fdim-Funktionen (S. 466)

Siehe auch

berechnet den absoluten Wert eines ganzzahligen Wertes ( |x| )
(Funktion)
(C99) (C99) (C99)
bestimmt den größeren von zwei Gleitkommawerten
(Funktion)