exponenta event banner

himl_0009: код MATLAB с равными/не равными реляционными операторами

Идентификатор: Заголовокhiml_0009: код MATLAB ® с равными/не равными реляционными операторами
Описание

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

  • Одинок

  • Дважды

  • Типы, полученные из одного или двух типов данных

Примечание

Рассмотрим следующие фрагменты кода:

  1. sqrt(2)^2 == 2

  2. sqrt(2^2) == 2

Математически оба фрагмента верны. Однако из-за эффектов округления с плавающей запятой получаются следующие результаты:

  1. false

  2. true

Объяснение
  • Предотвращение непредвиденных результатов

Проверки помощника по моделиПроверка использования операторов равенства в функциональных блоках MATLAB (Simulink Check)
Ссылки
  • DO-331, Раздел MB.6.3.1.g «Алгоритмы точны»
    EN 50128, MB.6.3.2.g «Оборонительное программирование»

  • IEC 61508-3, Таблица A.3 (3) 'Поднабор языка "
    IEC 61508-3, таблица A.4 (3) «Оборонительное программирование »

  • МЭК 62304, 5.5.3 - Критерии приемки установки программного обеспечения

  • ISO 26262-6, Таблица 1 (1b) «Использование языковых поднаборов»
    ISO 26262-6, Таблица 1 (1d) «Использование защитных технологий реализации»

  • EN 50128, Таблица A.4 (11) «Поднабор языка»
    EN 50128, таблица A.3 (1) «Оборонительное программирование»

  • MISRA C:2012, Dir 1.1

См. также

jc_0481: Использование жестких сравнений равенства для чисел с плавающей запятой в Stateflow (Simulink)

hisl_0016: Использование блоков, вычисляющих реляционные операторы (Simulink)

Последнее изменениеR2018b
Примеры

Рекомендуется

  • myDouble >= 0.99 && myDouble <= 1.01; % test range

Не рекомендуется

  • myDouble == 1.0
    mySingle ~= 15.0