Subversion Repositories Kolibri OS

Rev

Rev 5222 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /* bignum.h-arbitrary precision integers
  2.    Copyright (C) 1987-2015 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 3, or (at your option)
  9.    any later version.
  10.  
  11.    GAS is distributed in the hope that it will be useful, but WITHOUT
  12.    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  13.    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
  14.    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, 51 Franklin Street - Fifth Floor,
  19.    Boston, MA 02110-1301, USA.  */
  20.  
  21. /***********************************************************************\
  22.  *                                                                      *
  23.  *      Arbitrary-precision integer arithmetic.                         *
  24.  *      For speed, we work in groups of bits, even though this          *
  25.  *      complicates algorithms.                                         *
  26.  *      Each group of bits is called a 'littlenum'.                     *
  27.  *      A bunch of littlenums representing a (possibly large)           *
  28.  *      integer is called a 'bignum'.                                   *
  29.  *      Bignums are >= 0.                                               *
  30.  *                                                                      *
  31.  \***********************************************************************/
  32.  
  33. #define LITTLENUM_NUMBER_OF_BITS        (16)
  34. #define LITTLENUM_RADIX                 (1 << LITTLENUM_NUMBER_OF_BITS)
  35. #define LITTLENUM_MASK                  (0xFFFF)
  36. #define LITTLENUM_SHIFT                 (1)
  37. #define CHARS_PER_LITTLENUM             (1 << LITTLENUM_SHIFT)
  38. #ifndef BITS_PER_CHAR
  39. #define BITS_PER_CHAR                   (8)
  40. #endif
  41.  
  42. typedef unsigned short LITTLENUM_TYPE;
  43.