Blame view

build2/epsilon-master/liba/src/external/openbsd/s_copysign.c 944 Bytes
6663b6c9   adorian   projet complet av...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
  /* @(#)s_copysign.c 5.1 93/09/24 */
  /*
   * ====================================================
   * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
   *
   * Developed at SunPro, a Sun Microsystems, Inc. business.
   * Permission to use, copy, modify, and distribute this
   * software is freely granted, provided that this notice 
   * is preserved.
   * ====================================================
   */
  
  /*
   * copysign(double x, double y)
   * copysign(x,y) returns a value with the magnitude of x and
   * with the sign bit of y.
   */
  
  #include <sys/cdefs.h>
  #include <float.h>
  #include <math.h>
  
  #include "math_private.h"
  
  double
  copysign(double x, double y)
  {
  	u_int32_t hx,hy;
  	GET_HIGH_WORD(hx,x);
  	GET_HIGH_WORD(hy,y);
  	SET_HIGH_WORD(x,(hx&0x7fffffff)|(hy&0x80000000));
          return x;
  }
  
  #if LDBL_MANT_DIG == 53
  #ifdef __weak_alias
  __weak_alias(copysignl, copysign);
  #endif /* __weak_alias */
  #endif /* LDBL_MANT_DIG == 53 */