1 8 package org.lsmp.djep.djep.diffRules; 9 10 import org.lsmp.djep.djep.DJep; 11 import org.lsmp.djep.djep.DiffRulesI; 12 import org.nfunk.jep.ASTFunNode; 13 import org.nfunk.jep.Node; 14 import org.nfunk.jep.ParseException; 15 16 17 21 public class SubtractDiffRule implements DiffRulesI 22 { 23 private String name; 24 25 private SubtractDiffRule() {} 26 public SubtractDiffRule(String inName) 27 { 28 name = inName; 29 } 30 31 public String toString() 32 { return name + " \t\tdiff(f-g,x) -> diff(f,x)-diff(g,x)"; } 33 public String getName() { return name; } 34 35 public Node differentiate(ASTFunNode node,String var,Node [] children,Node [] dchildren,DJep djep) throws ParseException 36 { 37 int nchild = node.jjtGetNumChildren(); 38 if(nchild==2) 39 return djep.getNodeFactory().buildOperatorNode(djep.getOperatorSet().getSubtract(),dchildren[0],dchildren[1]); 40 else if(nchild==1) 41 return djep.getNodeFactory().buildOperatorNode(djep.getOperatorSet().getUMinus(),dchildren[0]); 42 else 43 throw new ParseException("Too many children "+nchild+" for "+node+"\n"); 44 } 45 } 46 | Popular Tags |