From: Guillermo J. Rozas Date: Sat, 31 Oct 1992 23:35:19 +0000 (+0000) Subject: Fix bug in remainder. FPREM can return negative values for positive X-Git-Tag: 20090517-FFI~8814 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=07507b196081b003ba1d796a4abfe1d8690c18b8;p=mit-scheme.git Fix bug in remainder. FPREM can return negative values for positive arguments since it is defined as follows: FPREM (x, y) = x - (n * y) where n is the nearest integer to x/y and thus n*y can have an absolute value greater than x. --- diff --git a/v7/src/microcode/cmpauxmd/hppa.m4 b/v7/src/microcode/cmpauxmd/hppa.m4 index 10a2bc353..df1463909 100644 --- a/v7/src/microcode/cmpauxmd/hppa.m4 +++ b/v7/src/microcode/cmpauxmd/hppa.m4 @@ -1,6 +1,6 @@ changecom(`;');;; -*-Midas-*- ;;; -;;; $Id: hppa.m4,v 1.22 1992/09/22 21:59:29 cph Exp $ +;;; $Id: hppa.m4,v 1.23 1992/10/31 23:35:19 jinx Exp $ ;;; ;;; Copyright (c) 1989-1992 Massachusetts Institute of Technology ;;; @@ -546,9 +546,9 @@ fixnum_remainder XOR,< 26,1,0 ; skip if signs != B,N fixnum_remainder_done COMB,=,N 0,1,fixnum_remainder_done - COMCLR,> 26,0,0 ; skip if arg1 > 0 - SUB,TR 1,25,1 ; result -= arg2 - ADD 1,25,1 ; result += arg2 + XOR,< 26,25,0 ; skip if signs != + ADD,TR 1,25,1 ; result += arg2 + SUB 1,25,1 ; result -= arg2 ;; fixnum_remainder_done ZDEP 1,FIXNUM_POS,FIXNUM_LENGTH,26 ; make into fixnum diff --git a/v8/src/microcode/cmpauxmd/hppa.m4 b/v8/src/microcode/cmpauxmd/hppa.m4 index 10a2bc353..df1463909 100644 --- a/v8/src/microcode/cmpauxmd/hppa.m4 +++ b/v8/src/microcode/cmpauxmd/hppa.m4 @@ -1,6 +1,6 @@ changecom(`;');;; -*-Midas-*- ;;; -;;; $Id: hppa.m4,v 1.22 1992/09/22 21:59:29 cph Exp $ +;;; $Id: hppa.m4,v 1.23 1992/10/31 23:35:19 jinx Exp $ ;;; ;;; Copyright (c) 1989-1992 Massachusetts Institute of Technology ;;; @@ -546,9 +546,9 @@ fixnum_remainder XOR,< 26,1,0 ; skip if signs != B,N fixnum_remainder_done COMB,=,N 0,1,fixnum_remainder_done - COMCLR,> 26,0,0 ; skip if arg1 > 0 - SUB,TR 1,25,1 ; result -= arg2 - ADD 1,25,1 ; result += arg2 + XOR,< 26,25,0 ; skip if signs != + ADD,TR 1,25,1 ; result += arg2 + SUB 1,25,1 ; result -= arg2 ;; fixnum_remainder_done ZDEP 1,FIXNUM_POS,FIXNUM_LENGTH,26 ; make into fixnum