source: trunk/minix/lib/ack/fphook/FP_types.h@ 9

Last change on this file since 9 was 9, checked in by Mattia Monga, 13 years ago

Minix 3.1.2a

File size: 3.4 KB
Line 
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/ack/fphook/FP_types.h,v 1.1 2005/10/10 15:27:43 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
28typedef struct {
29 unsigned long h_32; /* higher 32 bits of 64 */
30 unsigned long l_32; /* lower 32 bits of 64 */
31} B64;
32
33typedef unsigned long SINGLE;
34
35typedef struct {
36 unsigned long d[2];
37} DOUBLE;
38
39typedef 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
47struct fef4_returns {
48 int e;
49 SINGLE f;
50};
51
52struct fef8_returns {
53 int e;
54 DOUBLE f;
55};
56
57struct fif4_returns {
58 SINGLE ipart;
59 SINGLE fpart;
60};
61
62struct 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
Note: See TracBrowser for help on using the repository browser.