copysignl - Linux


copysignl modifies the sign bit of a long double argument x, while leaving the magnitude unchanged. It returns a value with the same magnitude as x, but with the sign bit of y.


double copysignl(double x, double y);
long double copysignl(long double x, long double y);




# Change the sign bit of the long double variable 'myVar' to positive
myVar = copysignl(myVar, 1.0);

# Change the sign bit of the double variable 'doubleVar' to negative
doubleVar = copysignl(doubleVar, -1.0);

Common Issues

  • Wrong argument types: Make sure that both arguments to copysignl are the same type (either both double or both long double).
  • Undefined behavior: Calling copysignl with a NaN or +/- infinity argument for x results in undefined behavior.


copysignl can be used in conjunction with other math functions to manipulate floating-point values. For example, it can be used to ensure that a value is always positive or negative:

# Ensure that 'result' is always positive
result = fabs(result);
result = copysignl(result, 1.0);

Related Commands

  • copysign (C function): Similar to copysignl, but for floating-point types.
  • fabs (C function): Returns the absolute value of a floating-point number.
  • signbit (C function): Tests if a floating-point number is negative.