1/* s_copysignl.c -- long double version of s_copysign.c.
2 */
3
4/*
5 * ====================================================
6 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
7 *
8 * Developed at SunPro, a Sun Microsystems, Inc. business.
9 * Permission to use, copy, modify, and distribute this
10 * software is freely granted, provided that this notice
11 * is preserved.
12 * ====================================================
13 */
14
15#if defined(LIBM_SCCS) && !defined(lint)
16static char rcsid[] = "$NetBSD: $";
17#endif
18
19/*
20 * copysignl(long double x, long double y)
21 * copysignl(x,y) returns a value with the magnitude of x and
22 * with the sign bit of y.
23 */
24
25#define NO_MATH_REDIRECT
26#include <math.h>
27#include <math_private.h>
28#include <libm-alias-ldouble.h>
29
30long double __copysignl(long double x, long double y)
31{
32 uint32_t es1,es2;
33 GET_LDOUBLE_EXP(es1,x);
34 GET_LDOUBLE_EXP(es2,y);
35 SET_LDOUBLE_EXP(x,(es1&0x7fff)|(es2&0x8000));
36 return x;
37}
38libm_alias_ldouble (__copysign, copysign)
39

source code of glibc/sysdeps/ieee754/ldbl-96/s_copysignl.c