Задайте стандартные расширения библиотеки, которые генератор кода использует для математических операций. Когда вы генерируете код для новой модели или с новым объектом конфигурации модели, генератор кода пользуется библиотекой 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 model: rtwdemo_clibsup ### Successful completion of code generation for model: 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 model: rtwdemo_clibsup ### Successful completion of code generation for model: 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); }