Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

ターゲット システムの標準の数学ライブラリの設定

コード ジェネレーターが数学演算に使用する標準ライブラリ拡張を指定します。新しいモデルまたは新しいコンフィギュレーション セット オブジェクトをもつモデルのコードを生成する場合、コード ジェネレーターは既定で ISO®/IEC 9899:1999 C (C99 (ISO)) ライブラリを使用します。既存のモデルおよび既存のコンフィギュレーション セット オブジェクトについては、コード ジェネレーターは [標準の数学ライブラリ] パラメーターで指定されているライブラリを使用します。

コンパイラが ISO®/IEC 9899:1990 (C89/C90 (ANSI))、ISO/IEC 14882:2003(C++03 (ISO) または ISO/IEC 14882:2011(C++11 (ISO)) 数学ライブラリ拡張をサポートしている場合、標準の数学ライブラリの設定を変更できます。C++03 (ISO) または C++11 (ISO) ライブラリは、プログラミング言語に C++ を選択する場合に使用できます。

C99 ライブラリは、コンパイラによって提供される標準の ANSI C を超えるパフォーマンスを活用します。C99 ライブラリを使用すると、コード ジェネレーターは可能な場合 ISO C 関数の呼び出しを生成します。たとえば、生成コードでは、sqrt() の代わりに単精度データの演算を行う関数 sqrtf() を呼び出します。

ライブラリの設定を変更するには、[コンフィギュレーション パラメーター]、[標準の数学ライブラリ] パラメーターを使用します。コマンド ラインの対応するコマンドは TargetLangStandard です。

ANSI C コードの生成と検査

1. モデル例 rtwdemo_clibsup を開きます。

2. コードを生成します。

### Starting build procedure for: rtwdemo_clibsup
### Successful completion of code generation for: rtwdemo_clibsup

Build Summary

Top model targets built:

Model            Action          Rebuild Reason                                    
===================================================================================
rtwdemo_clibsup  Code generated  Code generation information file does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 14.412s

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);
  }

ISO C コードの生成と検査

1. [標準の数学ライブラリ] の設定を C99 (ISO) に変更します。または、コマンド ラインで、TargetLangStandardC99 (ISO) に設定します。

2. コードを再度生成します。

### Starting build procedure for: rtwdemo_clibsup
### Successful completion of code generation for: rtwdemo_clibsup

Build Summary

Top model targets built:

Model            Action          Rebuild Reason                                    
===================================================================================
rtwdemo_clibsup  Code generated  Code generation information file does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 13.598s

3. 生成されたファイル rtwdemo_clibsup.c のコードを再度調べます。生成されたコードでは sqrt ではなく関数 sqrtf を呼び出すようになりました。

  if (rtb_Abs2 < 0.0F) {
    rtb_Abs2 = -sqrtf(fabsf(rtb_Abs2));
  } else {
    rtb_Abs2 = sqrtf(rtb_Abs2);
  }

関連情報