cabs, cabsl
Nach oben zu Math.h - Index
Header-Datei
math.h
Kategorie
Mathematische Routinen
Prototyp
double cabs(struct complex z);
long double cabsl(struct _complexl z);
Beschreibung
cabs berechnet den Betrag einer komplexen Zahl. cabs ist ein Makro, das den Betrag der komplexen Zahl z berechnet. z ist eine Struktur vom Typ complex, die in math.h wie folgt definiert ist:
struct complex {
double x, y;
};
wobei x für den Realteil und y für den Imaginärteil steht.
Ein Aufruf von cabs ist gleichbedeutend mit folgendem Aufruf von sqrt mit dem Realteil und dem Imaginärteil von z:
sqrt(z.x * z.x + z.y * z.y)
cabsl ist die long double-Version; sie benötigt eine Struktur vom Typ _complexl als Argument und gibt als Ergebnis einen Wert vom Typ long double zurück. Die Struktur ist in math.h wie folgt definiert:
struct _complexl {
long double x, y;
};
Rückgabewert
cabs (bzw. cabsl) gibt den Betrag von z als Wert vom Typ double zurück. Wenn ein Überlauf auftritt gibt cabs (bzw. cabsl) HUGE_VAL (bzw. _LHUGE_VAL) zurück und weist der globalen Variablen errno folgenden Wert zu:
ERANGE |
Result out of range (Ergebnis außerhalb des zulässigen Wertebereichs) |
Die Fehlerbehandlung für diese Funktionen kann über die Funktionen _matherr und _matherrl geändert werden.
Beispiel
#include <stdio.h>
#include <math.h>
#ifdef __cplusplus
#include <complex.h>
#endif
#ifdef __cplusplus /* Wenn C++ verwendet wird, die Klasse complex verwenden */
void print_abs(void)
{
complex<float> z(1.0, 2.0);
double absval;
absval = abs(z);
printf("The absolute value of %.2lfi %.2lfj is %.2lf",
real(z), imag(z), absval);
}
#else /* nachfolgende Funktion gilt für C (nicht C++) */
void print_abs(void)
{
struct complex z;
double absval;
z.x = 2.0;
z.y = 1.0;
absval = cabs(z);
printf("The absolute value of %.2lfi %.2lfj is %.2lf",
z.x, z.y, absval);
}
#endif
int main(void)
{
print_abs();
return 0;
}
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
cabs |
+ |
|||
cabsl |
+ |