Методы обработки переполнения и округления

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

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