Copy the sign bit from one number to another
#include <math.h> double copysign ( double x, double y); float copysignf ( float x, float y ); long double copysignl ( long double x, long double y);
The copysign(), copysignf(), and copysignl() functions return the magnitude of x with the sign bit of y.
To check for error situations, use feclearexcept() and fetestexcept(). For example:
The magnitude of x with the sign bit of y.
If x is: | These functions return: | Errors: |
---|---|---|
NaN | NaN, with the same sign as y | — |
#include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char** argv) { double a, b, c; a = 27.0; b = -5; c = copysign(a, b); printf("The magnitude of %f and sign of %f gives %f\n", a, b, c); return(EXIT_SUCCESS); }
produces the output:
The magnitude of 27.000000 and sign of -5.000000 gives -27.000000
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | No |
Thread | Yes |