Есть ли способ проверить, доступны ли 128-битные целые числа?C++

Программы на C++. Форум разработчиков
Anonymous
Есть ли способ проверить, доступны ли 128-битные целые числа?

Сообщение Anonymous »

Я работаю над математической библиотекой с фиксированной запятой. Общепринятый способ умножения чисел с фиксированной точкой — умножить их на целочисленную переменную, большую, чем то, что вы сохраняете, а затем сдвинуть результат вправо в зависимости от масштабного коэффициента.
Дело в том, что я уже использую для хранения 64-битные целые числа, поэтому для того, чтобы иметь возможность умножать два значения, мне понадобится доступ к 128-битному целому числу. В противном случае мне придется разделить каждое значение на два 32-битных целых числа и умножить их отдельно. (Либо так, либо сделать что-нибудь творческое с std::bitset; я еще не решил.)
Другими словами, мне нужно сделать что-то вроде следующего псевдокод:

Код: Выделить всё

typedef int64_t storage_t;

if (type_exits(int128_t)) {
typedef int128_t math_t;
const bool use_32_bit_algorithm = false;
} else if (type_exists(__int128)) {
typedef __int128 math_t;
const bool use_32_bit_algorithm = false;
} else {
typedef int64_t math_t;
const bool use_32_bit_algorithm = true;
}
Как реализовать type_exists()?

Подробнее здесь: https://stackoverflow.com/questions/791 ... -available

Вернуться в «C++»