home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (c) 1988 Bellcore
- ** All Rights Reserved
- ** Permission is granted to copy or use this program, EXCEPT that it
- ** may not be sold for profit, the copyright notice must be reproduced
- ** on copies, and credit should be given to Bellcore where it is due.
- ** BELLCORE MAKES NO WARRANTY AND ACCEPTS NO LIABILITY FOR THIS PROGRAM.
- */
-
- /*
- ** header file that defines canonical floating point structure
- ** and routines
- */
-
-
- #ifndef R_INCLUDED
-
- /*
- ** when evaluated to a string, the fractional part will
- ** not exceed this length
- */
- #define R_MANMAX 200
-
- #define R_POSITIVE 0
- #define R_NEGATIVE 1
-
- struct R_flstr {
- int exponent;
- int man_sign;
- char *mantissa;
- };
-
- typedef struct R_flstr *R_float;
-
- #define R_getfrac(x) (x->mantissa)
-
- extern R_float R_makefloat();
-
- extern int R_getexp();
-
- #define R_getsign(x) (x->man_sign)
-
- /*
- ** takes a string
- */
- #define R_setfrac(x,y) ((void)strcpy(x->mantissa,y))
- /*
- ** takes an int
- */
- #define R_setexp(x,y) (x->exponent = y)
- /*
- ** takes a sign
- */
- #define R_setsign(x,y) (x->man_sign = y)
-
- /*
- #define R_incexp(x) ((x->exponent)++)
- #define R_decexp(x) ((x->exponent)--)
- */
-
- #define R_setzero(x) R_setfrac(x,"0");R_setexp(x,0);R_setsign(x,R_POSITIVE)
-
- #define R_zerofloat(x) ((0 == x->exponent) && (!strcmp(x->mantissa,"0")))
-
- #define R_INCLUDED
-
- #endif
-