home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / MAGAZINE / DDJ9309.ZIP / FPALIB.ZIP / FFMLIB.H < prev    next >
C/C++ Source or Header  |  1993-05-12  |  3KB  |  60 lines

  1. /* Extended IEEE Compatible Floating Point Arithmetic Library
  2. **
  3. ** Version 1.0
  4. ** Copyright (C) 1990, by Fred Motteler
  5. ** All Rights Reserved
  6. **
  7. ** This is a simple extended floating point arithmetic package.
  8. */
  9.  
  10. /* Lookup table for bit masks to clear extra high order bits */
  11. extern unsigned char ffclearmaskAB[];
  12.  
  13. /* Lookup table for bit masks to set/clear/test specific bits */
  14. extern unsigned char ffsetmaskAB[];
  15. extern unsigned char ffclrmaskAB[];
  16.  
  17. /* Functions used only by the floating point functions */
  18. #ifdef PROTOTYPES
  19. extern void ffbitext(unsigned char *srcPB, int srclenN, int sbitN, int bitlenN,
  20.              unsigned char *destPB, int destlenN);
  21. extern void ffbitins(unsigned char *srcPB, int srclenN, int dbitN, int bitlenN,
  22.              unsigned char *destPB, int destlenN);
  23. extern void ffbitset(unsigned char *srcPB, int srclenN, int nbitN);
  24. extern void ffbitclr(unsigned char *srcPB, int srclenN, int nbitN);
  25. extern unsigned char fftstbit(unsigned char *srcPB, int srclenN, int nbitN);
  26. extern unsigned char ffchkzero(unsigned char *resultPB, int totalenN);
  27. extern unsigned char ffexpchk(unsigned char *prodexpPB, int expbyteN,
  28.                   unsigned char *expbiasPB, int expbitN,
  29.                   unsigned char expccB);
  30. extern unsigned char ffexpover(unsigned char *resultPB, int totalenN,
  31.                    unsigned char expccB, unsigned char *expbiasPB,
  32.                    int expbyteN, unsigned char *exponePB, 
  33.                    unsigned char condcodeB, int fracbitN,
  34.                    int expbitN);
  35. extern unsigned char ffsetsign(unsigned char signoneB, unsigned char signtwoB,
  36.                    unsigned char *resultPB, int totalenN,
  37.                    int signposN, unsigned char condcodeB);
  38. extern int fftotlen(int expbitN, int fracbitN);
  39. extern int ffexplen(int expbitN);
  40. extern int ffraclen(int fracbitN);
  41. extern void ffgenbias(unsigned char *expbiasPB, int expbyteN, int expbitN);
  42. extern void ffextall(unsigned char *fltPB, int totalenN, int fracbitN, int fracbyteN, int expbitN, int expbyteN, unsigned char *fltfracPB, unsigned char *fltexpPB, unsigned char *fltsignPB);
  43. #else
  44. extern void ffbitext();        /* Extract bit fields */
  45. extern void ffbitins();        /* Insert bit fields */
  46. extern void ffbitset();        /* Set bits */
  47. extern void ffbitclr();        /* Clear bits */
  48. extern unsigned char fftstbit(); /* Test bits */
  49. extern unsigned char ffchkzero(); /* Check if floating pt value is zero */
  50. extern unsigned char ffexpchk(); /* Check for exponent over/underflow */
  51. extern unsigned char ffexpover(); /* Deal with over/undrflow */
  52. extern unsigned char ffsetsign(); /* Set result sign bit */
  53. extern int fftotlen();        /* Total byte length of floating pt value */
  54. extern int ffexplen();        /* Byte length of floating pt exponent value */
  55. extern int ffraclen();        /* Byte length of floating pt mantissa value */
  56. extern void ffgenbias();    /* Generate exponent offset bias value */
  57. extern void ffextall();        /* Extract float mantissa, exp, and sign */
  58. #endif
  59.  
  60.