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[Java] - Maple コードの Java コードへの変換
使い方
Java(x, cgopts)
パラメータ
x - 数式、リスト、配列、rtable、手続き、またはモジュール
cgopts - (オプション) 1つまたはそれ以上の CodeGeneration オプション
説明
Java 関数は、Maple のコードを Java コードに変換します。パラメータ x が代数式の場合、その数式に1つの変数を割り当てる形で1つのJava の命令文が生成されます。パラメータ x がリスト、rtable または Maple の配列の場合、それら要素をJava 配列に割り当てる形で、Java の命令文の列が作成されます。rtable または Maple の配列では、初期化された要素だけが変換されます。
パラメータ x が nm=expr の形のリスト(ここで nm は名前、exp は代数式を表す)である場合、x は割り当てられた命令文の列を意味するものとして解釈されます。この場合、等価な意味を持つ Java の割り当て命令文の列が生成されます。
パラメータ x が Maple の手続きである場合、必要な入力文と共に、手続きと等価な関数を含む Java のクラスが1つ生成されます。
パラメータ x がモジュールの場合、ある一つのJava クラスが生成されます。 詳細は、JavaDetails に記述されています。
パラメータ cgopts は、1つまたはそれ以上の CodeGeneration のオプションを含みます。オプションについては、CodeGeneration のオプション に記述されています。
CodeGeneration パッケージが Maple のコードを他の言語にどのように変換するかに関する詳細な情報は、CodeGeneration パッケージを用いたコード変換に関する注意点 を参照して下さい。特に Java への変換に関する詳細な情報を得たい場合には、Java へのコード変換における注意点 を参照して下さい。
例
以下の例で使用されているオプションの記述方法については、CodeGeneration のオプション を参照して下さい。
with(CodeGeneration):
単純な数式を変換し、目的のコード内の名前``w'' に割り当てます。
Java(x+y*z-2*x*z, resultname="w");
w = x + y * z - 2 * x * z;
リストを変換し、目的のコード内にある名前``w'' の配列に割り当てます。
Java([[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]: Java(cs, optimize);
s = 0.10e1 + x; t1 = Math.log(s); t2 = Math.exp(-x); t = t1 * t2; r = t2 + x * t;
x が浮動小数点数、y が整数であることを宣言します。結果は文字列内に返されます。
s := Java(x+y+1, declare=[x::float, y::integer], output=string);
Maple の手続きを変換します。型宣言されていない変数全てが、整数型であると仮定します。
f := proc(x, y, z) return x*y-y*z+x*z; end proc: Java(f, defaulttype=integer);
class CodeGenerationClass { public static 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: Java(f);
class CodeGenerationClass { public static 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); } }
配列をパラメータとして受け入れている手続きを変換します。Java の配列がインデックス 0 から始まるように、添え字の番号は付け直されます。
f := proc(x::Array(numeric, 5..7)) return x[5]+x[6]+x[7]; end proc: Java(f);
class CodeGenerationClass { public static double f (double[] x) { return(x[0] + x[1] + x[2]); } }
モジュールを変換します。
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: Java(m, resultname=t0);
import java.lang.Math; class m { public static int p (double x, int y) { if (0 < y) return((int)(x)); else return((int)Math.ceil(x)); } private static double q (double x) { return(Math.pow(Math.sin(x), 0.2e1)); } }
双曲三角関数の線形結合を変換します。
Java(2*cosh(x)-7*tanh(x));
cg1 = 0.2e1 * (Math.exp(x) + Math.exp(-1.0 * x))/2.0 - 0.7e1 * (Math.exp(2.0 * x) - 1.0)/(Math.exp(2.0 * x) + 1.0);
戻り値を持たない、printf 文を含んだ手続きを変換します。
f := proc(a::integer, p::integer) printf("The integer remainder of %d divided by %d is: %d\n", a, p, irem(a, p)); end proc: Java(f);
class CodeGenerationClass { public static void f (int a, int p) { System.out.println("The integer remainder of " + a + " divided by " + p + " is: " + a % p); } }
参照
CodeGeneration パッケージの概要, CodeGeneration パッケージを用いたコード変換に関する注意点, CodeGeneration のオプション, Java へのコード変換における注意点, trademarks
Download Help Document