Обрабатывающее переполнение и округление методов

Лексемы для обрабатывающего переполнения и округление методов

API для написанных пользователем S-функций фиксированной точки обеспечивает функции для некоторых математических операций, таких как преобразования. Когда эти операции выполняются, потеря точности или переполнения может произойти. Лексемы в следующих таблицах позволяют вам управлять способом, которым API-функция обрабатывает потерю точности и переполнение. Типом данных методов обработки переполнения является fxpModeOverflow. Типом данных округляющихся режимов является fxpModeRounding.

Лексемы обработки переполнения

Лексема

Описание

FXP_OVERFLOW_SATURATE

Насыщайте переполнение

FXP_OVERFLOW_WRAP

Перенесите переполнение

Округление лексем метода

Лексема

Описание

FXP_ROUND_CEIL

Вокруг к самому близкому представимому номеру в направлении положительной бесконечности

FXP_ROUND_CONVERGENT

Вокруг к ближайшему целому числу со связями, округляющимися к самому близкому даже целое число

FXP_ROUND_FLOOR

Вокруг к самому близкому представимому номеру в направлении отрицательной бесконечности

FXP_ROUND_NEAR

Вокруг к самому близкому представимому номеру, с точной средней точкой, округленной в направлении положительной бесконечности

FXP_ROUND_NEAR_ML

Вокруг к самому близкому. Связывает к отрицательной бесконечности для отрицательных чисел, и к положительной бесконечности для положительных чисел

FXP_ROUND_SIMPLEST

Автоматически выбирает между раундом к полу и вокруг к нулю, чтобы произвести сгенерированный код, который максимально эффективен

FXP_ROUND_ZERO

Вокруг к самому близкому представимому номеру в направлении нуля

Структура логгирования переполнения

Математические функции API, такой как ssFxpConvert, может столкнуться с переполнением при проведении операции. Эти функции обеспечивают механизм, чтобы регистрировать вхождение переполнения и сообщить, что входят вызывающей стороне.

Можно использовать структуру логгирования переполнения фиксированной точки в S-функции путем определения переменной типа данных fxpOverflowLogs. Некоторые API-функции, такой как ssFxpConvert, примите указатель на эту структуру в качестве аргумента. Функция инициализирует структуру логгирования и обеспечивает количество каждого следующие события, которые происходят, в то время как функция выполняется:

  • Переполнение

  • Насыщение

  • Разделиться на нули

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

Следующие поля содержат информацию о количестве события структуры:

  • OverflowOccurred

  • SaturationOccurred

  • DivisionByZeroOccurred