Mathematica 9 is now available
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.
Mathematica > システムインターフェースと配備 > 外部プログラムの呼出し > Compile >

Compile

Updated In 8 Graphic
Compile
が数値であるという前提で,式 expr を評価するためのコンパイルされた関数を作成する.
Compile
に適合するタイプであることを前提とする.
Compile
に適合する各オブジェクトの,次元配列であることを前提とする.
Compile
に適合する式 expr の部分式が に適合するタイプであることを前提とする.
_Integer機械サイズの整数
_Real機械精度の近似実数(デフォルト値)
_Complex機械精度の近似複素数
True | False論理変数
  • コンパイルされる関数の入力としてネストされたリストが与えられた場合,そのリストは数値からなる完全配列に限られる.
  • Compileは,数値関数や行列演算,手続き型プログラミング構文やリスト操作関数,関数型プログラミング構文等の機能に使われる.
  • コンパイルされたコードは,通常の Mathematica のコードと同様の数値的な精度や局所変数の取扱いをするとは限らない.
  • コンパイルされたコードを使った特定の引数でコンパイルされた関数が評価できない場合,代りとして通常の Mathematica のコードが使用される.
  • 通常の Mathematica のコードを,コンパイルされたコードの中で使用することができる.この Mathematica コードで得られた結果は,Compileの第3引数で特に指定されない限り近似実数であるとみなされる.
  • Compileによってオブジェクトが評価される回数やその順が通常の Mathematica のコードと異なる場合がある.
  • Compileは属性HoldAllを持ち,デフォルトにより,コンパイルされる前に評価を行わない.
  • Compile[..., Evaluate[expr]]の設定により,式 expr をコンパイルの前に,シンボル的に評価するように指定できる.
  • 使用可能なオプション:
CompilationOptionsAutomaticコンパイルのプロセスに関するオプション
CompilationTarget$CompilationTargetコード生成でターゲットとするランタイム
ParallelizationAutomaticコンパイルされた関数の実行の際の並列制御
RuntimeAttributes{}コンパイルされた関数の評価属性
RuntimeOptionsAutomaticコンパイルされた関数のランタイムオプション
関数Sin[x]+x^2-1/(1-x)を機械実数 x についてコンパイルする:
CompiledFunctionは機械数で評価する:
コンパイルされた関数をプロットする:
関数Sin[x]+x^2-1/(1-x)を機械実数 x についてコンパイルする:
In[1]:=
Click for copyable input
Out[1]=
CompiledFunctionは機械数で評価する:
In[2]:=
Click for copyable input
Out[2]=
コンパイルされた関数をプロットする:
In[3]:=
Click for copyable input
Out[3]=
のニュートン反復を取り,直近の根を見付けるように関数をコンパイルする:
3つの根について引力圏をプロットする:
デフォルト設定のAutomaticでは,同じ結果を複数回評価することを避けてより効率的なコードを生成する:
最適化レベルが下げられると効率の低いコードが生成される:
次でCコードを生成しこれを接続し直して実行する:
これはCコード生成によるスピードアップという利点を示しているより大きい例である:
デフォルト操作だと速度が落ちる:
コンパイルされたリスト可能な関数はスレッドを使って並列実行できる:
次は連続で実行した場合を示している:
一般に,使用するスレッド数の決定には$ProcessorCountが使われる:
並列操作をCコードの生成と組み合せると結果がより高速になる:
以下でコンパイルされたリスト可能な関数を作成する:
入力が1つの場合は普通に動作する:
引数に入力指定にマッチしないリストが含まれていると,入力は引数に関数を縫い込む:
分岐がある場合,リスト可能性は下に示してあるようにFunctionを使って関数を定義する必要がある:
リスト可能でコンパイルされた関数は同じことをはるかに速く行う:
リスト可能でコンパイルされた関数は並列実行することで,マルチコアのマシンでさらに速く実行することができる:
リスト可能属性を使用すると一般にCompiledFunctionを何度も呼び出すよりも速くなる:
並列化を使うとさらに速くなる:
結果は等しい:
についてのニュートン法による関心領域の詳細なプロット:
一般に,整数演算のオーバーフローが検知されると,計算は大数を使うように切り換えられる:
オーバーフローが検知されないようにすると,実行速度は上がるが結果は不正確である可能性がある:
パーリンノイズは手続き型テクスチャを生成するためによく使われるアルゴリズムである:
以下でパーリンノイズ関数のパラメータを定義し,パーリン関数を使って横長の手続き型テクスチャを生成する:
パラメータと色集合が異なる同じノイズ関数を使って木目のシミュレーションを行うことができる:
テクスチャを三次元オブジェクトに適用することもできる:
バージョン 2 の新機能 | バージョン 8 での修正機能
Ask a question about this page  |  Suggest an improvement  |  Leave a message for the team
フォーマット:   HTML  |  CDF