Описание тега fenv

1 ответ

fegetenv() очищает маску исключений в x86_64-linux

Давайте возьмем следующую программу: #include <stdio.h> #include <fenv.h> int main (void) { fenv_t e; printf ("%d\n", fegetexcept () & FE_INVALID ? 1 : 0); feenableexcept (FE_INVALID); printf ("%d\n", fegetexcept () & FE_INVALID …
1 ответ

Существует ли прагма FENV_ACCESS в C++11 и выше?

Читая отчет об ошибке для clang, не поддерживающей прагму FENV_ACCESS, я наткнулся на комментарий: Настройка режима округления без использования #pragma STDC FENV_ACCESS ON вызывает неопределенное поведение. См. C11 7.6.1/2. (Эта прагма не существуе…
25 мар '16 в 10:40
1 ответ

Какая польза от feholdexcept и т. Д.?

Документация (в стандартах) для всех fenv.h довольно запутанно, но меня особенно смущает feholdexcept и концепция "безостановочного режима" для исключения с плавающей запятой. Насколько я могу судить, в любой реализации IEEE с плавающей запятой искл…
12 июн '11 в 13:36
0 ответов

Использование fenv.h в MinGW

Я хочу изменить режим округления с плавающей запятой, используя стандартную библиотеку, как предложено в этом разделе и cppreference. Я использую MingGW как среду. CMake используется для сборки проекта. Мой код: main.cpp: #include <stdio.h> #i…
20 ноя '16 в 14:53
1 ответ

Может ли feenable, кроме как повлиять на производительность программы?

Я хотел бы включить исключения с плавающей запятой в некотором критическом коде, используя fpeenableexcept или _MM_SET_EXCEPTION_MASK (в Mac OS X). Есть ли в x86/x86-64 случаи, когда изменение включенных исключений ухудшит производительность програм…
11 июн '15 в 07:34
1 ответ

Добавление двух чисел с плавающей точкой

Я хотел бы вычислить сумму округленных в большую сторону двух двоичных чисел IEEE 754. С этой целью я написал программу C99 ниже: #include <stdio.h> #include <fenv.h> #pragma STDC FENV_ACCESS ON int main(int c, char *v[]){ fesetround(FE_…
02 июл '14 в 21:48
5 ответов

Исключения с плавающей точкой - ошибка gcc?

Рассмотрим следующий код: #include <fenv.h> #include <stdio.h> int main() { #pragma STDC FENV_ACCESS ON 1.0/0.0; printf("%x\n", fetestexcept(FE_ALL_EXCEPT)); } Я ожидаю, что он напечатает ненулевое значение, соответствующее FE_DIVBYZERO,…
13 июн '11 в 21:47
0 ответов

Почему я генерирую неопределенную ссылку на _fe_dfl_env в 64-битном Cygwin

$ cat test.c #include <stdio.h> #include <fenv.h> int main(int argc, char** argv) { fesetenv(FE_DFL_ENV); } $ gcc -o a.exe test.c /tmp/ccxbZr33.o:test.c:(.rdata$.refptr._fe_dfl_env[.refptr._fe_dfl_env]+0x0): undefined reference to `_fe_d…
25 сен '13 в 16:28
1 ответ

C99 fenv.h для компиляторов MS

Кто-нибудь знает достойную реализацию C99 fenv.h для компиляторов MS? Я предполагаю, что это не будет трудно сделать; Я просто хочу сэкономить время.
10 авг '10 в 08:14
0 ответов

Как поднять различные исключения с плавающей запятой в C?

Я заинтересован в повышении исключений с плавающей запятой, таких как Division by zero, Overflow, Underflow, и т.д. Я думаю, что то, что я пытаюсь сделать, возможно, если мы можем изменить поведение ловушки по умолчанию при возникновении исключения …
27 июн '19 в 06:33
2 ответа

Как создаются ловушки для исключений с плавающей запятой?

Я хочу знать, какой код и файлы в библиотеке glibc отвечают за создание ловушек для исключений с плавающей запятой, когда ловушки включены. В настоящее время GCC для RISC-V не перехватывает исключения с плавающей запятой. Я заинтересован в добавлени…
25 июн '19 в 07:43
2 ответа

C++ установка среды исключения с плавающей запятой

Я изо всех сил пытаюсь установить std::fenv переносимым способом. На основе этой страницы cppreference кажется, чтоfesetexceptflag(const std::fexcept_t*,int)должен помочь мне сделать трюк. С другой стороны, я обнаружил, что GNU также предлагаетfeena…
18 мар '20 в 01:58
0 ответов

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

Пример кода (t91.c): #include <stdio.h> #include <fenv.h> #if _MSC_VER #pragma fenv_access (on) #else #pragma STDC FENV_ACCESS ON #endif void show_fe_exceptions(void) { printf("exceptions raised:"); if(fetestexcept(FE_DIVBYZERO)) printf(…
15 мар '21 в 22:19
0 ответов

Требуется ли предоставление fenv.h соответствующей реализацией (__STDC__ равно 1)?

Простой вопрос: соответствует ли реализация ( __STDC__ 1) требуется для предоставления? Другими словами: если реализация не предоставляет fenv.h, тогда это сделает такую ​​реализацию несоответствующей?
13 май '21 в 13:01
1 ответ

Гарантирует ли режим округления FE_TONEAREST стандарта C, что промежуточные связи округляются до четного?

Я пишу код, который зависит от половинной связи в округлении C до четного. При использовании rint с режимом округления как FE_TONEAREST я не нашел гарантии в стандарте C, в которой говорится, как связи обрабатываются с помощью FE_NEAREST. На страниц…
28 сен '21 в 19:37
1 ответ

Почему fetestexcept в C++ скомпилирован в вызов функции, а не встроен

Я оцениваю использование (очистка и запросы) исключений с плавающей запятой в критически важном для производительности/"горячем" коде. Глядя на полученный двоичный файл, я заметил, что ни GCC, ни Clang не расширяют вызов встроенной последовательност…
25 янв '21 в 20:19
0 ответов

Параллелизм в среде с плавающей запятой в многопоточной среде

У меня есть программа, которая скомпилирована в библиотеке и интегрирована в многопоточную среду. Поскольку вызывающая программа перехватывает исключения, а мне нужна среда с плавающей запятой, совместимая с IEEE754 (без перехвата), я восстанавливаю…