Я использую C ++ для вычисления различных типов специальных функций (например, функции Ламберта, итерационных методов для оценки инверсий и т. Д.). Во многих случаях очевидно лучший подход к работе с мантиссой и экспонентой напрямую.
Я нашел много ответов, как извлечь части мантиссы и экспоненты, однако все они были просто «академическими случаями с не очень эффективной скоростью вычислений», которые для меня немного бесполезны (моя мотивация работать с мантиссой и экспонентой заключается в улучшении вычислительной скорость). Иногда мне нужно вызвать какую-то конкретную функцию около миллиарда раз (очень дорогие вычисления), поэтому каждая сохраненная вычислительная работа в порядке. И использование "frexp", которое возвращает мантиссу как double, не очень подходит.
Мои вопросы (для компилятора c ++ с плавающей запятой IEEE 754):
1) Как прочитать конкретный бит мантиссы float / double?
2) Как прочитать всю мантиссу в целое число / байт float / double?
3) Те же вопросы, что и в 1), 2) для экспоненты.
4) Те же вопросы, что и в 1), 2), 3) для письма.
С учетом того, что моя мотивация - это более быстрое вычисление, если я работаю с мантиссой или экспонентой напрямую. Я полагаю, что должно быть очень простое решение.
float
/double
, пусть компилятор и FPU сделают все остальное. - person Violet Giraffe   schedule 09.01.2016