ieeefloat.h
上传用户:njqiyou
上传日期:2007-01-08
资源大小:574k
文件大小:3k
源码类别:

mpeg/mp3

开发平台:

C/C++

  1. #ifndef IEEE_FLOAT_H__
  2. #define IEEE_FLOAT_H__
  3. /* Copyright (C) 1988-1991 Apple Computer, Inc.
  4.  * All Rights Reserved.
  5.  *
  6.  * Warranty Information
  7.  * Even though Apple has reviewed this software, Apple makes no warranty
  8.  * or representation, either express or implied, with respect to this
  9.  * software, its quality, accuracy, merchantability, or fitness for a 
  10.  * particular purpose.  As a result, this software is provided "as is,"
  11.  * and you, its user, are assuming the entire risk as to its quality
  12.  * and accuracy.
  13.  *
  14.  * This code may be used and freely distributed as long as it includes
  15.  * this copyright notice and the warranty information.
  16.  *
  17.  * Machine-independent I/O routines for IEEE floating-point numbers.
  18.  *
  19.  * NaN's and infinities are converted to HUGE_VAL or HUGE, which
  20.  * happens to be infinity on IEEE machines.  Unfortunately, it is
  21.  * impossible to preserve NaN's in a machine-independent way.
  22.  * Infinities are, however, preserved on IEEE machines.
  23.  *
  24.  * These routines have been tested on the following machines:
  25.  * Apple Macintosh, MPW 3.1 C compiler
  26.  * Apple Macintosh, THINK C compiler
  27.  * Silicon Graphics IRIS, MIPS compiler
  28.  * Cray X/MP and Y/MP
  29.  * Digital Equipment VAX
  30.  * Sequent Balance (Multiprocesor 386)
  31.  * NeXT
  32.  *
  33.  *
  34.  * Implemented by Malcolm Slaney and Ken Turkowski.
  35.  *
  36.  * Malcolm Slaney contributions during 1988-1990 include big- and little-
  37.  * endian file I/O, conversion to and from Motorola's extended 80-bit
  38.  * floating-point format, and conversions to and from IEEE single-
  39.  * precision floating-point format.
  40.  *
  41.  * In 1991, Ken Turkowski implemented the conversions to and from
  42.  * IEEE double-precision format, added more precision to the extended
  43.  * conversions, and accommodated conversions involving +/- infinity,
  44.  * NaN's, and denormalized numbers.
  45.  *
  46.  * $Id: ieeefloat.h,v 1.1 1993/06/11 17:45:46 malcolm Exp $
  47.  *
  48.  * $Log: ieeefloat.h,v $
  49.  * Revision 1.1  1993/06/11  17:45:46  malcolm
  50.  * Initial revision
  51.  *
  52.  */
  53. #include <math.h>
  54. typedef float Single;
  55. #ifndef applec
  56.  typedef double defdouble;
  57. #else /* !applec */
  58.  typedef long double defdouble;
  59. #endif /* applec */
  60. #ifndef THINK_C
  61.  typedef double Double;
  62. #else /* THINK_C */
  63.  typedef short double Double;
  64. #endif /* THINK_C */
  65. #define kFloatLength 4
  66. #define kDoubleLength 8
  67. #define kExtendedLength 10
  68. extern defdouble ConvertFromIeeeSingle(char *bytes);
  69. extern void ConvertToIeeeSingle(defdouble num, char *bytes);
  70. extern defdouble ConvertFromIeeeDouble(char *bytes);
  71. extern void ConvertToIeeeDouble(defdouble num, char *bytes);
  72. extern defdouble ConvertFromIeeeExtended(char *bytes);
  73. extern void ConvertToIeeeExtended(defdouble num, char *bytes);
  74. #endif