Namespaces
Variants

cprojf, cproj, cprojl

From cppreference.net
Definiert im Header <complex.h>
float complex cprojf ( float complex z ) ;
(1) (seit C99)
double complex cproj ( double complex z ) ;
(2) (seit C99)
long double complex cprojl ( long double complex z ) ;
(3) (seit C99)
Definiert im Header <tgmath.h>
#define cproj( z )
(4) (seit C99)
1-3) Berechnet die Projektion von z auf die Riemannsche Zahlenkugel.
4) Typgenerisches Makro: Wenn z den Typ long double complex , long double imaginary oder long double hat, wird cprojl aufgerufen. Wenn z den Typ float complex , float imaginary oder float hat, wird cprojf aufgerufen. Wenn z den Typ double complex , double imaginary , double oder einen beliebigen Ganzzahltyp hat, wird cproj aufgerufen.

Für die meisten z gilt cproj ( z ) == z , aber alle komplexen Unendlichkeiten, selbst Zahlen mit einer unendlichen Komponente und NaN in der anderen, werden zu positiver reeller Unendlichkeit, INFINITY + 0.0 * I oder INFINITY - 0.0 * I . Das Vorzeichen der imaginären (Null-)Komponente entspricht dem Vorzeichen von cimag ( z ) .

Inhaltsverzeichnis

Parameter

z - komplexes Argument

Rückgabewert

Die Projektion von z auf die Riemannsche Zahlenkugel.

Diese Funktion ist für alle möglichen Eingaben vollständig spezifiziert und unterliegt keinen der in math_errhandling beschriebenen Fehler.

Hinweise

Die cproj -Funktion hilft bei der Modellierung der Riemannschen Zahlenkugel, indem sie alle Unendlichkeiten auf eins abbildet (bis auf das Vorzeichen der imaginären Null), und sollte unmittelbar vor jeder Operation verwendet werden, insbesondere bei Vergleichen, die für andere Unendlichkeiten fehlerhafte Ergebnisse liefern könnten.

Beispiel

#include <stdio.h>
#include <complex.h>
#include <math.h>
int main(void)
{
    double complex z1 = cproj(1 + 2*I);
    printf("cproj(1+2i) = %.1f%+.1fi\n", creal(z1),cimag(z1));
    double complex z2 = cproj(INFINITY+2.0*I);
    printf("cproj(Inf+2i) = %.1f%+.1fi\n", creal(z2),cimag(z2));
    double complex z3 = cproj(INFINITY-2.0*I);
    printf("cproj(Inf-2i) = %.1f%+.1fi\n", creal(z3),cimag(z3));
}

Ausgabe:

cproj(1+2i) = 1.0+2.0i
cproj(Inf+2i) = inf+0.0i
cproj(Inf-2i) = inf-0.0i

Referenzen

  • C11-Norm (ISO/IEC 9899:2011):
  • 7.3.9.5 Die cproj-Funktionen (S. 198)
  • 7.25 Typgenerische Mathematik <tgmath.h> (S. 373-375)
  • G.7 Typgenerische Mathematik <tgmath.h> (S. 545)
  • C99-Norm (ISO/IEC 9899:1999):
  • 7.3.9.4 Die cproj-Funktionen (S. 179)
  • 7.22 Typgenerische Mathematik <tgmath.h> (S. 335-337)
  • G.7 Typgenerische Mathematik <tgmath.h> (S. 480)

Siehe auch