Spec-Zone.ru › C

cprojf, cproj, cprojl

Определено в заголовочном файле <complex.h>
float complex       cprojf( float complex z );
(1) (с C99)
double complex      cproj( double complex z );
(2) (с C99)
long double complex cprojl( long double complex z );
(3) (с C99)
Определено в заголовочном файле <tgmath.h>
#define cproj( z )
(4) (с C99)
1-3) Вычисляет проекцию z на сферу Римана.
4) Универсальный макрос для типов: если z имеет тип long double complex, long double imaginary, или long double, вызывается cprojl. Если z имеет тип float complex, float imaginary, или float, вызывается cprojf. Если z имеет тип double complex, double, или любой целочисленный тип, вызывается cproj.

Для большинства z, cproj(z)==z, но все комплексные бесконечности, даже числа, где одна компонента бесконечна, а другая NaN, становятся положительной действительной бесконечностью, INFINITY+0.0*I или INFINITY-0.0*I. Знак мнимой (нулевой) компоненты — это знак cimag(z).

Параметры

z - комплексное значение

Возвращаемое значение

Проекция z на сферу Римана.

Функция полностью специфицирована для всех возможных входных данных и не подвержена ошибкам, описанным в math_errhandling

Примечания

Функция cproj помогает смоделировать сферу Римана, отображая все бесконечности в одну (с учетом знака мнимой нулевой компоненты), и должна использоваться непосредственно перед любой операцией, особенно сравнением, которая может дать ложные результаты для любых других бесконечностей.

Пример

#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));
}

Вывод:

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

Ссылки

  • Стандарт C11 (ISO/IEC 9899:2011):
    • 7.3.9.5 Функции cproj (с. 198)
    • 7.25 Универсальные математические функции <tgmath.h> (с. 373-375)
    • G.7 Универсальные математические функции <tgmath.h> (с. 545)
  • Стандарт C99 (ISO/IEC 9899:1999):
    • 7.3.9.4 Функции cproj (с. 179)
    • 7.22 Универсальные математические функции <tgmath.h> (с. 335-337)
    • G.7 Универсальные математические функции <tgmath.h> (с. 480)

См. также

Документация C++ для proj

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/complex/cproj

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API