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[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