#ifndef _NUMmachar_h_
#define _NUMmachar_h_
/* David Weenink, 20010719 */

struct machar_Table
{
	int base_d;	/* Radix in which numbers are presented. */
	int it_d;		/* Number of base digits in mantissa M. */
	int machep_d;	/* Exponent of smallest power of base that added to 1.0
				   gives something different 1.0. */
	double eps_d;	/* base^machep: floating point precision (fpp) */
	int negep_d;	/* Exponent of the smallest power of base that subtracted from 1.0
				   gives something different 1.0. */
	double epsneg_d;	/* base^negep, another way of defining fpp (quantization error). */
	int iexp_d;	/* Number of bits in the exponent (including sign or bias). */
	int emin_d;	/* Smallest (most negative) power of base consistent with there
				   being no zeros in the mantissa. */
	double rmin_d;/* Smallest usable fp number (base^emin). */
	int emax_d;	/* Smallest (positive) power of base that causes overflow. */
	double rmax_d;/* Largest (magnitude) usable fp number ((1-epsneg).base^maxexp). */
	int irnd_d;	/* Type of rounding in addition and underflow handling. */
	int ngrd_d;	/* Number of guard digits used when truncating the product of two mantissas. */
	/* same for floats */
	int base_f;	
	int it_f;	
	int machep_f;	
	double eps_f;	
	int negep_f;
	double epsneg_f;
	int iexp_f;
	int emin_f;
	double rmin_f;
	int emax_f;
	double rmax_f; 
	int irnd_f;
	int ngrd_f; 	
};

typedef struct machar_Table *machar_Table;

void NUMmachar (void);

#endif /* _NUMmachar_h_ */
