diff -r -c3 LiDIA-1.2.1/config/CONFIG LiDIA/config/CONFIG
*** LiDIA-1.2.1/config/CONFIG	Mon Apr 15 15:00:47 1996
--- LiDIA/config/CONFIG	Sun Nov 17 18:43:41 1996
***************
*** 49,57 ****
  #                               default (no manager)
  #
  
!                BIGINT = libI
!                   GMM = default 
  
  
  #
  # The Compiler/Assembler/Linker Settings
--- 49,60 ----
  #                               default (no manager)
  #
  
!                BIGINT = cln
!                   GMM = default
  
+               CLN_DIR = /home/bruno/cln
+         CLN_TARGETDIR = /home/bruno/cln/linuxelf
+          CLN_INCLUDES = -I$(CLN_TARGETDIR)/include -I$(CLN_DIR)/include -I$(CLN_DIR)/src/base -I$(CLN_DIR)/src/float -I$(CLN_DIR)/src/float/dfloat -I$(CLN_DIR)/src/io
  
  #
  # The Compiler/Assembler/Linker Settings
***************
*** 71,78 ****
                     CC = gcc
                    CXX = c++
                CXXNAME = c++
!                CFLAGS = -O2 -DSPARC
!              CXXFLAGS = -O2 -DSPARC
                LDFLAGS = 
                     AS = as
                ASFLAGS = -DUMMY
--- 74,81 ----
                     CC = gcc
                    CXX = c++
                CXXNAME = c++
!                CFLAGS = -O2
!              CXXFLAGS = -O2 $(CLN_INCLUDES)
                LDFLAGS = 
                     AS = as
                ASFLAGS = -DUMMY
diff -r -c3 LiDIA-1.2.1/include/LiDIA/bigint.h LiDIA/include/LiDIA/bigint.h
*** LiDIA-1.2.1/include/LiDIA/bigint.h	Mon Mar 11 11:22:32 1996
--- LiDIA/include/LiDIA/bigint.h	Sun Nov 17 16:22:03 1996
***************
*** 40,45 ****
--- 40,46 ----
              bigint(unsigned long ul);
              bigint(double d);
              bigint(const bigint & a);
+             bigint(const integer_type_name & II) : I (II) {}
             ~bigint();
  
    /**
***************
*** 155,162 ****
    bigint operator~ () const;
    bigint & operator++ ();
    bigint & operator-- ();
!   bigint & operator++ (int);
!   bigint & operator-- (int);
    int operator ! () const;
  
  #ifndef HEADBANGER
--- 156,163 ----
    bigint operator~ () const;
    bigint & operator++ ();
    bigint & operator-- ();
!   void operator++ (int);
!   void operator-- (int);
    int operator ! () const;
  
  #ifndef HEADBANGER
diff -r -c3 LiDIA-1.2.1/src/interfaces/integers/gmp/bigint.c LiDIA/src/interfaces/integers/gmp/bigint.c
*** LiDIA-1.2.1/src/interfaces/integers/gmp/bigint.c	Thu Feb 22 17:32:32 1996
--- LiDIA/src/interfaces/integers/gmp/bigint.c	Sun Nov 17 17:34:00 1996
***************
*** 439,449 ****
  bigint & bigint::operator-- ()
  { mpz_sub_ui(&I, &I, 1); return *this; }
  
! bigint & bigint::operator++ (int)
! { mpz_add_ui(&I, &I, 1); return *this; }
  
! bigint & bigint::operator-- (int)
! { mpz_sub_ui(&I, &I, 1); return *this; }
  
  int bigint::operator ! () const
  { return (I.size == 0); }
--- 439,449 ----
  bigint & bigint::operator-- ()
  { mpz_sub_ui(&I, &I, 1); return *this; }
  
! void bigint::operator++ (int)
! { mpz_add_ui(&I, &I, 1); }
  
! void bigint::operator-- (int)
! { mpz_sub_ui(&I, &I, 1); }
  
  int bigint::operator ! () const
  { return (I.size == 0); }
***************
*** 478,484 ****
  
  void invert(bigint & a, const bigint & b)
  {
!   if ((a.I.size == 1 || a.I.size == -1) && a.I.d[0] == 1)
      mpz_set(&a.I, &b.I);
    else
      lidia_error_handler("bigint", "invert::inverting of a non-unit.");
--- 478,484 ----
  
  void invert(bigint & a, const bigint & b)
  {
!   if ((b.I.size == 1 || b.I.size == -1) && b.I.d[0] == 1)
      mpz_set(&a.I, &b.I);
    else
      lidia_error_handler("bigint", "invert::inverting of a non-unit.");
***************
*** 501,510 ****
  void power(bigint & c, const bigint & a, const bigint & b)
  {
    bigint exponent, multiplier;
!   if (b.is_negative())
!     c.assign_zero();
!   else if (b.is_zero() || a.is_one())
      c.assign_one();
    else
    {
     exponent.assign(b);
--- 501,510 ----
  void power(bigint & c, const bigint & a, const bigint & b)
  {
    bigint exponent, multiplier;
!   if (b.is_zero() || a.is_one())
      c.assign_one();
+   else if (b.is_negative())
+     c.assign_zero();
    else
    {
     exponent.assign(b);
***************
*** 525,531 ****
    if (i == 0 || a.is_one())
      c.assign_one(); 
    else if (i < 0)
!     c.assign_one(); 
    else
      mpz_pow_ui(&c.I, &a.I, i); 
  } 
--- 525,531 ----
    if (i == 0 || a.is_one())
      c.assign_one(); 
    else if (i < 0)
!     c.assign_zero(); 
    else
      mpz_pow_ui(&c.I, &a.I, i); 
  } 
***************
*** 757,774 ****
  **/
  
  void bigint::read_from_file(FILE * fp)
! { mpz_inp_str(&I, fp, 10); }
  
  void bigint::write_to_file(FILE * fp)
! { mpz_out_str(fp, 10, &I); }
  
  /**
  ** using fscanf/fprintf
  **/
  
  void bigint::scan_from_file(FILE * fp)
! { mpz_inp_raw(&I, fp); }
  
  void bigint::print_to_file(FILE * fp)
! { mpz_out_raw(fp, &I); }
  
--- 757,774 ----
  **/
  
  void bigint::read_from_file(FILE * fp)
! { mpz_inp_raw(&I, fp); }
  
  void bigint::write_to_file(FILE * fp)
! { mpz_out_raw(fp, &I); }
  
  /**
  ** using fscanf/fprintf
  **/
  
  void bigint::scan_from_file(FILE * fp)
! { mpz_inp_str(&I, fp, 10); }
  
  void bigint::print_to_file(FILE * fp)
! { mpz_out_str(fp, 10, &I); }
  
diff -r -c3 LiDIA-1.2.1/src/interfaces/integers/libI/bigint.c LiDIA/src/interfaces/integers/libI/bigint.c
*** LiDIA-1.2.1/src/interfaces/integers/libI/bigint.c	Thu Feb 22 17:32:37 1996
--- LiDIA/src/interfaces/integers/libI/bigint.c	Sun Nov 17 16:23:32 1996
***************
*** 367,377 ****
  bigint & bigint::operator-- ()
  { Idec(&I); return *this; }
  
! bigint & bigint::operator++ (int)
! { Iinc(&I); return *this; }
  
! bigint & bigint::operator-- (int)
! { Idec(&I); return *this; }
  
  int bigint::operator ! () const
  { return (I.length == 0); }
--- 367,377 ----
  bigint & bigint::operator-- ()
  { Idec(&I); return *this; }
  
! void bigint::operator++ (int)
! { Iinc(&I); }
  
! void bigint::operator-- (int)
! { Idec(&I); }
  
  int bigint::operator ! () const
  { return (I.length == 0); }
diff -r -c3 LiDIA-1.2.1/src/interfaces/integers/lip/bigint.c LiDIA/src/interfaces/integers/lip/bigint.c
*** LiDIA-1.2.1/src/interfaces/integers/lip/bigint.c	Thu Feb 22 17:32:38 1996
--- LiDIA/src/interfaces/integers/lip/bigint.c	Sun Nov 17 16:23:56 1996
***************
*** 472,482 ****
  bigint & bigint::operator-- ()
  { zsadd(I, -1, &I); return *this; }
  
! bigint & bigint::operator++ (int)
! { zsadd(I, 1, &I); return *this; }
  
! bigint & bigint::operator-- (int)
! { zsadd(I, -1, &I); return *this; }
  
  int bigint::operator ! () const
  { return ziszero(I); }
--- 472,482 ----
  bigint & bigint::operator-- ()
  { zsadd(I, -1, &I); return *this; }
  
! void bigint::operator++ (int)
! { zsadd(I, 1, &I); }
  
! void bigint::operator-- (int)
! { zsadd(I, -1, &I); }
  
  int bigint::operator ! () const
  { return ziszero(I); }
diff -r -c3 LiDIA-1.2.1/src/simple_classes/factorization/mpqs.c LiDIA/src/simple_classes/factorization/mpqs.c
*** LiDIA-1.2.1/src/simple_classes/factorization/mpqs.c	Wed Mar 13 12:06:10 1996
--- LiDIA/src/simple_classes/factorization/mpqs.c	Sun Nov 17 19:18:49 1996
***************
*** 19,25 ****
  #define WORDS_BIGENDIAN 0
  #endif
  
! #if !defined(__GNUG__)
  #include <signal.h>
  #else
  #define SIGHUP  1       /* hangup */
--- 19,25 ----
  #define WORDS_BIGENDIAN 0
  #endif
  
! #if defined(__linux__) || !defined(__GNUG__)
  #include <signal.h>
  #else
  #define SIGHUP  1       /* hangup */
