Namespaces
Variants

copysign, copysignf, copysignl

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(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
(C23) (C23)
copysign
(C99)
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
Определено в заголовочном файле <math.h>
float copysignf ( float x, float y ) ;
(1) (начиная с C99)
double copysign ( double x, double y ) ;
(2) (начиная с C99)
long double copysignl ( long double x, long double y ) ;
(3) (начиная с C99)
Определено в заголовочном файле <tgmath.h>
#define copysign(x, y)
(4) (начиная с C99)
1-3) Формирует значение с плавающей точкой с величиной x и знаком y .
4) Макрос общего типа: Если любой аргумент имеет тип long double , copysignl вызывается. В противном случае, если любой аргумент имеет целочисленный тип или тип double , copysign вызывается. В противном случае, copysignf вызывается.

Содержание

Параметры

x, y - значения с плавающей запятой

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

Если ошибок не возникает, возвращается значение с плавающей точкой, имеющее величину x и знак y .

Если x является NaN, то возвращается NaN со знаком y .

Если y равно -0, результат будет отрицательным только в том случае, если реализация последовательно поддерживает знаковый ноль в арифметических операциях.

Обработка ошибок

Эта функция не подвержена никаким ошибкам, указанным в math_errhandling .

Если реализация поддерживает арифметику с плавающей запятой IEEE (IEC 60559),

Примечания

copysign — это единственный переносимый способ управления знаком значения NaN (для проверки знака NaN также может использоваться signbit ).

Пример

#include <math.h>
#include <stdio.h>
int main(void)
{
    printf("copysign(1.0,+2.0)      = %+.1f\n", copysign(1.0,+2.0));
    printf("copysign(1.0,-2.0)      = %+.1f\n", copysign(1.0,-2.0));
    printf("copysign(INFINITY,-2.0) = %f\n",    copysign(INFINITY,-2.0));
    printf("copysign(NAN,-2.0)      = %f\n",    copysign(NAN,-2.0));
}

Возможный вывод:

copysign(1.0,+2.0)      = +1.0
copysign(1.0,-2.0)      = -1.0
copysign(INFINITY,-2.0) = -inf
copysign(NAN,-2.0)      = -nan

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2024):
  • 7.12.11.1 Функции copysign (стр.: TBD)
  • 7.25 Обобщённая математика <tgmath.h> (стр.: TBD)
  • F.10.8.1 Функции copysign (стр.: TBD)
  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.12.11.1 Функции copysign (стр.: TBD)
  • 7.25 Обобщенная математика <tgmath.h> (стр.: TBD)
  • F.10.8.1 Функции copysign (стр.: TBD)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.12.11.1 Функции copysign (стр. 255)
  • 7.25 Обобщенная математика <tgmath.h> (стр. 373-375)
  • F.10.8.1 Функции copysign (стр. 529)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 7.12.11.1 Функции copysign (стр. 236)
  • 7.22 Обобщенная математика <tgmath.h> (стр. 335-337)
  • F.9.8.1 Функции copysign (стр. 465)

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

(C99) (C99)
вычисляет абсолютное значение числа с плавающей запятой ( |x| )
(функция)
(C99)
проверяет, является ли заданное число отрицательным
(функция-макрос)
C++ documentation для copysign