FP_types.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. /*
  2. (c) copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands.
  3. See the copyright notice in the ACK home directory, in the file "Copyright".
  4. */
  5. /* $Id$ */
  6. /********************************************************/
  7. /*
  8. Type definitions for C Floating Point Package
  9. include file for floating point package
  10. */
  11. /********************************************************/
  12. /*
  13. THESE STRUCTURES ARE USED TO ADDRESS THE INDIVIDUAL
  14. PARTS OF THE FLOATING POINT NUMBER REPRESENTATIONS.
  15. THREE STRUCTURES ARE DEFINED:
  16. SINGLE: single precision floating format
  17. DOUBLE: double precision floating format
  18. EXTEND: double precision extended format
  19. */
  20. /********************************************************/
  21. #ifndef __FPTYPES
  22. #define __FPTYPES
  23. typedef struct {
  24. unsigned long h_32; /* higher 32 bits of 64 */
  25. unsigned long l_32; /* lower 32 bits of 64 */
  26. } B64;
  27. typedef unsigned long SINGLE;
  28. typedef struct {
  29. unsigned long d[2];
  30. } DOUBLE;
  31. typedef struct { /* expanded float format */
  32. short sign;
  33. short exp;
  34. B64 mantissa;
  35. #define m1 mantissa.h_32
  36. #define m2 mantissa.l_32
  37. } EXTEND;
  38. struct fef4_returns {
  39. int e;
  40. SINGLE f;
  41. };
  42. struct fef8_returns {
  43. int e;
  44. DOUBLE f;
  45. };
  46. struct fif4_returns {
  47. SINGLE ipart;
  48. SINGLE fpart;
  49. };
  50. struct fif8_returns {
  51. DOUBLE ipart;
  52. DOUBLE fpart;
  53. };
  54. #if __STDC__
  55. #define _PROTOTYPE(function, params) function params
  56. #else
  57. #define _PROTOTYPE(function, params) function()
  58. #endif
  59. _PROTOTYPE( void add_ext, (EXTEND *e1, EXTEND *e2));
  60. _PROTOTYPE( void mul_ext, (EXTEND *e1, EXTEND *e2));
  61. _PROTOTYPE( void div_ext, (EXTEND *e1, EXTEND *e2));
  62. _PROTOTYPE( void sub_ext, (EXTEND *e1, EXTEND *e2));
  63. _PROTOTYPE( void sft_ext, (EXTEND *e1, EXTEND *e2));
  64. _PROTOTYPE( void nrm_ext, (EXTEND *e1));
  65. _PROTOTYPE( void zrf_ext, (EXTEND *e1));
  66. _PROTOTYPE( void extend, (unsigned long *from, EXTEND *to, int size));
  67. _PROTOTYPE( void compact, (EXTEND *from, unsigned long *to, int size));
  68. _PROTOTYPE( void _fptrp, (int));
  69. _PROTOTYPE( void adf4, (SINGLE s2, SINGLE s1));
  70. _PROTOTYPE( void adf8, (DOUBLE s2, DOUBLE s1));
  71. _PROTOTYPE( void sbf4, (SINGLE s2, SINGLE s1));
  72. _PROTOTYPE( void sbf8, (DOUBLE s2, DOUBLE s1));
  73. _PROTOTYPE( void dvf4, (SINGLE s2, SINGLE s1));
  74. _PROTOTYPE( void dvf8, (DOUBLE s2, DOUBLE s1));
  75. _PROTOTYPE( void mlf4, (SINGLE s2, SINGLE s1));
  76. _PROTOTYPE( void mlf8, (DOUBLE s2, DOUBLE s1));
  77. _PROTOTYPE( void ngf4, (SINGLE f));
  78. _PROTOTYPE( void ngf8, (DOUBLE f));
  79. _PROTOTYPE( void zrf4, (SINGLE *l));
  80. _PROTOTYPE( void zrf8, (DOUBLE *z));
  81. _PROTOTYPE( void cff4, (DOUBLE src));
  82. _PROTOTYPE( void cff8, (SINGLE src));
  83. _PROTOTYPE( void cif4, (int ss, long src));
  84. _PROTOTYPE( void cif8, (int ss, long src));
  85. _PROTOTYPE( void cuf4, (int ss, long src));
  86. _PROTOTYPE( void cuf8, (int ss, long src));
  87. _PROTOTYPE( long cfu, (int ds, int ss, DOUBLE src));
  88. _PROTOTYPE( long cfi, (int ds, int ss, DOUBLE src));
  89. _PROTOTYPE( int cmf4, (SINGLE s2, SINGLE s1));
  90. _PROTOTYPE( int cmf8, (DOUBLE d1, DOUBLE d2));
  91. _PROTOTYPE( void fef4, (struct fef4_returns *r, SINGLE s1));
  92. _PROTOTYPE( void fef8, (struct fef8_returns *r, DOUBLE s1));
  93. _PROTOTYPE( void fif4, (struct fif4_returns *p, SINGLE x, SINGLE y));
  94. _PROTOTYPE( void fif8, (struct fif8_returns *p, DOUBLE x, DOUBLE y));
  95. _PROTOTYPE( void b64_sft, (B64 *, int));
  96. _PROTOTYPE( void b64_lsft, (B64 *));
  97. _PROTOTYPE( void b64_rsft, (B64 *));
  98. _PROTOTYPE( int b64_add, (B64 *, B64 *));
  99. #endif