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

Commit ad627f7

Browse filesBrowse files
committed
log and negate for matrix and vector (element wise)
1 parent 23af9fe commit ad627f7
Copy full SHA for ad627f7

File tree

Expand file treeCollapse file tree

2 files changed

+49
-8
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

2 files changed

+49
-8
lines changed
Open diff view settings
Collapse file

‎src/symjava/symbolic/Log.java‎

Copy file name to clipboardExpand all lines: src/symjava/symbolic/Log.java
+29-5Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,19 @@
88
import com.sun.org.apache.bcel.internal.generic.InstructionHandle;
99
import com.sun.org.apache.bcel.internal.generic.InstructionList;
1010
import com.sun.org.apache.bcel.internal.generic.MethodGen;
11+
import com.sun.org.apache.bcel.internal.generic.ObjectType;
1112
import com.sun.org.apache.bcel.internal.generic.Type;
1213

1314
import symjava.math.SymMath;
1415
import symjava.symbolic.arity.BinaryOp;
1516
import symjava.symbolic.utils.Utils;
1617

18+
/**
19+
* logarithm
20+
*
21+
* log(A): if A is a matrix do element wise log
22+
*
23+
*/
1724
public class Log extends BinaryOp {
1825

1926
/**
@@ -22,8 +29,8 @@ public class Log extends BinaryOp {
2229
*/
2330
public Log(Expr expr) {
2431
super(SymMath.E, expr);
25-
label = "log(" + expr + ")";
26-
sortKey = label;
32+
updateLabel();
33+
2734
}
2835

2936
/**
@@ -41,7 +48,7 @@ public String toString() {
4148
if(!arg1.symEquals(SymMath.E))
4249
return "log(" + arg1 + "," + arg2 + ")";
4350
else
44-
return "log(" + arg2 + ")";
51+
return label;
4552
}
4653

4754
public static Expr simplifiedIns(Expr base, Expr expr) {
@@ -100,8 +107,25 @@ public InstructionHandle bytecodeGen(String clsName, MethodGen mg,
100107
Map<Expr, Integer> funcRefsMap) {
101108
InstructionHandle startPos = arg1.bytecodeGen(clsName, mg, cp, factory, il, argsMap, argsStartPos, funcRefsMap);
102109
arg2.bytecodeGen(clsName, mg, cp, factory, il, argsMap, argsStartPos, funcRefsMap);
103-
il.append(factory.createInvoke("symjava.symbolic.utils.BytecodeSupport", "log",
104-
Type.DOUBLE, new Type[] { Type.DOUBLE, Type.DOUBLE }, Constants.INVOKESTATIC));
110+
if(arg2.getType() == TYPE.MATRIX || arg2.getType() == TYPE.VECTOR) {
111+
il.append(factory.createInvoke("symjava.symbolic.utils.BytecodeOpSupport", "log",
112+
new ObjectType("Jama.Matrix"),
113+
new Type[] { Type.DOUBLE, new ObjectType("Jama.Matrix") },
114+
Constants.INVOKESTATIC));
115+
} else {
116+
il.append(factory.createInvoke("symjava.symbolic.utils.BytecodeSupport", "log",
117+
Type.DOUBLE, new Type[] { Type.DOUBLE, Type.DOUBLE }, Constants.INVOKESTATIC));
118+
}
119+
105120
return startPos;
106121
}
122+
123+
@Override
124+
public void updateLabel() {
125+
if(arg1.symEquals(SymMath.E))
126+
label = "log(" + arg2 + ")";
127+
else
128+
label = "log_{"+arg1+"}(" + arg2 + ")";
129+
sortKey = label;
130+
}
107131
}
Collapse file

‎src/symjava/symbolic/Negate.java‎

Copy file name to clipboardExpand all lines: src/symjava/symbolic/Negate.java
+20-3Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,25 @@
44
import java.util.List;
55
import java.util.Map;
66

7+
import com.sun.org.apache.bcel.internal.Constants;
78
import com.sun.org.apache.bcel.internal.generic.ConstantPoolGen;
89
import com.sun.org.apache.bcel.internal.generic.InstructionConstants;
910
import com.sun.org.apache.bcel.internal.generic.InstructionFactory;
1011
import com.sun.org.apache.bcel.internal.generic.InstructionHandle;
1112
import com.sun.org.apache.bcel.internal.generic.InstructionList;
1213
import com.sun.org.apache.bcel.internal.generic.MethodGen;
14+
import com.sun.org.apache.bcel.internal.generic.ObjectType;
15+
import com.sun.org.apache.bcel.internal.generic.Type;
1316

17+
import symjava.symbolic.Expr.TYPE;
1418
import symjava.symbolic.arity.UnaryOp;
1519
import symjava.symbolic.utils.Utils;
1620

1721
public class Negate extends UnaryOp {
1822

1923
public Negate(Expr expr) {
2024
super(expr);
21-
label = "-" + SymPrinting.addParenthsesIfNeeded(expr, this);
22-
sortKey = arg.getSortKey();
25+
updateLabel();
2326
}
2427

2528
@Override
@@ -115,7 +118,21 @@ public InstructionHandle bytecodeGen(String clsName, MethodGen mg,
115118
InstructionList il, Map<String, Integer> argsMap, int argsStartPos,
116119
Map<Expr, Integer> funcRefsMap) {
117120
InstructionHandle startPos = arg.bytecodeGen(clsName, mg, cp, factory, il, argsMap, argsStartPos, funcRefsMap);
118-
il.append(InstructionConstants.DNEG);
121+
if(arg.getType() == TYPE.MATRIX || arg.getType() == TYPE.VECTOR) {
122+
il.append(factory.createInvoke("symjava.symbolic.utils.BytecodeOpSupport", "negate",
123+
new ObjectType("Jama.Matrix"),
124+
new Type[] { new ObjectType("Jama.Matrix") },
125+
Constants.INVOKESTATIC));
126+
} else {
127+
il.append(InstructionConstants.DNEG);
128+
}
129+
119130
return startPos;
120131
}
132+
133+
@Override
134+
public void updateLabel() {
135+
label = "-" + SymPrinting.addParenthsesIfNeeded(arg, this);
136+
sortKey = arg.getSortKey();
137+
}
121138
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.