Maple für Professional
Maple für Akademiker
Maple für Studenten
Maple Personal Edition
Maple Player
Maple Player für iPad
MapleSim für Professional
MapleSim für Akademiker
Maple T.A. - Testen & beurteilen
Maple T.A. MAA Placement Test Suite
Möbius - Online-Courseware
Machine Design / Industrial Automation
Luft- und Raumfahrt
Fahrzeugtechnik
Robotics
Energiebranche
System Simulation and Analysis
Model development for HIL
Anlagenmodelle für den Regelungsentwurf
Robotics/Motion Control/Mechatronics
Other Application Areas
Mathematikausbildung
Technik
Allgemein- und berufsbildende Schulen
Testen und beurteilen
Studierende
Finanzmodelle
Betriebsforschung
Hochleistungsrechnen
Physik
Live-Webinare
Aufgezeichnete Webinare
Geplante Veranstaltungen
MaplePrimes
Maplesoft-Blog
Maplesoft-Mitgliedschaft
Maple Ambassador Program
MapleCloud
Technische Whitepapers
E-Mail Newsletters
Maple-Bücher
Math Matters
Anwendungs-Center
MapleSim Modell-Galerie
Anwenderberichte
Exploring Engineering Fundamentals
Lehrkonzepte mit Maple
Maplesoft Welcome-Center
Resource-Center für Lehrer
Help-Center für Studierende
CodeGeneration[C] - Maple コードの C コードへの変換
使い方
C(x, cgopts)
パラメータ
x
-
式、リスト、rtable、プロシージャ、またはモジュール
cgopts
(オプション) 1 つまたは複数の CodeGeneration のオプション
説明
C コマンドは Maple コードを ANSI C コードに変換します。
- パラメータ x が代数式の場合、その数式を変数に割り当てる C 文が生成されます。
- x が代数値のリスト、rtable、または Maple 配列の場合、要素を C 配列に割り当てる C 文の式列が生成されます。rtable または Maple 配列の場合、初期化されている要素のみが変換されます。
- x が 形式の式のリスト ( は名前、 は代数式) である場合、x は代入文の式列を意味するものとして解釈されます。この場合、等価な意味を持つ C の代入文の列が生成されます。
- x がプロシージャの場合、ライブラリの包含を行うのに必要な指示とともに、C 関数が生成されます。
- x がモジュールの場合、モジュールメンバーは CDetails ヘルプページの記載に従って変換されます。
パラメータ cgopts には 1 つ以上の CodeGeneration オプションを指定できます。オプションの詳細は CodeGenerationOptions を参照してください。
CodeGeneration パッケージによる Maple コードから他の言語への変換についての詳細は、Translation Details を参照してください。C への変換に特化した情報については、FortranDetails を参照してください。
例
以下の例で使用しているオプションについては、CodeGenerationOptions をご覧ください。
with(CodeGeneration):
単純な数式を変換し、目的のコード内の名前 ``w'' に割り当てます。
C(x+y*z-2*x*z, resultname="w");
w = x + y * z - 2 * x * z;
リストを変換し、目的のコード内にある ``w'' という名前の配列に割り当てます。
C([[x, 2*y], [5, z]], resultname="w");
w[0][0] = x; w[0][1] = 2 * y; w[1][0] = 5; w[1][1] = z;
計算式の列を変換します。最初に入力を最適化します。
cs := [s=1.0+x, t=ln(s)*exp(-x), r=exp(-x)+x*t]:
C(cs, optimize);
s = 0.10e1 + x; t1 = log(s); t2 = exp(-x); t = t1 * t2; r = t2 + x * t;
x が浮動小数点数、y が整数であることを宣言します。結果が文字列内に返されます。
s := C(x+y+1, declare=[x::float, y::integer], output=string);
プロシージャを変換します。型が指定されていない変数はすべて integer であると仮定します。
f := proc(x, y, z) return x*y-y*z+x*z; end proc:
C(f, defaulttype=integer);
int f (int x, int y, int z) { return(x * y - y * z + x * z); }
間接的な戻り値を含むプロシージャを変換します。戻り値を格納するための新しい変数が作成されます。
f := proc(n) local x, i; x := 0.0; for i to n do x := x + i; end do; end proc:
C(f);
double f (int n) { double x; int i; double cgret; x = 0.0e0; for (i = 1; i <= n; i++) { x = x + (double) i; cgret = x; } return(cgret); }
配列をパラメータとして受け入れているプロシージャを変換します。C の配列がインデックス 0 から始まるように、インデックスの番号が付けなおされることに注意してください。
f := proc(x::Array(numeric, 5..7)) return x[5]+x[6]+x[7]; end proc:
double f (double x[3]) { return(x[0] + x[1] + x[2]); }
エクスポートするプロシージャとローカルのプロシージャを 1 つずつ持つモジュールを変換します。
m := module() export p; local q; p := proc(x,y) if y>0 then trunc(x); else ceil(x); end if; end proc: q := proc(x) sin(x)^2; end proc: end module:
C(m, resultname=t0);
#include <math.h> double q; double p (double x, int y); double q (double x) { return(pow(sin(x), 0.2e1)); } double p (double x, int y) { if (0 < y) return((double) (int)(x)); else return(ceil(x)); }
max 関数を含む式を変換します。
C(max(1/abs(x), x^2));
cg0 = (x * x >= 1 / abs(x) ? x * x : 1 / abs(x));
関連項目
CDetails、CodeGeneration、CodeGenerationOptions、Translation Details
Download Help Document