### NAME

copysign, copysignf, copysignl - copy sign of a number

### SYNOPSIS

**#include <math.h>**

**double copysign(double ***x***, double ***y***);**
**float copysignf(float ***x***, float ***y***);**
**long double copysignl(long double ***x***, long double ***y***);**

Link with *-lm*.

Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

**copysign**(), **copysignf**(), **copysignl**(): _SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE >= 600 || _ISOC99_SOURCE; or
*cc -std=c99*

### DESCRIPTION

The
**copysign**() functions return a value whose absolute value matches
that of *x*, but whose sign bit matches that of *y*.

### RETURN VALUE

On success, these functions return a value whose magnitude is taken from
*x* and whose sign is taken from
*y*.

If *x* is a NaN,
a NaN with the sign bit of *y* is returned.

### ERRORS

No errors occur.

### CONFORMING TO

C99, POSIX.1-2001. This function is defined in IEC 559 (and the appendix with recommended functions in IEEE 754/IEEE 854).

### NOTES

On architectures where the floating-point formats are not IEEE 754 compliant,
the
**copysign**() functions may treat a negative zero as positive.

### SEE ALSO

### COLOPHON

This page is part of release 3.23 of the Linux
*man-pages* project.
A description of the project,
and information about reporting bugs,
can be found at
http://www.kernel.org/doc/man-pages/.