Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
104 lines (92 loc) · 2.33 KB

File metadata and controls

104 lines (92 loc) · 2.33 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package lambdacloud.test;
import static symjava.symbolic.Symbol.*;
import lambdacloud.core.lang.LCArray;
import lambdacloud.core.lang.LCDoubleArray;
import lambdacloud.core.lang.LCReturn;
import lambdacloud.core.lang.LCStatements;
import symjava.bytecode.BytecodeBatchFunc;
import symjava.bytecode.BytecodeVecFunc;
import symjava.symbolic.Expr;
import symjava.symbolic.Vector;
import symjava.symbolic.utils.JIT;
public class TestCompile {
/**
* test comiple, compileVec, compileBatch
* @param args
*/
public static void main(String[] args) {
testCompileBatchFunc();
testCompileVecFunc1();
testCompileVecFunc2();
}
public static void testCompileBatchFunc() {
BytecodeBatchFunc func = CompileUtils.compileBatchFunc("test1", new Expr[]
{
z,
y*y,
x+y+z
}, x,y,z);
double[] outAry = new double[3];
func.apply(outAry, 0, new double[]{1,2,3});
for(double d : outAry) {
System.out.println(d);
}
}
/**
* Use Jama with LCReturn
*/
public static void testCompileVecFunc1() {
int dim = 3;
Vector a = new Vector("a",dim);
Vector b = new Vector("b",dim);
BytecodeVecFunc func = CompileUtils.compileVecFunc(new LCReturn(a+b),a,b);
double[] outAry = new double[dim];
double[][] args = {
new double[]{1,2,3},
new double[]{4,5,6}
};
func.apply(outAry, 0, args);
for(double d : outAry) {
System.out.println(d);
}
}
/**
* Use Jama with output
*/
public static void testCompileVecFunc2() {
int dim = 3;
LCStatements lcs = new LCStatements();
LCArray x = new LCDoubleArray("x");
LCArray y = new LCDoubleArray("y");
LCArray output = new LCDoubleArray("outAry1");
for(int i=0; i<dim; i++) {
lcs.append( output[i].assign(x[i] + y[i]) );
}
BytecodeVecFunc func = CompileUtils.compileVecFunc(lcs, output, x,y);
double[] outAry = new double[dim];
double[][] args = {
new double[]{1,2,3},
new double[]{4,5,6}
};
func.apply(outAry, 0, args);
for(double d : outAry) {
System.out.println(d);
}
}
/**
* Use JIT (use loop)
*/
public static void testCompileVecFunc3() {
BytecodeVecFunc func = JIT.compileVecFunc(new Expr[]{x,y}, x+y);
int dim = 3;
double[][] args = {
new double[]{1,2,3},
new double[]{4,5,6}
};
double[] outAry = new double[dim];
func.apply(outAry, 0, args);
for(double d : outAry) {
System.out.println(d);
}
}
}
Morty Proxy This is a proxified and sanitized view of the page, visit original site.