home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / binutils-2.7-src.tgz / tar.out / fsf / binutils / gas / bignum.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  2KB  |  53 lines

  1. /* bignum.h-arbitrary precision integers
  2.    Copyright (C) 1987, 1992 Free Software Foundation, Inc.
  3.  
  4.    This file is part of GAS, the GNU Assembler.
  5.  
  6.    GAS is free software; you can redistribute it and/or modify
  7.    it under the terms of the GNU General Public License as published by
  8.    the Free Software Foundation; either version 2, or (at your option)
  9.    any later version.
  10.  
  11.    GAS is distributed in the hope that it will be useful,
  12.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.    GNU General Public License for more details.
  15.  
  16.    You should have received a copy of the GNU General Public License
  17.    along with GAS; see the file COPYING.  If not, write to
  18.    the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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.  
  41. typedef unsigned short LITTLENUM_TYPE;
  42.  
  43. /* JF truncated this to get around a problem with GCC */
  44. #define    LOG_TO_BASE_2_OF_10 (3.3219280948873623478703194294893901758651)
  45. /* WARNING: I haven't checked that the trailing digits are correct! */
  46.  
  47. /* lengths are in sizeof(littlenum)s */
  48.  
  49. int bignum_copy PARAMS ((LITTLENUM_TYPE * in, int in_length,
  50.              LITTLENUM_TYPE * out, int out_length));
  51.  
  52. /* end of bignum.h */
  53.