Path: utzoo!mnetor!uunet!seismo!sundc!pitstop!sun!decwrl!decvax!ucbvax!BRL.ARPA!glennrp From: glennrp@BRL.ARPA (Glenn Randers-Pehrson, WMB) Newsgroups: comp.sys.sgi Subject: IRIS floating point read error Message-ID: <8802260907.aa27838@TBD.BRL.ARPA> Date: 26 Feb 88 14:07:18 GMT Sender: usenet@ucbvax.BERKELEY.EDU Organization: The Internet Lines: 36 caution: The FORTRAN READ statement can produce erroneous results when using the IRIS floating point board, viz: Script started on Fri Feb 26 08:37:42 1988 taurus.brl.mil> cat bug75.f program bug75 character*4 temp temp=' 75' read(temp,'(f4.0)')value ivalue=ifix(value) write(*,*)' value=',value,', ivalue=',ivalue end taurus.brl.mil> f77 bug75.f # not using the floating point board taurus.brl.mil> a.out # answer is correct value=+7.500000E+01, ivalue=75 taurus.brl.mil> f77 -Zf bug75.f # using the floating point board taurus.brl.mil> a.out # answer is wrong value=+7.499999E+01, ivalue=74 taurus.brl.mil> f77 -Zf -ZF+F bug75.f # using fp board and accurate divide taurus.brl.mil> a.out # answer is still wrong value=+7.499999E+01, ivalue=74 taurus.brl.mil> script done on Fri Feb 26 08:38:57 1988 Please don't send flames about the program. I know and you know that ivalue=nint(value) or ivalue=ifix(value+.5) will work properly in all cases. But sometime you might inherit a program containing coding as above, as I did, and be baffled for a while. The example above was run on an IRIS 2500 Turbo, with Rev C FP1 board, running release GL2-W3.5rl. I got the same results on a 3130 and a 3030.. Glenn Randers-Pehrson