Как я могу перечислить все возможные значения типа данных с плавающей точкой? Я могу сделать это использование объединения в C или C++, но это будет портативно?
Как это может быть сделано на других языках? JavaScript?
Позвольте нам просто предположить, что я использую это повторение для отображения theta
кому: sin(theta)
.
Как я могу перечислить все возможные значения типа данных с плавающей запятой?
Посредством битовой перестановки IEEE -754 представление вашего значения с плавающей запятой, для числа с плавающей запятой вам нужно 2 ^ 32 различных представления, предполагая, что 4 байта на одно значение с плавающей запятой потребуют 16 ГБ памяти.
Я предполагаю, что вам нужна таблица поиска для синусоидальной функции, просто выполните цикл от 0 до 2 * PI с шагом требуемой точности.
Я не могу придумать переносимый способ сделать это. Но с учетом 64-битного представления (стандартный IEEE double) и предположения, что для генерации одного значения потребуется одна наносекунда, для генерации всех возможных значений потребуется более 500 лет. Так что у вас есть достаточно времени, чтобы придумать алгоритм :) ...
Взгляните на этого человека страницы для nextafter () и nextafterf (). Они позволяют переходить от числа с плавающей запятой к следующему ближайшему. Вы можете использовать один из них для посещения каждого номера FP по порядку.
Подход объединения не совсем переносим. Это зависит от размера используемых вами типов. (Если sizeof (your_fp_type)> sizeof (your_int_type), вы не сможете выполнить итерацию по всему диапазону, даже если бы у вас было время.)
В любом случае, поймите, что возможные значения с плавающей запятой не являются не распределяются равномерно по ассортименту любого выбранного вами типа. Разница между значениями увеличивается по мере удаления от 0. Учитывая это, и время, необходимое для создания такого списка, и тот факт, что у вас даже недостаточно места на HD для представления всех возможных двойников (я гарантирую вы этого не сделаете!), не говоря уже об оперативной памяти ... Я сомневаюсь в ценности создания такого списка. Поиск значения займет больше времени, чем просто выполнение расчета.