/* 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