forked from KolibriOS/kolibrios
upload sdk
git-svn-id: svn://kolibrios.org@4349 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
82
contrib/sdk/sources/newlib/math/s_copysign.c
Normal file
82
contrib/sdk/sources/newlib/math/s_copysign.c
Normal file
@@ -0,0 +1,82 @@
|
||||
|
||||
/* @(#)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.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
/*
|
||||
FUNCTION
|
||||
<<copysign>>, <<copysignf>>---sign of <[y]>, magnitude of <[x]>
|
||||
|
||||
INDEX
|
||||
copysign
|
||||
INDEX
|
||||
copysignf
|
||||
|
||||
ANSI_SYNOPSIS
|
||||
#include <math.h>
|
||||
double copysign (double <[x]>, double <[y]>);
|
||||
float copysignf (float <[x]>, float <[y]>);
|
||||
|
||||
TRAD_SYNOPSIS
|
||||
#include <math.h>
|
||||
double copysign (<[x]>, <[y]>)
|
||||
double <[x]>;
|
||||
double <[y]>;
|
||||
|
||||
float copysignf (<[x]>, <[y]>)
|
||||
float <[x]>;
|
||||
float <[y]>;
|
||||
|
||||
DESCRIPTION
|
||||
<<copysign>> constructs a number with the magnitude (absolute value)
|
||||
of its first argument, <[x]>, and the sign of its second argument,
|
||||
<[y]>.
|
||||
|
||||
<<copysignf>> does the same thing; the two functions differ only in
|
||||
the type of their arguments and result.
|
||||
|
||||
RETURNS
|
||||
<<copysign>> returns a <<double>> with the magnitude of
|
||||
<[x]> and the sign of <[y]>.
|
||||
<<copysignf>> returns a <<float>> with the magnitude of
|
||||
<[x]> and the sign of <[y]>.
|
||||
|
||||
PORTABILITY
|
||||
<<copysign>> is not required by either ANSI C or the System V Interface
|
||||
Definition (Issue 2).
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
* copysign(double x, double y)
|
||||
* copysign(x,y) returns a value with the magnitude of x and
|
||||
* with the sign bit of y.
|
||||
*/
|
||||
|
||||
#include "fdlibm.h"
|
||||
|
||||
#ifndef _DOUBLE_IS_32BITS
|
||||
|
||||
#ifdef __STDC__
|
||||
double copysign(double x, double y)
|
||||
#else
|
||||
double copysign(x,y)
|
||||
double x,y;
|
||||
#endif
|
||||
{
|
||||
__uint32_t hx,hy;
|
||||
GET_HIGH_WORD(hx,x);
|
||||
GET_HIGH_WORD(hy,y);
|
||||
SET_HIGH_WORD(x,(hx&0x7fffffff)|(hy&0x80000000));
|
||||
return x;
|
||||
}
|
||||
|
||||
#endif /* _DOUBLE_IS_32BITS */
|
Reference in New Issue
Block a user