61 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /* number.h: Arbitrary precision numbers header file. */
 | |
| 
 | |
| /*  This file is part of bc written for MINIX.
 | |
|     Copyright (C) 1991, 1992 Free Software Foundation, Inc.
 | |
| 
 | |
|     This program is free software; you can redistribute it and/or modify
 | |
|     it under the terms of the GNU General Public License as published by
 | |
|     the Free Software Foundation; either version 2 of the License , or
 | |
|     (at your option) any later version.
 | |
| 
 | |
|     This program is distributed in the hope that it will be useful,
 | |
|     but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|     GNU General Public License for more details.
 | |
| 
 | |
|     You should have received a copy of the GNU General Public License
 | |
|     along with this program; see the file COPYING.  If not, write to
 | |
|     the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
 | |
| 
 | |
|     You may contact the author by:
 | |
|        e-mail:  phil@cs.wwu.edu
 | |
|       us-mail:  Philip A. Nelson
 | |
|                 Computer Science Department, 9062
 | |
|                 Western Washington University
 | |
|                 Bellingham, WA 98226-9062
 | |
|        
 | |
| *************************************************************************/
 | |
| 
 | |
| 
 | |
| typedef enum {PLUS, MINUS} sign;
 | |
| 
 | |
| typedef struct
 | |
|     {
 | |
|       sign n_sign;
 | |
|       int  n_len;	/* The number of digits before the decimal point. */
 | |
|       int  n_scale;	/* The number of digits after the decimal point. */
 | |
|       int  n_refs;      /* The number of pointers to this number. */
 | |
|       char n_value[1];  /* The storage. Not zero char terminated. It is 
 | |
|       			   allocated with all other fields.  */
 | |
|     } bc_struct;
 | |
| 
 | |
| typedef bc_struct *bc_num;
 | |
| 
 | |
| /*  Some useful macros and constants. */
 | |
| 
 | |
| #define CH_VAL(c)     (c - '0')
 | |
| #define BCD_CHAR(d)   (d + '0')
 | |
| 
 | |
| #ifdef MIN
 | |
| #undef MIN
 | |
| #undef MAX
 | |
| #endif
 | |
| #define MAX(a,b)      (a>b?a:b)
 | |
| #define MIN(a,b)      (a>b?b:a)
 | |
| #define ODD(a)        (a&1)
 | |
| 
 | |
| #ifndef TRUE
 | |
| #define TRUE 1
 | |
| #define FALSE 0
 | |
| #endif
 | 
