1/* bignum.h-arbitrary precision integers 2 Copyright (C) 1987 Free Software Foundation, Inc. 3 4This file is part of GAS, the GNU Assembler. 5 6GAS is free software; you can redistribute it and/or modify 7it under the terms of the GNU General Public License as published by 8the Free Software Foundation; either version 1, or (at your option) 9any later version. 10 11GAS is distributed in the hope that it will be useful, 12but WITHOUT ANY WARRANTY; without even the implied warranty of 13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14GNU General Public License for more details. 15 16You should have received a copy of the GNU General Public License 17along with GAS; see the file COPYING. If not, write to 18the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ 19 20/***********************************************************************\ 21* * 22* Arbitrary-precision integer arithmetic. * 23* For speed, we work in groups of bits, even though this * 24* complicates algorithms. * 25* Each group of bits is called a 'littlenum'. * 26* A bunch of littlenums representing a (possibly large) * 27* integer is called a 'bignum'. * 28* Bignums are >= 0. * 29* * 30\***********************************************************************/ 31 32#define LITTLENUM_NUMBER_OF_BITS (16) 33#define LITTLENUM_RADIX (1 << LITTLENUM_NUMBER_OF_BITS) 34#define LITTLENUM_MASK (0xFFFF) 35#define LITTLENUM_SHIFT (1) 36#define CHARS_PER_LITTLENUM (1 << LITTLENUM_SHIFT) 37#ifndef BITS_PER_CHAR 38#define BITS_PER_CHAR (8) 39#endif 40 41typedef unsigned short int LITTLENUM_TYPE; 42 43 44/* JF truncated this to get around a problem with GCC */ 45#define LOG_TO_BASE_2_OF_10 (3.3219280948873623478703194294893901758651) 46/* WARNING: I haven't checked that the trailing digits are correct! */ 47