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