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

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

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