IEEE с плавающей точкой и быстрое представление с плавающей точкой в ​​памяти

Процессор BFF-533 от Analog Devices не предлагает встроенную поддержку с плавающей запятой, но предлагает эмуляцию с плавающей запятой.

Используя IDE VisualDSP ++, пользователю разрешается выбирать между высокой производительностью с плавающей запятой и строгим соответствием IEEE.

Из того, что я понимаю, разница между этими двумя привести к другому представлению значения с плавающей запятой в памяти, поэтому я сделал следующий тест:

union TestType
{
float hello;
char test[4];
};

TestType tt;
tt.hello = 0.00123456789;

Я скомпилировал и запустил это с обоими параметрами, ожидая увидеть разные значения в тестовом массиве, но я получал одно и то же при каждом запуске:

введите описание изображения здесь

Может кто-нибудь объяснить, почему я вижу то, что представляется представлением IEEE в обоих прогонах?

1

Решение

В документе, на который вы ссылаетесь, обсуждается пользовательский fastfloat16 тип. Вы используете родной float введите здесь. Я не думаю, что они эквивалентны, независимо от настроек VisualDSP.

«Строгое соответствие IEEE» обычно интерпретируется как «даже крайние случаи обрабатываются правильно». Крайние случаи для IEE754 — это такие вещи, как денормалы, деление на ноль, бесконечности, не числа и т. Д. Один из примеров в IEEE754 NaN != NaN, Это означает, что вы не можете сделать быстрое 32-битное сравнение. Другой пример — IEEE754 требует, чтобы основные математические операции были точными до последнего бита. При использовании схемы с плавающей запятой IEEE754 достигается значительное ускорение, но не математика IEEE754.

3

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

Других решений пока нет …