copysign
From cppreference.com
                    
                                        
                    
                    
                                                            
                    | Defined in header  <math.h> | ||
| float       copysignf( float x, float y ); | (since C99) | |
| double      copysign( double x, double y ); | (since C99) | |
| long double copysignl( long double x, long double y ); | (since C99) | |
Composes a floating point value with the magnitude of x and the sign of y. 
| Contents | 
[edit] Parameters
| x, y | - | floating point values | 
[edit] Return value
Floating point value with the magnitude of x and the sign of y
[edit] Example
Run this code
#include <stdio.h> #include <math.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)); return 0; }
Possible output:
copysign(1.0,+2.0) = +1.0 copysign(1.0,-2.0) = -1.0 copysign(INFINITY,-2.0) = -inf copysign(NAN,-2.0) = -nan
[edit] See also
| (C99)(C99) | computes absolute value of a floating-point value (|x|) (function) | 
| (C99) | checks if the given number is negative (function) | 
| 
C++ documentation for copysign
 | |