summaryrefslogtreecommitdiff
path: root/native/fdlibm/w_remainder.c
diff options
context:
space:
mode:
Diffstat (limited to 'native/fdlibm/w_remainder.c')
-rw-r--r--native/fdlibm/w_remainder.c91
1 files changed, 5 insertions, 86 deletions
diff --git a/native/fdlibm/w_remainder.c b/native/fdlibm/w_remainder.c
index a06be0e7b..8e65c207e 100644
--- a/native/fdlibm/w_remainder.c
+++ b/native/fdlibm/w_remainder.c
@@ -1,68 +1,21 @@
-/* @(#)w_remainder.c 5.1 93/09/24 */
+/* @(#)w_remainder.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
- * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
-/*
-FUNCTION
-<<rint>>, <<rintf>>, <<remainder>>, <<remainderf>>---round and remainder
-INDEX
- rint
-INDEX
- rintf
-INDEX
- remainder
-INDEX
- remainderf
-
-ANSI_SYNOPSIS
- #include <math.h>
- double rint(double <[x]>);
- float rintf(float <[x]>);
- double remainder(double <[x]>, double <[y]>);
- float remainderf(float <[x]>, float <[y]>);
-
-TRAD_SYNOPSIS
- #include <math.h>
- double rint(<[x]>)
- double <[x]>;
- float rintf(<[x]>)
- float <[x]>;
- double remainder(<[x]>,<[y]>)
- double <[x]>, <[y]>;
- float remainderf(<[x]>,<[y]>)
- float <[x]>, <[y]>;
-
-DESCRIPTION
-<<rint>> and <<rintf>> returns their argument rounded to the nearest
-integer. <<remainder>> and <<remainderf>> find the remainder of
-<[x]>/<[y]>; this value is in the range -<[y]>/2 .. +<[y]>/2.
-
-RETURNS
-<<rint>> and <<remainder>> return the integer result as a double.
-
-PORTABILITY
-<<rint>> and <<remainder>> are System V release 4. <<rintf>> and
-<<remainderf>> are extensions.
-
-*/
-
/*
* wrapper remainder(x,p)
*/
#include "fdlibm.h"
-#include <errno.h>
-
-#ifndef _DOUBLE_IS_32BITS
#ifdef __STDC__
double remainder(double x, double y) /* wrapper remainder */
@@ -75,45 +28,11 @@ PORTABILITY
return __ieee754_remainder(x,y);
#else
double z;
- struct exception exc;
z = __ieee754_remainder(x,y);
if(_LIB_VERSION == _IEEE_ || isnan(y)) return z;
- if(y==0.0) {
- /* remainder(x,0) */
- exc.type = DOMAIN;
- exc.name = "remainder";
- exc.err = 0;
- exc.arg1 = x;
- exc.arg2 = y;
- exc.retval = 0.0/0.0;
- if (_LIB_VERSION == _POSIX_)
- errno = EDOM;
- else if (!matherr(&exc)) {
- errno = EDOM;
- }
- if (exc.err != 0)
- errno = exc.err;
- return exc.retval;
- } else
+ if(y==0.0)
+ return __kernel_standard(x,y,28); /* remainder(x,0) */
+ else
return z;
#endif
}
-
-#endif /* defined(_DOUBLE_IS_32BITS) */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-