Почему моя программа на C ++ такая медленная при переключении с long double на float128?

Я программирую на 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

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]