From c7a58c2edadb8fce84ab2f8b129a87eb19bdc485 Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Thu, 25 Sep 2008 19:07:18 +0000 Subject: - add some more math functions (patch from gentoo/solar) --- libm/s_remquo.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 libm/s_remquo.c (limited to 'libm/s_remquo.c') diff --git a/libm/s_remquo.c b/libm/s_remquo.c new file mode 100644 index 000000000..18853e211 --- /dev/null +++ b/libm/s_remquo.c @@ -0,0 +1,38 @@ +/* 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 "math.h" +#include "math_private.h" + +libm_hidden_proto(remquo) +#ifdef __STDC__ + double remquo(double x, double y, int *quo) /* wrapper remquo */ +#else + double remquo(x,y,quo) /* wrapper remquo */ + double x,y; + int *quo; +#endif +{ + int signx, signy, signres; + int mswx; + int mswy; + double x_over_y; + + GET_HIGH_WORD(mswx, x); + GET_HIGH_WORD(mswy, y); + + signx = (mswx & 0x80000000) >> 31; + signy = (mswy & 0x80000000) >> 31; + + signres = (signx ^ signy) ? -1 : 1; + + x_over_y = fabs(x / y); + + *quo = signres * (lrint(x_over_y) & 0x7f); + + return remainder(x,y); +} +libm_hidden_def(remquo) -- cgit v1.2.3