c++ interface: operator difficulties

apokhare at math.uwaterloo.ca apokhare at math.uwaterloo.ca
Thu Aug 5 18:55:48 CEST 2004

A simple program to use gmp's c++ interface (4.1.3) segfaults when i attempt to
use the overloaded operators.  I have no clue what it's doing wrong.

the code:

//### testgmp.cc ###//

#include <iostream>
#include <gmpxx.h>
using namespace std;
int main(void)
mpf_class a (1.5);
mpf_class b (3.0);
mpf_class c (0.0);
cout <<a<<endl;
cout <<b<<endl;
cout <<c<<endl;

c = a+b;  //offending line

return 0;

the output:

Segmentation fault


The program is compiled using:
g++ testgmp.cc -lgmpxx -lgmp -g -gdwarf-2 -g3

uname -a says:
Linux localhost.localdomain 2.4.20-6 #1 Thu Feb 27 10:06:59 EST 2003 i686 i686
i386 GNU/Linux
./config.guess says:


gcc -v says:

Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --enable-shared --enable-threads=posix
--disable-checking --with-system-zlib --enable-__cxa_atexit --host=i386-redhat-linux
Thread model: posix
gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)

a bt in gdb says:

#0  0x00000000 in ?? ()
#1  0x400288fe in __gmpf_get_prec (x=0xbfffe8c0) at get_prc.c:27
#2  0x08048ad8 in __gmp_set_expr<__gmp_binary_expr<__gmp_expr<__gmpf_value,
__gmpf_value>, __gmp_expr<__gmpf_value, __gmpf_value>, __gmp_binary_plus> > (
   f=0xbfffe8c0, expr=@0xbfffe8b8) at gmpxx.h:3186
#3  0x08048aa0 in operator=<__gmpf_value,
__gmp_binary_expr<__gmp_expr<__gmpf_value, __gmpf_value>,
__gmp_expr<__gmpf_value, __gmpf_value>, __gmp_binary_plus> > (this=0xbfffe8c0,
expr=@0xbfffe8b8) at gmpxx.h:2790
#4  0x08048962 in main () at testgmp.cc:19
#5  0x42015504 in __libc_start_main () from /lib/tls/libc.so.6

and a frame 1 list gives

22      #include "gmp.h"
23      #include "gmp-impl.h"
25      unsigned long int
26      mpf_get_prec (mpf_srcptr x)
27      {
28        return __GMPF_PREC_TO_BITS (x->_mp_prec);
29      }

gmp was compiled using

./configure --enable-mpfr --enable-cxx --disable-shared

I apologize if this should have been sent to bugs, but I am not sure it is a bug.

by the way, does anybody use  #gmp on freenode?


This mail sent through www.mywaterloo.ca

More information about the gmp-discuss mailing list