2009-04-04 5 views
10

Я просто потратил свою неделю на общение с предметом, и нашел no язык, который получил спецификацию IEEE 754.Какие языки имеют IEEE 754?

Даже GCC не уважает соответствующую часть C99 (она игнорирует прагму FENV_ACCESS, и мне сказали, что мои рабочие примеры были просто удачей).

Невозможно (AFAIK) уважать спецификацию с библиотечными функциями, вам нужна поддержка языка, потому что некоторые общие оптимизации запрещены, когда вы играете с флагами или округлением.

Итак, вот мой реальный вопрос: существуют ли там языки (appart from C/C++ или raw assembly), которые дают мне доступ к режимам округления, флагом исключений и исчислению?

+0

Вы имеете в виду языки или языки? Я предполагаю, что вы хотите проверить и изменить все, что может измениться (например, режим округления), а не только соответствие IEEE 754 в одной модели. –

ответ

0

AFAIK, даже аппаратные блоки FPU полностью не используют полную спецификацию IEEE-754. Таким образом, в зависимости от того, что вам нужно, вам может быть не повезло, пытаясь его получить. Возможно, поэтому ни один язык не понимает это полностью.

+1

для этого были созданы ловушки для солофонов: вы можете вызвать программное обеспечение для завершения работы, которую не имеет FPU. Я думаю, что это то, как генерируются субнормальные явления. – nraynaud

+0

@nraynaud в поднаборах x86 обрабатываются аппаратно, другие архитектуры в основном обрабатывают их в программном обеспечении –

2

Поскольку вы говорите о «жестких» частях IEEE 754, я бы предположил, что лучше всего использовать Fortran. Согласно статье Википедии, Fortran 2003 по крайней мере поддерживает обработку исключений с плавающей запятой.

0

Похоже, Factor делает это, и ссылка утверждает, что D тоже SBCL.