FP_types.h

Go to the documentation of this file.
00001 /*
00002   (c) copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands.
00003   See the copyright notice in the ACK home directory, in the file "Copyright".
00004 */
00005 
00006 /* $Header: /opt/proj/minix/cvsroot/src/lib/float/FP_types.h,v 1.1.1.1 2005/04/21 14:56:10 beng Exp $ */
00007 
00008 /********************************************************/
00009 /*
00010         Type definitions for C Floating Point Package
00011         include file for floating point package
00012 */
00013 /********************************************************/
00014 /*
00015         THESE STRUCTURES ARE USED TO ADDRESS THE INDIVIDUAL
00016         PARTS OF THE FLOATING POINT NUMBER REPRESENTATIONS.
00017 
00018         THREE STRUCTURES ARE DEFINED:
00019                 SINGLE: single precision floating format
00020                 DOUBLE: double precision floating format
00021                 EXTEND: double precision extended format
00022 */
00023 /********************************************************/
00024 
00025 #ifndef __FPTYPES
00026 #define __FPTYPES
00027 
00028 typedef struct  {
00029         unsigned long   h_32;   /* higher 32 bits of 64 */
00030         unsigned long   l_32;   /* lower  32 bits of 64 */
00031 }       B64;
00032 
00033 typedef unsigned long   SINGLE;
00034 
00035 typedef struct  {
00036         unsigned long   d[2];
00037 }       DOUBLE;
00038 
00039 typedef struct  {       /* expanded float format        */
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

Generated on Fri Apr 14 22:57:25 2006 for minix by  doxygen 1.4.6