I'm trying to use the boost multiprecision library in C++ and I've encountered problems with the gmp_int type. My whole purpose in getting the boost library was to do arithmetic with arbitrarily large integers, so I made the following code just to see if everything worked:
#include <iostream>
#include <boost/multiprecision/gmp.hpp>
using namespace std;
namespace mp=boost::multiprecision;
int main()
{
mp::gmp_int n;
cin>>n; //Here's the
n=n*2 //problem (at least according to Xcode 5).
cout<<n<<"\n";
return 0;
}
But it's throwing "invalid operand" errors in the lines I've marked above. If anyone can find a fix for this and - more importantly - explain what went wrong in the first place it would be much appreciated.
[edit]
sehe's answer seems to have solved the first problem and created a new one. Now I'm getting this:
Undefined symbols for architecture x86_64: "___gmp_get_memory_functions", referenced from: boost::multiprecision::backends::gmp_int::str(long, unsigned int) const in main.o "___gmpz_clear", referenced from: boost::multiprecision::backends::gmp_int::~gmp_int() in main.o "___gmpz_get_str", referenced from: boost::multiprecision::backends::gmp_int::str(long, unsigned int) const in main.o "___gmpz_init", referenced from: boost::multiprecision::backends::gmp_int::operator=(char const*) in main.o boost::multiprecision::backends::gmp_int::gmp_int() in main.o "___gmpz_mul_ui", referenced from: boost::multiprecision::backends::eval_multiply(boost::multiprecision::backends::gmp_int&, boost::multiprecision::backends::gmp_int const&, long) in main.o "___gmpz_neg", referenced from: boost::multiprecision::backends::eval_multiply(boost::multiprecision::backends::gmp_int&, boost::multiprecision::backends::gmp_int const&, long) in main.o "___gmpz_set_str", referenced from: boost::multiprecision::backends::gmp_int::operator=(char const*) in main.o "___gmpz_set_ui", referenced from: boost::multiprecision::backends::gmp_int::operator=(char const*) in main.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
[/edit]