Path: utzoo!mnetor!uunet!mcvax!cernvax!ethz!forty2!vogel From: vogel@forty2.UUCP (Stefan Vogel) Newsgroups: comp.sys.ibm.pc Subject: A Problem with the 8087 from Turbo-Pascal Message-ID: <259@forty2.UUCP> Date: 5 May 88 15:50:42 GMT Reply-To: vogel@forty2.UUCP (Stefan Vogel) Organization: Exp. Physics University Zuerich Lines: 35 Keywords: 8087 Turbo-Pascal While experimentally determining the smallest positive number representable on the 8087, we stepped over a problem with the 8087 "denormalized operand" exception. The following little Turbo-Pascal program will crash in the WriteLn statement at the the expression "r*10" when the value of r gets denormalized: Var r : Real; Count : Integer; Begin r := 1.0; Count := 0; While r > 0 Do Begin r := r / 2; Count := Succ(Count); WriteLn(Count,' ',r,' ',r*10); End End. Now the problem: If we replace the multiplication by any of the other arithmetic operations, the program will terminate normally. Why is this happening? Why won't the Turbo-Pascal output routines crash (the denormalized values of r are printed!)? What is special with multiplication? By the way, this happens in TP3 and TP4! I looked into what I think is the initialization code for the 8087 in the TP4 run time library. There the "denormalized operand" exception is masked off! Are we just stupid, or is this a real problem? Of Turbo-Pascal? Or the 8087 chip? -- ------------- UUCP:...mcvax!cernvax!forty2!vogel BITNET: K524911 at CZHRZU1A ____ _ __ Stefan Vogel (_ |_ |_ //_|\\ | //\\ Physics Institute of University of Zuerich _)|_ | // | \\|// \\ Switzerland