Maple Professionel
Maple Académique
Maple Edition Étudiant
Maple Personal Edition
Maple Player
Maple Player for iPad
MapleSim Professionel
MapleSim Académique
Maple T.A. - Suite d'examens de classement
Maple T.A. MAA Placement Test Suite
Möbius - Didacticiels de mathématiques en ligne
Machine Design / Industrial Automation
Aéronautique
Ingénierie des véhicules
Robotics
Energie
System Simulation and Analysis
Model development for HIL
Modélisation du procédé pour la conception de systèmes de contrôle
Robotics/Motion Control/Mechatronics
Other Application Areas
Enseignement des mathématiques
Enseignement de l’ingénierie
Enseignement secondaire et supérieur (CPGE, BTS)
Tests et évaluations
Etudiants
Modélisation financière
Recherche opérationnelle
Calcul haute performance
Physique
Webinaires en direct
Webinaires enregistrés
Agenda des évènements
Forum MaplePrimes
Blog Maplesoft
Membres Maplesoft
Maple Ambassador Program
MapleCloud
Livres blancs techniques
Bulletin électronique
Livres Maple
Math Matters
Portail des applications
Galerie de modèles MapleSim
Cas d'Etudes Utilisateur
Exploring Engineering Fundamentals
Concepts d’enseignement avec Maple
Centre d’accueil utilisateur Maplesoft
Centre de ressources pour enseignants
Centre d’assistance aux étudiants
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