関連テクノロジー
Mathematica からコード生成する場合には,Mathematica 言語で書かれたプログラムを別の言語に変換してから,そのプログラムが実行できるようにサポートする必要がある.Mathematica コンパイラは,C言語でのコード生成を行うシステムを提供する.
このセクションでは,コード生成に関係するテクノロジーについて説明する.
Mathematica コンパイラ
Mathematica コンパイラは,Mathematica 計算を高速化し使用することができる方法である.これは計算についての仮定を取り,これをより効率的な方法で書き直すことによって行う.
Mathematica コンパイラを使う重要な方法は関数Compileを使う方法である.
| In[12]:= |
| Out[12]= |
コンパイルされた関数は別の Mathematica 関数がそれに実数の入力を渡す方法と同じ方法で使用することができる.
| In[13]:= |
| Out[13]= |
しかし,コンパイルされた関数に実数ではない入力が渡されると,エラーメッセージが返される.それでも Mathematica は結果を返すが,コンパイラは使わない.
これについての詳細はコンパイラのドキュメントに記載されている.
SymbolicC
SymbolicCは Mathematica のCコード生成システムの重要な位置を占めるものである.これは,ExportあるいはExportStringがCコードに使われると,自動的に使用されるものであり,Mathematica 式としてのCコードの階層的ビューを提供する.このため,Cコードを作成,操作,最適化するのに大変適している.
SymbolicCは,自分のコード生成に使うことができる.また Mathematica のコード生成ツールとしても広く使用されている.
SymbolicCを使用するには,まずパッケージをロードしなければならない.
| In[1]:= |
これでCプログラムの要素を構築し始めることができる.以下は変数の宣言を表す.
| In[2]:= |
| Out[2]= |
SymbolicC式の重要な機能にこれらの式は不活性であるということがある.つまり,これらの式は自らの未評価形式に評価される.
| In[3]:= |
関数は,式としてとどめておくことも,Cコードを示す文字列に変換することもできる.
| In[5]:= |
| Out[5]= | ![]() |
これについての詳細はSymbolicCのドキュメントに記載されている.
CCompilerDriver
CCompilerDriverは,使用コンピュータにインストールされているCコンパイラにインターフェースを与える Mathematica パッケージである.これは共有ライブラリ,実行ファイル,オブジェクトファイルを構築することができる.Mathematica に統合されているので,Cコードを作成し,例えばコードを検証する便利な方法を提供する等,コードを Mathematica にリンクさせ直すのに,このパッケージを簡単に使用することができる.
もちろん自分のプロジェクトやメイクファイルを設定し,C Compiler Driverツールは使用しないということも可能である.
| In[1]:= |
| In[2]:= |
| In[3]:= |
| Out[3]= |
適切なCコンパイラがないという場合には,コンパイルは失敗に終り,メッセージが生成される.
サンプルのソースファイルはWolfram Libraryとして使用し,
と一緒にロードすることができる.
| In[4]:= |
| Out[4]= |
ライブラリ関数を Mathematica から呼び出すことができる.
| In[5]:= |
| Out[5]= |
これについての詳細はCCompilerDriverのドキュメントに記載されている.

