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
Definido en el encabezado <math.h>
float copysignf ( float x, float y ) ;
(1) (desde C99)
double copysign ( double x, double y ) ;
(2) (desde C99)
long double copysignl ( long double x, long double y ) ;
(3) (desde C99)
Definido en el encabezado <tgmath.h>
#define copysign(x, y)
(4) (desde C99)
1-3) Compone un valor de punto flotante con la magnitud de x y el signo de y .
4) Macro genérica de tipos: Si algún argumento tiene tipo long double , copysignl es llamado. De lo contrario, si algún argumento tiene tipo entero o tiene tipo double , copysign es llamado. De lo contrario, copysignf es llamado.

Contenidos

Parámetros

x, y - valores de punto flotante

Valor de retorno

Si no ocurren errores, se devuelve el valor de punto flotante con la magnitud de x y el signo de y .

Si x es NaN, entonces se devuelve NaN con el signo de y .

Si y es -0, el resultado es negativo solo si la implementación admite el cero con signo de manera consistente en las operaciones aritméticas.

Manejo de errores

Esta función no está sujeta a ningún error especificado en math_errhandling .

Si la implementación soporta aritmética de punto flotante IEEE (IEC 60559),

Notas

copysign es la única forma portátil de manipular el signo de un valor NaN (para examinar el signo de un NaN, signbit también puede usarse).

Ejemplo

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

Salida posible:

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

Referencias

  • Estándar C23 (ISO/IEC 9899:2024):
  • 7.12.11.1 Las funciones copysign (p: TBD)
  • 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: TBD)
  • F.10.8.1 Las funciones copysign (p: TBD)
  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.12.11.1 Las funciones copysign (p: TBD)
  • 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: TBD)
  • F.10.8.1 Las funciones copysign (p: TBD)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.12.11.1 Las funciones copysign (p: 255)
  • 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: 373-375)
  • F.10.8.1 Las funciones copysign (p: 529)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.12.11.1 Las funciones copysign (p: 236)
  • 7.22 Matemáticas genéricas de tipo <tgmath.h> (p: 335-337)
  • F.9.8.1 Las funciones copysign (p: 465)

Véase también

(C99) (C99)
calcula el valor absoluto de un valor de punto flotante ( |x| )
(función)
(C99)
verifica si el número dado es negativo
(macro de función)