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
|
---|