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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [newlib/] [newlib/] [libm/] [math/] [s_copysign.c] - Diff between revs 40 and 1765

Only display areas with differences | Details | Blame | View Log

Rev 40 Rev 1765
 
 
/* @(#)s_copysign.c 5.1 93/09/24 */
/* @(#)s_copysign.c 5.1 93/09/24 */
/*
/*
 * ====================================================
 * ====================================================
 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
 *
 *
 * Developed at SunPro, a Sun Microsystems, Inc. business.
 * Developed at SunPro, a Sun Microsystems, Inc. business.
 * Permission to use, copy, modify, and distribute this
 * Permission to use, copy, modify, and distribute this
 * software is freely granted, provided that this notice
 * software is freely granted, provided that this notice
 * is preserved.
 * is preserved.
 * ====================================================
 * ====================================================
 */
 */
 
 
/*
/*
FUNCTION
FUNCTION
<<copysign>>, <<copysignf>>---sign of <[y]>, magnitude of <[x]>
<<copysign>>, <<copysignf>>---sign of <[y]>, magnitude of <[x]>
 
 
INDEX
INDEX
        copysign
        copysign
INDEX
INDEX
        copysignf
        copysignf
 
 
ANSI_SYNOPSIS
ANSI_SYNOPSIS
        #include <math.h>
        #include <math.h>
        double copysign (double <[x]>, double <[y]>);
        double copysign (double <[x]>, double <[y]>);
        float copysignf (float <[x]>, float <[y]>);
        float copysignf (float <[x]>, float <[y]>);
 
 
TRAD_SYNOPSIS
TRAD_SYNOPSIS
        #include <math.h>
        #include <math.h>
        double copysign (<[x]>, <[y]>)
        double copysign (<[x]>, <[y]>)
        double <[x]>;
        double <[x]>;
        double <[y]>;
        double <[y]>;
 
 
        float copysignf (<[x]>, <[y]>)
        float copysignf (<[x]>, <[y]>)
        float <[x]>;
        float <[x]>;
        float <[y]>;
        float <[y]>;
 
 
DESCRIPTION
DESCRIPTION
<<copysign>> constructs a number with the magnitude (absolute value)
<<copysign>> constructs a number with the magnitude (absolute value)
of its first argument, <[x]>, and the sign of its second argument,
of its first argument, <[x]>, and the sign of its second argument,
<[y]>.
<[y]>.
 
 
<<copysignf>> does the same thing; the two functions differ only in
<<copysignf>> does the same thing; the two functions differ only in
the type of their arguments and result.
the type of their arguments and result.
 
 
RETURNS
RETURNS
<<copysign>> returns a <<double>> with the magnitude of
<<copysign>> returns a <<double>> with the magnitude of
<[x]> and the sign of <[y]>.
<[x]> and the sign of <[y]>.
<<copysignf>> returns a <<float>> with the magnitude of
<<copysignf>> returns a <<float>> with the magnitude of
<[x]> and the sign of <[y]>.
<[x]> and the sign of <[y]>.
 
 
PORTABILITY
PORTABILITY
<<copysign>> is not required by either ANSI C or the System V Interface
<<copysign>> is not required by either ANSI C or the System V Interface
Definition (Issue 2).
Definition (Issue 2).
 
 
*/
*/
 
 
/*
/*
 * copysign(double x, double y)
 * copysign(double x, double y)
 * copysign(x,y) returns a value with the magnitude of x and
 * copysign(x,y) returns a value with the magnitude of x and
 * with the sign bit of y.
 * with the sign bit of y.
 */
 */
 
 
#include "fdlibm.h"
#include "fdlibm.h"
 
 
#ifndef _DOUBLE_IS_32BITS
#ifndef _DOUBLE_IS_32BITS
 
 
#ifdef __STDC__
#ifdef __STDC__
        double copysign(double x, double y)
        double copysign(double x, double y)
#else
#else
        double copysign(x,y)
        double copysign(x,y)
        double x,y;
        double x,y;
#endif
#endif
{
{
        __uint32_t hx,hy;
        __uint32_t hx,hy;
        GET_HIGH_WORD(hx,x);
        GET_HIGH_WORD(hx,x);
        GET_HIGH_WORD(hy,y);
        GET_HIGH_WORD(hy,y);
        SET_HIGH_WORD(x,(hx&0x7fffffff)|(hy&0x80000000));
        SET_HIGH_WORD(x,(hx&0x7fffffff)|(hy&0x80000000));
        return x;
        return x;
}
}
 
 
#endif /* _DOUBLE_IS_32BITS */
#endif /* _DOUBLE_IS_32BITS */
 
 

powered by: WebSVN 2.1.0

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