00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef __FPTYPES
00026 #define __FPTYPES
00027
00028 typedef struct {
00029 unsigned long h_32;
00030 unsigned long l_32;
00031 } B64;
00032
00033 typedef unsigned long SINGLE;
00034
00035 typedef struct {
00036 unsigned long d[2];
00037 } DOUBLE;
00038
00039 typedef struct {
00040 short sign;
00041 short exp;
00042 B64 mantissa;
00043 #define m1 mantissa.h_32
00044 #define m2 mantissa.l_32
00045 } EXTEND;
00046
00047 struct fef4_returns {
00048 int e;
00049 SINGLE f;
00050 };
00051
00052 struct fef8_returns {
00053 int e;
00054 DOUBLE f;
00055 };
00056
00057 struct fif4_returns {
00058 SINGLE ipart;
00059 SINGLE fpart;
00060 };
00061
00062 struct fif8_returns {
00063 DOUBLE ipart;
00064 DOUBLE fpart;
00065 };
00066
00067 #if __STDC__
00068 #define _PROTOTYPE(function, params) function params
00069 #else
00070 #define _PROTOTYPE(function, params) function()
00071 #endif
00072 _PROTOTYPE( void add_ext, (EXTEND *e1, EXTEND *e2));
00073 _PROTOTYPE( void mul_ext, (EXTEND *e1, EXTEND *e2));
00074 _PROTOTYPE( void div_ext, (EXTEND *e1, EXTEND *e2));
00075 _PROTOTYPE( void sub_ext, (EXTEND *e1, EXTEND *e2));
00076 _PROTOTYPE( void sft_ext, (EXTEND *e1, EXTEND *e2));
00077 _PROTOTYPE( void nrm_ext, (EXTEND *e1));
00078 _PROTOTYPE( void zrf_ext, (EXTEND *e1));
00079 _PROTOTYPE( void extend, (unsigned long *from, EXTEND *to, int size));
00080 _PROTOTYPE( void compact, (EXTEND *from, unsigned long *to, int size));
00081 _PROTOTYPE( void _fptrp, (int));
00082 _PROTOTYPE( void adf4, (SINGLE s2, SINGLE s1));
00083 _PROTOTYPE( void adf8, (DOUBLE s2, DOUBLE s1));
00084 _PROTOTYPE( void sbf4, (SINGLE s2, SINGLE s1));
00085 _PROTOTYPE( void sbf8, (DOUBLE s2, DOUBLE s1));
00086 _PROTOTYPE( void dvf4, (SINGLE s2, SINGLE s1));
00087 _PROTOTYPE( void dvf8, (DOUBLE s2, DOUBLE s1));
00088 _PROTOTYPE( void mlf4, (SINGLE s2, SINGLE s1));
00089 _PROTOTYPE( void mlf8, (DOUBLE s2, DOUBLE s1));
00090 _PROTOTYPE( void ngf4, (SINGLE f));
00091 _PROTOTYPE( void ngf8, (DOUBLE f));
00092 _PROTOTYPE( void zrf4, (SINGLE *l));
00093 _PROTOTYPE( void zrf8, (DOUBLE *z));
00094 _PROTOTYPE( void cff4, (DOUBLE src));
00095 _PROTOTYPE( void cff8, (SINGLE src));
00096 _PROTOTYPE( void cif4, (int ss, long src));
00097 _PROTOTYPE( void cif8, (int ss, long src));
00098 _PROTOTYPE( void cuf4, (int ss, long src));
00099 _PROTOTYPE( void cuf8, (int ss, long src));
00100 _PROTOTYPE( long cfu, (int ds, int ss, DOUBLE src));
00101 _PROTOTYPE( long cfi, (int ds, int ss, DOUBLE src));
00102 _PROTOTYPE( int cmf4, (SINGLE s2, SINGLE s1));
00103 _PROTOTYPE( int cmf8, (DOUBLE d1, DOUBLE d2));
00104 _PROTOTYPE( void fef4, (struct fef4_returns *r, SINGLE s1));
00105 _PROTOTYPE( void fef8, (struct fef8_returns *r, DOUBLE s1));
00106 _PROTOTYPE( void fif4, (struct fif4_returns *p, SINGLE x, SINGLE y));
00107 _PROTOTYPE( void fif8, (struct fif8_returns *p, DOUBLE x, DOUBLE y));
00108
00109 _PROTOTYPE( void b64_sft, (B64 *, int));
00110 _PROTOTYPE( void b64_lsft, (B64 *));
00111 _PROTOTYPE( void b64_rsft, (B64 *));
00112 _PROTOTYPE( int b64_add, (B64 *, B64 *));
00113 #endif