diff options
author | Thomas Fitzsimmons <fitzsim@redhat.com> | 2002-06-07 21:59:57 +0000 |
---|---|---|
committer | Thomas Fitzsimmons <fitzsim@redhat.com> | 2002-06-07 21:59:57 +0000 |
commit | 0953fe640f177b565578ed7ecc77169ec1a914fa (patch) | |
tree | f63c2a55e4d0e5a067da91cea95ae88a7c15af7e /newlib/libm/common/sf_remquo.c | |
parent | 2bd6505b3991588a15c865618e1edb76d4a6373c (diff) | |
download | cygnal-0953fe640f177b565578ed7ecc77169ec1a914fa.tar.gz cygnal-0953fe640f177b565578ed7ecc77169ec1a914fa.tar.bz2 cygnal-0953fe640f177b565578ed7ecc77169ec1a914fa.zip |
* libm/common/s_fdim.c: New file.
* libm/common/s_fma.c: Likewise.
* libm/common/s_fmax.c: Likewise.
* libm/common/s_fmin.c: Likewise.
* libm/common/s_fpclassify.c: Likewise.
* libm/common/s_lrint.c: Likewise.
* libm/common/s_lround.c: Likewise.
* libm/common/s_nearbyint.c: Likewise.
* libm/common/s_remquo.c: Likewise.
* libm/common/s_round.c: Likewise.
* libm/common/s_scalbln.c: Likewise.
* libm/common/s_signbit.c: Likewise.
* libm/common/s_trunc.c: Likewise.
* libm/common/sf_fdim.c: Likewise.
* libm/common/sf_fma.c: Likewise.
* libm/common/sf_fmax.c: Likewise.
* libm/common/sf_fmin.c: Likewise.
* libm/common/sf_lrint.c: Likewise.
* libm/common/sf_lround.c: Likewise.
* libm/common/sf_nearbyint.c: Likewise.
* libm/common/sf_remquo.c: Likewise.
* libm/common/sf_round.c: Likewise.
* libm/common/sf_scalbln.c: Likewise.
* libm/common/sf_trunc.c: Likewise.
* libm/math/w_exp2.c: Likewise.
* libm/math/w_tgamma.c: Likewise.
* libm/math/wf_exp2.c: Likewise.
* libm/math/wf_tgamma.c: Likewise.
* libm/mathfp/s_exp2.c: Likewise.
* libm/mathfp/s_tgamma.c: Likewise.
* libm/mathfp/sf_exp2.c: Likewise.
* libm/mathfp/sf_tgamma.c: Likewise.
* libm/math/er_gamma.c: Fix return value.
* libm/math/erf_gamma.c: Likewise.
* libm/mathfp/er_gamma.c: Likewise.
* libm/mathfp/erf_gamma.c: Likewise.
* libc/include/math.h (!__STRICT_ANSI__): Include ISOC99-specific
declarations and macros.
Regenerated all Makefile.in, aclocal.m4 and configure files to
use new libtool macros in top-level libtool.m4
Diffstat (limited to 'newlib/libm/common/sf_remquo.c')
-rw-r--r-- | newlib/libm/common/sf_remquo.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/newlib/libm/common/sf_remquo.c b/newlib/libm/common/sf_remquo.c new file mode 100644 index 000000000..f620f518e --- /dev/null +++ b/newlib/libm/common/sf_remquo.c @@ -0,0 +1,50 @@ +/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. + * + * Permission to use, copy, modify, and distribute this software + * is freely granted, provided that this notice is preserved. + */ + +#include "fdlibm.h" + +#ifdef __STDC__ + float remquof(float x, float y, int *quo) /* wrapper remquof */ +#else + float remquof(x,y,quo) /* wrapper remquof */ + float x,y; + int *quo; +#endif +{ + int signx, signy, signres; + int wx; + int wy; + float x_over_y; + + GET_FLOAT_WORD(wx, x); + GET_FLOAT_WORD(wy, y); + + signx = (wx & 0x80000000) >> 31; + signy = (wy & 0x80000000) >> 31; + + signres = (signx ^ signy) ? -1 : 1; + + x_over_y = fabsf(x / y); + + *quo = signres * (lrintf(x_over_y) & 0x7f); + + return remainderf(x,y); +} + +#ifdef _DOUBLE_IS_32BITS + +#ifdef __STDC__ + double remquo(double x, double y, int *quo) /* wrapper remquof */ +#else + double remquo(x,y,quo) /* wrapper remquof */ + double x,y; + int *quo; +#endif +{ + return (double) remquof((float) x); +} + +#endif /* defined(_DOUBLE_IS_32BITS) */ |