ieeefloat.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:3k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual 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.2 2001/06/01 22:26:00 wmay Exp $
  47.  *
  48.  * Revision 1.1.1.1  1999/11/24 08:42:58  markt
  49.  * initial checkin of LAME
  50.  * Starting with LAME 3.57beta with some modifications
  51.  *
  52.  * Revision 1.1  1993/06/11  17:45:46  malcolm
  53.  * Initial revision
  54.  *
  55.  */
  56. #include <math.h>
  57. typedef float Single;
  58. #ifndef applec
  59.  typedef double defdouble;
  60. #else /* !applec */
  61.  typedef long double defdouble;
  62. #endif /* applec */
  63. #ifndef THINK_C
  64.  typedef double Double;
  65. #else /* THINK_C */
  66.  typedef short double Double;
  67. #endif /* THINK_C */
  68. #define kFloatLength 4
  69. #define kDoubleLength 8
  70. #define kExtendedLength 10
  71. extern defdouble ConvertFromIeeeSingle(char *bytes);
  72. extern void ConvertToIeeeSingle(defdouble num, char *bytes);
  73. extern defdouble ConvertFromIeeeDouble(char *bytes);
  74. extern void ConvertToIeeeDouble(defdouble num, char *bytes);
  75. extern defdouble ConvertFromIeeeExtended(char *bytes);
  76. extern void ConvertToIeeeExtended(defdouble num, char *bytes);
  77. #endif