Я программирую на Unix, используя компилятор g ++ 4.8.2. В настоящее время мне нужно конвертировать мою программу на C ++, которая на данный момент использует long double
(со значением 64 бит в моем случае), для программы, которая использует __float128
тип (со значением 113 бит). Для этого я использовал пакет libquadmath0 и библиотеку boost, но результирующая программа работает в 10-20 раз медленнее, чем с long double
,
Это сбивает с толку, так как размер значения не намного выше, и я не заметил такой разницы при переходе от double
в long double
, Является ли эта разница во времени нормальной, и если нет, как я могу это исправить?
Код:
#include <stdlib.h>
#include <stdint.h>
#include <stdio.h>
#include <math.h>
#include <complex.h>
extern "C" {
#include <quadmath.h>
}
#include <gmp.h>
#include <iomanip>
#include <cfloat>
#include <boost/multiprecision/float128.hpp>using namespace boost::multiprecision;
using namespace std;
typedef __float128 long_double_t;
void main()
{
...
}
Инструкция по компиляции:
g++ --std=c++11 main.cc -o main -lgmp -lquadmath -Ofast -m64
Задача ещё не решена.