Received: (from major@localhost)
	by minnie.cs.adfa.oz.au (8.8.5/8.8.5) id XAA16327
	for pups-liszt; Fri, 10 Apr 1998 23:19:34 +1000 (EST)
X-Authentication-Warning: minnie.cs.adfa.oz.au: major set sender to owner-pups@minnie.cs.adfa.oz.au using -f
Received: from mail13.digital.com (mail13.digital.com [192.208.46.30])
	by minnie.cs.adfa.oz.au (8.8.5/8.8.5) with ESMTP id XAA16322
	for <pups@minnie.cs.adfa.oz.au>; Fri, 10 Apr 1998 23:19:27 +1000 (EST)
Received: from cst.ako.dec.com (cst.ako.dec.com [16.151.72.40])
	by mail13.digital.com (8.8.8/8.8.8/WV1.0d) with ESMTP id JAA27778
	for <pups@minnie.cs.adfa.oz.au>; Fri, 10 Apr 1998 09:19:22 -0400 (EDT)
Received: by cst.ako.dec.com with Internet Mail Service (5.0.1458.49)
	id <HSD5TNA2>; Fri, 10 Apr 1998 09:20:09 -0400
Message-ID: <6B84B1FF221BD011B0AC08002BE692066DD917@excmso.mso.dec.com>
From: Bob Supnik <Bob.Supnik@digital.com>
To: pups@minnie.cs.adfa.oz.au
Subject: RE: Floating Point Bug in Bob's Emulator - second one found
Date: Fri, 10 Apr 1998 09:19:59 -0400
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.0.1458.49)
Content-Type: text/plain
Sender: owner-pups@minnie.cs.adfa.oz.au
Precedence: bulk

	A second bug has been found in the floating point emulator.  The
first (in MODf) caused FACTOR to malfunction.  This one causes problems
in AWK.

	The bug is in LDEXP.  In pdp11_fp.c:

	case 015:						/* LDEXP
*/
		dst = (dstspec <= 07)? R[dstspec]: ReadW (GeteaW
(dstspec));
		F_LOAD (qdouble, FR[ac], fac);
		fac.h = (fac.h & ~FP_EXP) | (((dst + FP_BIAS) &
FP_M_EXP) << FP_V_EXP);
		newV = 0;
	==>	if ((dst > 0177) || (dst <= 0177600)) {

	Change the indicated line to:

		if ((dst > 0177) && (dst <= 0177600)) {

	The test case is:

	# awk 'END {print 1+2}' < /dev/null

	incorrectly produced 0, now produces 3.

	/Bob Supnik

