OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [newlib-1.10.0/] [newlib/] [libm/] [common/] [s_copysign.c] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1010 ivang
 
2
/* @(#)s_copysign.c 5.1 93/09/24 */
3
/*
4
 * ====================================================
5
 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
6
 *
7
 * Developed at SunPro, a Sun Microsystems, Inc. business.
8
 * Permission to use, copy, modify, and distribute this
9
 * software is freely granted, provided that this notice
10
 * is preserved.
11
 * ====================================================
12
 */
13
 
14
/*
15
FUNCTION
16
<<copysign>>, <<copysignf>>---sign of <[y]>, magnitude of <[x]>
17
 
18
INDEX
19
        copysign
20
INDEX
21
        copysignf
22
 
23
ANSI_SYNOPSIS
24
        #include <math.h>
25
        double copysign (double <[x]>, double <[y]>);
26
        float copysignf (float <[x]>, float <[y]>);
27
 
28
TRAD_SYNOPSIS
29
        #include <math.h>
30
        double copysign (<[x]>, <[y]>)
31
        double <[x]>;
32
        double <[y]>;
33
 
34
        float copysignf (<[x]>, <[y]>)
35
        float <[x]>;
36
        float <[y]>;
37
 
38
DESCRIPTION
39
<<copysign>> constructs a number with the magnitude (absolute value)
40
of its first argument, <[x]>, and the sign of its second argument,
41
<[y]>.
42
 
43
<<copysignf>> does the same thing; the two functions differ only in
44
the type of their arguments and result.
45
 
46
RETURNS
47
<<copysign>> returns a <<double>> with the magnitude of
48
<[x]> and the sign of <[y]>.
49
<<copysignf>> returns a <<float>> with the magnitude of
50
<[x]> and the sign of <[y]>.
51
 
52
PORTABILITY
53
<<copysign>> is not required by either ANSI C or the System V Interface
54
Definition (Issue 2).
55
 
56
*/
57
 
58
/*
59
 * copysign(double x, double y)
60
 * copysign(x,y) returns a value with the magnitude of x and
61
 * with the sign bit of y.
62
 */
63
 
64
#include "fdlibm.h"
65
 
66
#ifndef _DOUBLE_IS_32BITS
67
 
68
#ifdef __STDC__
69
        double copysign(double x, double y)
70
#else
71
        double copysign(x,y)
72
        double x,y;
73
#endif
74
{
75
        __uint32_t hx,hy;
76
        GET_HIGH_WORD(hx,x);
77
        GET_HIGH_WORD(hy,y);
78
        SET_HIGH_WORD(x,(hx&0x7fffffff)|(hy&0x80000000));
79
        return x;
80
}
81
 
82
#endif /* _DOUBLE_IS_32BITS */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.