C言語とFortran形式のプログラムコードの生成

読者の中にはC言語やFortranを使ったプログラムを開発していて,Mathematica で作った数式をプログラムのソースコードに取り込みたいという人もいるだろう.Mathematica には特別な記述変換機能が備えられているので,それを使うことで,数式をこれらの言語記述に変換することができるようになっている.

CForm[expr]C言語形式で式 expr を出力する
FortranForm[expr]Fortran形式で式 expr を出力する
Export[file,expr,"C"]expr を計算するC関数を書く

Mathematica のプログラミング言語への出力

標準的な Mathematica 表記法に従った形で式が返ってくる.
In[1]:=
Click for copyable input
Out[1]=
こうすると,同じ式をFortran形式で得ることができる.
In[2]:=
Click for copyable input
Out[2]//FortranForm=
C言語形式にするならこうする.Power等のオブジェクトに対応したマクロは,ほとんどの Mathematica のバージョンに標準添付されるCヘッダファイルmdefs.hに定義されている.
In[3]:=
Click for copyable input
Out[3]//CForm=

式全体をCにしたい場合は,Exportを使いCに変換するとよい,

C関数全体が MathematicaCompiledFunction式から計算される.
In[4]:=
Click for copyable input
Out[4]=

Mathematica 式をCやFortranに変換したいというよくある動機の一つに,数値的に速く評価させるためというものがある.しかし,CおよびFortranが Mathematica より効率的となり得る唯一の理由は,これらの言語ではユーザが使用するそれぞれの変数の型(整数,実数,配列等)をその場で常に指定するためということである.

Mathematica 関数Compileはそのような前提を Mathematica 内で行い,非常に効率的な内部コードを生成する.これはCompilationTargetに設定することでより高速に実行させることができる.

Compile[x,expr]式を効率的な内部コードにコンパイルする
Compile[x,expr,CompilationTarget->"C"]Cコードにコンパイルし,Mathematica にリンクし直す

Mathematica 式のコンパイル

New to Mathematica? Find your learning path »
Have a question? Ask support »