Округление режима: самый простой

Самый простой режим округления пытается уменьшать или избавить от необходимости дополнительный код округления в вашем сгенерированном коде с помощью комбинации методов, обсужденных в следующих разделах:

Почти во всех случаях самый простой режим округления производит самый эффективный сгенерированный код. Для очень специализированного случая деления, которое соответствует трем определенным критериям, вокруг на пол, может быть более эффективным. Эти три критерия:

  • Фиксированная точка/целое число подписала деление

  • Знаменатель является инвариантной константой

  • Знаменатель является точной степенью двойки

Для этого случая, устанавливает округляющийся режим на пол и Образцовые Параметры конфигурации> Аппаратная реализация> Производственное Оборудование>, деление Целого числа со знаком округляется к параметру, чтобы описать округляющееся поведение вашей производственной платформы.

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

Блок Data Type Conversion бросает сигнал с одним типом данных к другому типу данных. Когда блок бросает сигнал к типу данных с более коротким размером слова, чем исходный тип данных, точность потеряна, и округление происходит. Самый простой режим округления автоматически выбирает лучшее округление для этих случаев на основе следующих правил:

  • При кастинге от одного целого числа или типа данных с фиксированной точкой другому, самый простой режим округляется к полу.

  • При кастинге от типа данных с плавающей точкой до целого числа или типа данных с фиксированной точкой, самый простой режим округляется к нулю.

Оптимизируйте округление для высокоуровневых арифметических операций

Самый простой режим округления выбирает лучшее округление для каждой высокоуровневой арифметической операции. Например, рассмотрите операцию y = u1 × u2 / u3 реализовал использование блока продукта:

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

Самый простой режим округления:

  • Раунды на пол для всех операций неделения.

  • Раунды, чтобы обнулить или поставить в тупик для деления, в зависимости от установки Образцовых Параметров конфигурации> Аппаратная реализация> Производственное Оборудование> деление Целого числа со знаком округляются к параметру.

    Чтобы получить самый эффективный код, необходимо установить параметр Signed integer division rounds to, чтобы задать, округляется ли производственная платформа, чтобы обнулить или на пол для целочисленного деления. Большинство производственных платформ вокруг, чтобы обнулить для операций целочисленного деления. Обратите внимание на то, что Simplest, округляющийся, включает “смешанный режим”, округляющийся для таких случаев, когда это округляется на пол для умножения и обнулять для деления.

    Если параметр Signed integer division rounds to устанавливается на Undefined, самый простой режим округления не может смочь произвести самый эффективный код. Самый простой режим округляется, чтобы обнулить для деления для этого случая, но это не может полагаться на вашу производственную платформу, чтобы выполнить округление, потому что параметром является Undefined. Поэтому вам нужен дополнительный код округления, чтобы гарантировать округление, чтобы обнулить поведение.

    Примечание

    Для деления фиксированной точки со знаком, где знаменатель является инвариантной постоянной степенью 2, самый простой режим округления не генерирует самый эффективный код. В этом случае установите округляющийся режим на пол.

Оптимизируйте округление для промежуточных арифметических операций

Для вычислений с фиксированной точкой с ненулевым наклоном и смещением, самый простой режим округления также выбирает лучшее округление для каждой промежуточной арифметической операции. Например, рассмотрите операцию y = u1 / u2 реализовал использование блока продукта, где u1 и u2 являются количествами фиксированной точки:

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

y=u1u2=S1Q1+B1S2Q2+B2

Самый простой режим округления выполняет лучшее округление для каждой из этих операций, высокого уровня и промежуточного звена, чтобы произвести самый эффективный код. Правила, использованные, чтобы выбрать соответствующее округление для промежуточных арифметических операций, эквивалентны, описанные в Оптимизируют Округление для Высокоуровневых Арифметических операций. Снова, это включает округление смешанного режима, с наиболее распространенным случаем, являющимся круглым к полу, используемому для сложений, вычитаний, и умножается, и вокруг к нулю, используемому для делений.

Помните, что генерация самого эффективного кода с помощью самого простого режима округления требует, чтобы вы установили Образцовые Параметры конфигурации> Аппаратная реализация> Производственное Оборудование>, деление Целого числа со знаком округляется к параметру, чтобы описать округляющееся поведение вашей производственной платформы.

Примечание

Для деления фиксированной точки со знаком, где знаменатель является инвариантной постоянной степенью 2, самый простой режим округления не генерирует самый эффективный код. В этом случае установите округляющийся режим на пол.