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

Mathematica出力のプログラミング言語への対応
標準的なMathematica表記法に従った形で式が返ってくる.
In[1]:= Expand[(1 + x + y)^2]
Out[1]= 
こうすると,同じ式をFortran形式で得ることができる.
In[2]:= FortranForm[%]
Out[2]//FortranForm= 1 + 2*x + x**2 + 2*y + 2*x*y + y**2
C言語形式にするならこうする.Power等のオブジェクトに対応したマクロは,ほとんどのMathematicaのバージョンに標準添付されるCヘッダーファイルmdefs.hに定義されている.
In[3]:= CForm[%]
Out[3]//CForm= 1 + 2*x + Power(x,2) + 2*y + 2*x*y + Power(y,2)
言うまでもないがMathematicaとC言語やFortranの間には数多くの相違点がある.このため,上記のコマンドを使って記述変換をしても実際に取り込まれた式は,もとのMathematicaの式とは機能上,若干違ってしまうことがある.さらに,プログラミング構造が言語によって大きく異なるため,これらの変換が自動的になされているとは思わない方がよい.

Mathematica式をコンパイルする方法
Mathematicaで作った式をC言語やFortran記述に変換する上で,1つの共通的な理由に,より早く数値解析的に評価処理を行うことができるだろう,という期待がある.しかし,C言語やFortranがMathematicaより処理効率の上で潜在的に勝る最大の理由は,個々の変数の型が整数,実数または配列である,というように前もって宣言することができるということにある.
Mathematicaの関数Compileを使うと上記の前提が使われ,Mathematicaにおいても非常に処理効率のよいコードを生成することができる.このようにして作ったコードは,処理スピードの点でC言語やFortranで作ったものと比べても引けをとらない.
|