Pristine Ack-5.5
[Ack-5.5.git] / modules / src / flt_arith / flt_arith.h
1 /*
2  * (c) copyright 1989 by the Vrije Universiteit, Amsterdam, The Netherlands.
3  * See the copyright notice in the ACK home directory, in the file "Copyright".
4  */
5 /* $Id: flt_arith.h,v 1.8 1994/06/24 11:15:40 ceriel Exp $ */
6
7 #ifndef __FLT_INCLUDED__
8 #define __FLT_INCLUDED__
9
10 #include "ansi.h"
11
12 #ifndef arith
13 #define arith long
14 #endif
15
16 struct flt_mantissa {
17         long    flt_h_32;       /* high order 32 bits of mantissa */
18         long    flt_l_32;       /* low order 32 bits of mantissa */
19 };
20
21 typedef struct flt_arith {
22         short   flt_sign;       /* 0 for positive, 1 for negative */
23         short   flt_exp;        /* between -16384 and 16384 */
24         struct flt_mantissa flt_mantissa;       /* normalized, in [1,2). */
25 } flt_arith;
26
27 extern int      flt_status;
28 #define FLT_OVFL        001
29 #define FLT_UNFL        002
30 #define FLT_DIV0        004
31 #define FLT_NOFLT       010
32 #define FLT_BTSM        020
33
34 #define FLT_STRLEN      32      /* max length of result of flt_flt2str() */
35
36 _PROTOTYPE(void flt_add, (flt_arith *, flt_arith *, flt_arith *));
37 _PROTOTYPE(void flt_sub, (flt_arith *, flt_arith *, flt_arith *));
38 _PROTOTYPE(void flt_mul, (flt_arith *, flt_arith *, flt_arith *));
39 _PROTOTYPE(void flt_div, (flt_arith *, flt_arith *, flt_arith *));
40 _PROTOTYPE(void flt_modf, (flt_arith *, flt_arith *, flt_arith *));
41 _PROTOTYPE(int flt_cmp, (flt_arith *, flt_arith *));
42 _PROTOTYPE(void flt_str2flt, (char *, flt_arith *));
43 _PROTOTYPE(void flt_flt2str, (flt_arith *, char *, int));
44 _PROTOTYPE(void flt_arith2flt, (arith, flt_arith *, int));
45 _PROTOTYPE(arith flt_flt2arith, (flt_arith *, int));
46 _PROTOTYPE(void flt_b64_sft, (struct flt_mantissa *, int));
47 _PROTOTYPE(void flt_umin, (flt_arith *));
48
49 #endif /* __FLT_INCLUDED__ */