Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как проверить корректность математических операций
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
ANT
Никак не могу решить следующую проблему в EWARM 6.10: есть вычислительная функция double f(double x, double y); внутри которой производятся вычисления с помощью библиотечных функций sqrt, log, exp, pow и т.д. Ввиду того, что x и y меняются в широких пределах, аргументы библиотечных функций могут принимать некорректные значения, например sqrt(-1), возможны переполнения, деление на 0 и т.д. IAR спокойно делит на 0, вычисляет кв.корень из отрицательного числа и не грохается. Но мне при выходе из функции надо знать, что на промежуточных этапах не было такого рода ошибок. Как это сделать стандартными средствами IAR?
Палыч
Цитата(ANT @ Apr 18 2011, 22:52) *
Как это сделать стандартными средствами IAR?
Проверять значение переменной errno нынче не кашерно?
ANT
Цитата(Палыч @ Apr 19 2011, 09:35) *
Проверять значение переменной errno нынче не кашерно?

Пробовал: Error[Pe020]: identifier "errno" is undefined
scifi
Цитата(ANT @ Apr 19 2011, 10:28) *
Пробовал: Error[Pe020]: identifier "errno" is undefined

Естественно, Вы предварительно включили <errno.h> и вообще прочитали соответствующее руководство?
ANT
Цитата(scifi @ Apr 19 2011, 10:57) *
Естественно, Вы предварительно включили <errno.h> и вообще прочитали соответствующее руководство?

Не включил. Насчёт руководства - где искать? Во встроенном хелпе не разжёвано sad.gif .
scifi
Вот тут можно почитать: errno
В двух словах: перед операцией обнуляем errno, а после операции проверяем и интерпретируем: 0 - всё хорошо, EDOM или ERANGE - ошибка.
ANT
Цитата(scifi @ Apr 19 2011, 11:16) *
Вот тут можно почитать: errno
В двух словах: перед операцией обнуляем errno, а после операции проверяем и интерпретируем: 0 - всё хорошо, EDOM или ERANGE - ошибка.

Огромное спасибо! Теперь можно шлифовать вычислительный алгоритм sm.gif.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.