Я разработал небольшую программу, которая преобразует случайные двойные NANS в поплавки и печатает шестигранные значения обоих: < /p>
#include
#include
#include
#include
#include
using namespace std;
int main()
{
mt19937_64 mt;
uniform_int_distribution uid( 0x7FF0000000000001u, 0x7FFFFFFFFFFFFFFFu );
for( size_t r = 100; r; --r )
{
uint64_t b64 = uid( mt ) | mt() & numeric_limits::min();
double f64 = bit_cast( b64 );
feclearexcept( FE_ALL_EXCEPT );
float f32 = (float)f64;
bool invalid = fetestexcept( FE_INVALID );
uint32_t b32 = bit_cast( f32 );
auto print = []( UInt ui )
requires (sizeof(UInt) == 4 || sizeof(UInt) == 8)
{
constexpr bool _64 = sizeof(UInt) == 8;
bool sign = (make_signed_t)ui < 0;
bool quiet = ui >> (_64 ? 51 : 22) & 1;
UInt mant = ui & (_64 ? 0x7FFFFFFFFFFFFu : 0x3FFFFFu);
cout +:Q:2a6aae:*
+:Q:4fda297096d44 -> +:Q:27ed14:*
+:Q:6f253867322ed -> +:Q:37929c:*
-:Q:5a5501f76531e -> -:Q:2d2a80:*
-:S:5ea264d24cafb -> -:Q:2f5132:E
-:Q:16fd21923d828 -> -:Q:0b7e90:*
+:S:0175f4ea08c6e -> +:Q:00bafa:E
+:S:4c103d0c50172 -> +:Q:26081e:E
-:Q:39d88e9704345 -> -:Q:1cec47:*
-:Q:66e0124e32eda -> -:Q:337009:*
+:S:20f9dbcc42dee -> +:Q:107ced:E
-:S:20dcfe42bcb15 -> -:Q:106e7f:E
+:Q:4e488f3a3480b -> +:Q:272447:*
...
< /code>
Каковы правила, как мантисса двойного NAN преобразуется в Float Nan? Как и в любых расчетах с сигнализацией NAN, результатом является тихое NAN, а исключение FE_INVALID установлено. Но как определяются дальнейшие биты?>
Подробнее здесь: https://stackoverflow.com/questions/794 ... conversion
Двойной, чтобы поплавать нановой конверсии ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1740555656
Anonymous
Я разработал небольшую программу, которая преобразует случайные двойные NANS в поплавки и печатает шестигранные значения обоих: < /p>
#include
#include
#include
#include
#include
using namespace std;
int main()
{
mt19937_64 mt;
uniform_int_distribution uid( 0x7FF0000000000001u, 0x7FFFFFFFFFFFFFFFu );
for( size_t r = 100; r; --r )
{
uint64_t b64 = uid( mt ) | mt() & numeric_limits::min();
double f64 = bit_cast( b64 );
feclearexcept( FE_ALL_EXCEPT );
float f32 = (float)f64;
bool invalid = fetestexcept( FE_INVALID );
uint32_t b32 = bit_cast( f32 );
auto print = []( UInt ui )
requires (sizeof(UInt) == 4 || sizeof(UInt) == 8)
{
constexpr bool _64 = sizeof(UInt) == 8;
bool sign = (make_signed_t)ui < 0;
bool quiet = ui >> (_64 ? 51 : 22) & 1;
UInt mant = ui & (_64 ? 0x7FFFFFFFFFFFFu : 0x3FFFFFu);
cout +:Q:2a6aae:*
+:Q:4fda297096d44 -> +:Q:27ed14:*
+:Q:6f253867322ed -> +:Q:37929c:*
-:Q:5a5501f76531e -> -:Q:2d2a80:*
-:S:5ea264d24cafb -> -:Q:2f5132:E
-:Q:16fd21923d828 -> -:Q:0b7e90:*
+:S:0175f4ea08c6e -> +:Q:00bafa:E
+:S:4c103d0c50172 -> +:Q:26081e:E
-:Q:39d88e9704345 -> -:Q:1cec47:*
-:Q:66e0124e32eda -> -:Q:337009:*
+:S:20f9dbcc42dee -> +:Q:107ced:E
-:S:20dcfe42bcb15 -> -:Q:106e7f:E
+:Q:4e488f3a3480b -> +:Q:272447:*
...
< /code>
Каковы правила, как мантисса двойного NAN преобразуется в Float Nan? Как и в любых расчетах с сигнализацией NAN, результатом является тихое NAN, а исключение FE_INVALID установлено. Но как определяются дальнейшие биты?>
Подробнее здесь: [url]https://stackoverflow.com/questions/79468473/double-to-float-nan-conversion[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия