Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Returns a value that has the magnitude of one argument and the sign of another.
Syntax
double copysign(
   double x,
   double y
);
float copysign(
   float x,
   float y
); // C++ only
long double copysign(
   long double x,
   long double y
); // C++ only
float copysignf(
   float x,
   float y
); // C++ only
long double copysignl(
   long double x,
   long double y
); // C++ only
double _copysign(
   double x,
   double y
);
long double _copysignl(
   long double x,
   long double y
);
#define copysign(X, Y) // Requires C11 or later
Parameters
x
The floating-point value that's returned as the magnitude of the result.
y
The floating-point value that's returned as the sign of the result.
Math and floating-point support
Return value
The copysign functions return a floating-point value that combines the magnitude of x and the sign of y. There's no error return.
Remarks
Because C++ allows overloading, you can call overloads of copysign that take and return float or long double values. In a C program, unless you're using the <tgmath.h> macro to call this function, copysign always takes and returns a double.
If you use the <tgmath.h> copysign() macro, the type of the argument determines which version of the function is selected. See Type-generic math for details.
Requirements
| Routine | Required header | 
|---|---|
| _copysign | <float.h> | 
| copysign,copysignf,copysignl,_copysignf,_copysignl | <math.h> | 
| copysignmacro | <tgmath.h> | 
For more compatibility information, see Compatibility.