Annotation of coherent/a/usr/man/ALL/float, revision 1.1.1.1

1.1       root        1: 
                      2: 
                      3: float                       C Keyword                       float
                      4: 
                      5: 
                      6: 
                      7: 
                      8: Data type
                      9: 
                     10: 
                     11: Floating point  numbers are a  subset of the  real numbers.  Each
                     12: has a built-in radix point (or ``decimal point'') that shifts, or
                     13: ``floats'', as  the value of the number  changes.  It consists of
                     14: the following:  one sign bit, which  indicates whether the number
                     15: is positive or  negative; bits that encode the number's _e_x_p_o_n_e_n_t;
                     16: and bits  that encode the  number's _f_r_a_c_t_i_o_n, or  the number upon
                     17: which the exponent works.   In general, the magnitude of the num-
                     18: ber  encoded depends  upon the  number of  bits in  the exponent,
                     19: whereas  its precision  depends upon  the number  of bits  in the
                     20: fraction.
                     21: 
                     22: The exponent  often uses a  bias.  This is  a value that  is sub-
                     23: tracted from the exponent to yield  the power of two by which the
                     24: fraction will be increased.
                     25: 
                     26: Floating point  numbers come in  two levels of  precision: single
                     27: precision, called  floats; and double  precision, called doubles.
                     28: With most microprocessors,  sizeof(float) returns four, which in-
                     29: dicates that  it is four  chars (bytes) long,  and sizeof(double)
                     30: returns eight.
                     31: 
                     32: Several  formats  are  used  to  encode floats,  including  IEEE,
                     33: DECVAX,  and BCD  (binary coded  decimal).  COHERENT  uses DECVAX
                     34: format throughout.
                     35: 
                     36: The following  describes DECVAX, IEEE, and  BCD formats, for your
                     37: information.
                     38: 
                     39: ***** DECVAX Format *****
                     40: 
                     41: The 32 bits in a float  consist of one sign bit, an eight-bit ex-
                     42: ponent, and  a 24-bit  fraction, as  follows.  Note that  in this
                     43: diagram, `s' indicates  ``sign'', `e' indicates ``exponent'', and
                     44: `f` indicates ``fraction'':
                     45: 
                     46: 
                     47:         ZDDDDDDDDDDD?
                     48:         | seee eeee | Byte 4
                     49:         CDDDDDDDDDDD4
                     50:         | efff ffff | Byte 3
                     51:         CDDDDDDDDDDD4
                     52:         | ffff ffff | Byte 2
                     53:         CDDDDDDDDDDD4
                     54:         | ffff ffff | Byte 1
                     55:         @DDDDDDDDDDDY
                     56: 
                     57: 
                     58: The exponent has a bias of 129.
                     59: 
                     60: If the sign  bit is set to one, the  number is negative; if it is
                     61: set to zero,  then the number is positive.  If  the number is all
                     62: 
                     63: 
                     64: COHERENT Lexicon                                           Page 1
                     65: 
                     66: 
                     67: 
                     68: 
                     69: float                       C Keyword                       float
                     70: 
                     71: 
                     72: 
                     73: zeroes, then  it equals  zero; an  exponent and fraction  of zero
                     74: plus a  sign of  one (``negative zero'')  is by definition  not a
                     75: number.  All other forms are numeric values.
                     76: 
                     77: The most significant bit in the fraction is always set to one and
                     78: is not stored.  It is usually called the ``hidden bit''.
                     79: 
                     80: The format  for doubles simply  adds another 32  fraction bits to
                     81: the end of the float representation, as follows:
                     82: 
                     83: 
                     84:         ZDDDDDDDDDDD?
                     85:         | seee eeee | Byte 8
                     86:         CDDDDDDDDDDD4
                     87:         | efff ffff | Byte 7
                     88:         CDDDDDDDDDDD4
                     89:         | ffff ffff | Byte 6
                     90:         CDDDDDDDDDDD4
                     91:         | ffff ffff | Byte 5
                     92:         CDDDDDDDDDDD4
                     93:         | ffff ffff | Byte 4
                     94:         CDDDDDDDDDDD4
                     95:         | ffff ffff | Byte 3
                     96:         CDDDDDDDDDDD4
                     97:         | ffff ffff | Byte 2
                     98:         CDDDDDDDDDDD4
                     99:         | ffff ffff | Byte 1
                    100:         @DDDDDDDDDDDY
                    101: 
                    102: 
                    103: ***** IEEE Format *****
                    104: 
                    105: The IEEE  encoding of a float  is the same as  that in the DECVAX
                    106: format.   Note, however,  that the  exponent has  a bias  of 127,
                    107: rather than 129.
                    108: 
                    109: Unlike the  DECVAX format, IEEE format  assigns special values to
                    110: several  floating  point numbers.   Note  that  in the  following
                    111: description, a  tiny exponent  is one that  is all zeroes,  and a
                    112: huge exponent is one that is all ones:
                    113: 
                    114: *  A  tiny exponent with a fraction of  zero equals zero, regard-
                    115:    less of the setting of the sign bit.
                    116: 
                    117: *   A huge  exponent  with a  fraction of  zero equals  infinity,
                    118:    regardless of the setting of the sign bit.
                    119: 
                    120: *  A tiny exponent with a  fraction greater than zero is a denor-
                    121:    malized number,  i.e., a  number that  is less than  the least
                    122:    normalized number.
                    123: 
                    124: *   A huge  exponent with  a  fraction greater  than zero  is, by
                    125:    definition, not a number.   These values can be used to handle
                    126:    special conditions.
                    127: 
                    128: 
                    129: 
                    130: COHERENT Lexicon                                           Page 2
                    131: 
                    132: 
                    133: 
                    134: 
                    135: float                       C Keyword                       float
                    136: 
                    137: 
                    138: 
                    139: An IEEE double, unlike DECVAX format, increases the number of ex-
                    140: ponent bits.  It consists of  a sign bit, an 11-bit exponent, and
                    141: a 53-bit fraction, as follows:
                    142: 
                    143: 
                    144:         ZDDDDDDDDDDD?
                    145:         | seee eeee | Byte 8
                    146:         CDDDDDDDDDDD4
                    147:         | eeee ffff | Byte 7
                    148:         CDDDDDDDDDDD4
                    149:         | ffff ffff | Byte 6
                    150:         CDDDDDDDDDDD4
                    151:         | ffff ffff | Byte 5
                    152:         CDDDDDDDDDDD4
                    153:         | ffff ffff | Byte 4
                    154:         CDDDDDDDDDDD4
                    155:         | ffff ffff | Byte 3
                    156:         CDDDDDDDDDDD4
                    157:         | ffff ffff | Byte 2
                    158:         CDDDDDDDDDDD4
                    159:         | ffff ffff | Byte 1
                    160:         @DDDDDDDDDDDY
                    161: 
                    162: 
                    163: The exponent has a bias of  1,023.  The rules of encoding are the
                    164: same as for floats.
                    165: 
                    166: ***** BCD Format *****
                    167: 
                    168: The BCD  format (``binary  coded decimal'', also  called ``packed
                    169: decimal'') is  used to eliminate  rounding errors that  alter the
                    170: worth of  an account by a  fraction of a cent.   It consists of a
                    171: sign, an exponent, and a chain of four-bit numbers, each of which
                    172: is defined to hold the values zero through nine.
                    173: 
                    174: A BCD float has a sign bit, seven bits of exponent, and six four-
                    175: bit digits.  In the following diagrams, `d' indicates ``digit'':
                    176: 
                    177: 
                    178:         ZDDDDDDDDDDD?
                    179:         | seee eeee | Byte 4
                    180:         CDDDDDDDDDDD4
                    181:         | dddd dddd | Byte 3
                    182:         CDDDDDDDDDDD4
                    183:         | dddd dddd | Byte 2
                    184:         CDDDDDDDDDDD4
                    185:         | dddd dddd | Byte 1
                    186:         @DDDDDDDDDDDY
                    187: 
                    188: 
                    189: A BCD double has a sign bit, 11 bits of exponent, and 13 four-bit
                    190: digits, as follows:
                    191: 
                    192: 
                    193: 
                    194: 
                    195: 
                    196: COHERENT Lexicon                                           Page 3
                    197: 
                    198: 
                    199: 
                    200: 
                    201: float                       C Keyword                       float
                    202: 
                    203: 
                    204: 
                    205:         ZDDDDDDDDDDD?
                    206:         | seee eeee | Byte 8
                    207:         CDDDDDDDDDDD4
                    208:         | eeee dddd | Byte 7
                    209:         CDDDDDDDDDDD4
                    210:         | dddd dddd | Byte 6
                    211:         CDDDDDDDDDDD4
                    212:         | dddd dddd | Byte 5
                    213:         CDDDDDDDDDDD4
                    214:         | dddd dddd | Byte 4
                    215:         CDDDDDDDDDDD4
                    216:         | dddd dddd | Byte 3
                    217:         CDDDDDDDDDDD4
                    218:         | dddd dddd | Byte 2
                    219:         CDDDDDDDDDDD4
                    220:         | dddd dddd | Byte 1
                    221:         @DDDDDDDDDDDY
                    222: 
                    223: 
                    224: Passing the hexadecimal numbers A through F in a digit yields un-
                    225: predictable results.
                    226: 
                    227: The following rules apply when handling BCD numbers:
                    228: 
                    229: *  A tiny exponent with a fraction of zero equals zero.
                    230: 
                    231: *  A tiny exponent with a fraction of non-zero indicates a denor-
                    232:    malized number.
                    233: 
                    234: *  A huge exponent with a fraction of zero indicates infinity.
                    235: 
                    236: *  A huge exponent with a fraction of non-zero is, by definition,
                    237:    not a number; these non-numbers are used to indicate errors.
                    238: 
                    239: ***** See Also *****
                    240: 
                    241: C keywords, data formats, double
                    242: _T_h_e _A_r_t _o_f _C_o_m_p_u_t_e_r _P_r_o_g_r_a_m_m_i_n_g, vol. 2, page 180_f_f
                    243: 
                    244: 
                    245: 
                    246: 
                    247: 
                    248: 
                    249: 
                    250: 
                    251: 
                    252: 
                    253: 
                    254: 
                    255: 
                    256: 
                    257: 
                    258: 
                    259: 
                    260: 
                    261: 
                    262: COHERENT Lexicon                                           Page 4
                    263: 
                    264: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.