Namespaces
Variants

cprojf, cproj, cprojl

From cppreference.net
Определено в заголовке <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 imaginary , 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)

Смотрите также