Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site topaz.ARPA Path: utzoo!watmath!clyde!cbosgd!cbdkc1!desoto!packard!topaz!vijay From: vijay@topaz.ARPA (P. Vijay) Newsgroups: net.unix Subject: Re: Floating point numbers on the Pyramid Message-ID: <2405@topaz.ARPA> Date: Wed, 26-Jun-85 23:38:46 EDT Article-I.D.: topaz.2405 Posted: Wed Jun 26 23:38:46 1985 Date-Received: Thu, 27-Jun-85 08:17:05 EDT References: <292@eneevax.UUCP> Organization: Rutgers Univ., New Brunswick, N.J. Lines: 62 Could someone tell me how the Pyramid 90x does floating point numbers? Somebody told me it was the IEEE floating point std. Is this true? If it is, could someone direct me to a paper (or tell me) what this std looks like. If you mean the representation of floating point numbers in Pyramid-90x hardware, it is as follows: single precision: 31 30 23 22 0 . ........ ....................... S E F S - Represents sign bit. One represents negative and 0 represents positive. E - These 8 bits represent a biased exponent. The bias is 2**7 - 1 = 127. F - This represents a 23 bit fraction. There is an implied 1 beyond the most significant bit (bit 22) of the fraction. In other words, the fraction is assumed to be a 24-bit normalized fraction and the most significant bit, which is always 1 due to normalization, is not represented. The binary point is assumed to be between the implied bit and bit 22 (MSB) of the fraction. The value represented by a floating point number is given by: a. If 0 <= E <= 255 then value = (-1)**S * 2**(E-127) * (1.F) [positive or negative normalized single precision real numbers] b. If E = 0 and F = 0 then value = (-1)**S * 0 [positive or negative zero] double precision: 63 62 52 51 0 . ........... .................................................... S E F S - sign bit E - 11 bit biased exponent. Bias is 2**10 - 1 = 1023 F - 52 bit fraction with a 1 implied beyond bit 51. The binary point is assumed between the implied bit and bit 51. a. If 0 <= E <= 2047 then value = (-1)**S * 2**(E-1023) * (1.F) [positive or negative normalized double precision real numbers] b. If E = 0 and F = 0 then value = (-1)**S * 0 [positive or negative zero] I think this is IEE representation, but I am not quite sure about it. All floating point results are computed to within half a unit in the last place of the destination format. All computations are performed as if correct to infinite precision, then rounded. --Vijay--