function
<cmath> <ctgmath>

# copysign

```     double copysign  (double x     , double y);
float copysignf (float x      , float y);
long double copysignl (long double x, long double y);
```
```     double copysign (double x     , double y);
float copysign (float x      , float y);
long double copysign (long double x, long double y);
double copysign (Type1 x      , Type2 y);       // additional overloads```
Copy sign
Returns a value with the magnitude of x and the sign of y.

Header <tgmath.h> provides a type-generic macro version of this function.
Additional overloads are provided in this header (`<cmath>`) for other combinations of arithmetic types (Type1 and Type2): These overloads effectively cast its arguments to `double` before calculations, except if at least one of the arguments is of type `long double` (in which case both are casted to `long double` instead).

### Parameters

x
Value with the magnitude of the resulting value.
y
Value with the sign of the resulting value.

### Return Value

The value with a magnitude of x and the sign of y.

### Example

 ``123456789101112`` ``````/* copysign example */ #include /* printf */ #include /* copysign */ int main () { printf ("copysign ( 10.0,-1.0) = %f\n", copysign( 10.0,-1.0)); printf ("copysign (-10.0,-1.0) = %f\n", copysign(-10.0,-1.0)); printf ("copysign (-10.0, 1.0) = %f\n", copysign(-10.0, 1.0)); return 0; }``````

Output:
 ``` copysign ( 10.0,-1.0) = -10.0 copysign (-10.0,-1.0) = -10.0 copysign (-10.0, 1.0) = 10.0 ```