svn commit: r205898 - stable/6/lib/libc/sparc64/fpu
Marius Strobl
marius at FreeBSD.org
Tue Mar 30 19:06:39 UTC 2010
Author: marius
Date: Tue Mar 30 19:06:37 2010
New Revision: 205898
URL: http://svn.freebsd.org/changeset/base/205898
Log:
MFC: r205396
Division should take both arguments' signs into account when the
the dividend is infinity or zero and the divisor is not the same.
PR: 144900
Submitted by: Peter Jeremy
Modified:
stable/6/lib/libc/sparc64/fpu/fpu_div.c
Directory Properties:
stable/6/lib/libc/ (props changed)
Modified: stable/6/lib/libc/sparc64/fpu/fpu_div.c
==============================================================================
--- stable/6/lib/libc/sparc64/fpu/fpu_div.c Tue Mar 30 19:06:33 2010 (r205897)
+++ stable/6/lib/libc/sparc64/fpu/fpu_div.c Tue Mar 30 19:06:37 2010 (r205898)
@@ -171,14 +171,16 @@ __fpu_div(fe)
* return it. Otherwise we have the following cases:
*
* Inf / Inf = NaN, plus NV exception
- * Inf / num = Inf [i.e., return x]
- * Inf / 0 = Inf [i.e., return x]
- * 0 / Inf = 0 [i.e., return x]
- * 0 / num = 0 [i.e., return x]
+ * Inf / num = Inf [i.e., return x #]
+ * Inf / 0 = Inf [i.e., return x #]
+ * 0 / Inf = 0 [i.e., return x #]
+ * 0 / num = 0 [i.e., return x #]
* 0 / 0 = NaN, plus NV exception
- * num / Inf = 0
+ * num / Inf = 0 #
* num / num = num (do the divide)
- * num / 0 = Inf, plus DZ exception
+ * num / 0 = Inf #, plus DZ exception
+ *
+ * # Sign of result is XOR of operand signs.
*/
if (ISNAN(x) || ISNAN(y)) {
ORDER(x, y);
@@ -187,10 +189,10 @@ __fpu_div(fe)
if (ISINF(x) || ISZERO(x)) {
if (x->fp_class == y->fp_class)
return (__fpu_newnan(fe));
+ x->fp_sign ^= y->fp_sign;
return (x);
}
- /* all results at this point use XOR of operand signs */
x->fp_sign ^= y->fp_sign;
if (ISINF(y)) {
x->fp_class = FPC_ZERO;
More information about the svn-src-stable-6
mailing list