Задайте стандартные расширения библиотеки, которые генератор кода использует в математических операциях. Когда вы генерируете код для новой модели или с новым объектом конфигурации модели, генератор кода пользуется библиотекой ISO®/IEC 9899:1999 C (C99 (ISO)) по умолчанию. Для существующих ранее моделей и объектов конфигурации модели, генератор кода пользуется библиотекой, заданной Стандартным математическим параметром библиотеки.
Если ваш компилятор поддерживает ISO®/IEC 9899:1990 (C89/C90 (ANSI)) или ISO/IEC 14882:2003 (C++ 03 (ISO)) математические расширения библиотеки, можно изменить стандартные математические настройки библиотеки. C++ 03 библиотеки (ISO) являются опцией, когда вы выбираете C ++ для языка программирования.
Библиотека C99 усиливает производительность, которую компилятор предлагает по стандартному ANSI C. При использовании библиотеки C99 генератор кода производит вызовы функций ISO C, если это возможно. Например, сгенерированный код вызывает функциональный sqrtf()
, который работает с данными с одинарной точностью вместо sqrt()
.
Чтобы изменить настройки библиотеки, используйте Параметры конфигурации> Стандартный математический параметр библиотеки. Эквивалентной командной строкой является TargetLangStandard
.
1. Откройте модель rtwdemo_clibsup
в качестве примера.
2. Сгенерируйте код.
### Starting build procedure for: rtwdemo_clibsup ### Successful completion of code generation for: rtwdemo_clibsup
3. Исследуйте код в сгенерированном файле rtwdemo_clibsup.c
. Обратите внимание на то, что код вызывает sqrt
функция.
if (rtb_Abs2 < 0.0F) { rtb_Abs2 = -(real32_T)sqrt((real32_T)fabs(rtb_Abs2)); } else { rtb_Abs2 = (real32_T)sqrt(rtb_Abs2); }
1. Измените настройки Стандартной математической библиотеки к C99 (ISO)
. В качестве альтернативы в командной строке, набор TargetLangStandard
к C99 (ISO)
.
2. Регенерируйте код.
### Starting build procedure for: rtwdemo_clibsup ### Successful completion of code generation for: rtwdemo_clibsup
3. Вновь исследуйте код в сгенерированном файле rtwdemo_clibsup.c
. Теперь сгенерированный код вызывает функциональный sqrtf
вместо sqrt
.
if (rtb_Abs2 < 0.0F) { rtb_Abs2 = -sqrtf(fabsf(rtb_Abs2)); } else { rtb_Abs2 = sqrtf(rtb_Abs2); }