1 8 package org.lsmp.djep.djep.diffRules; 9 10 import org.lsmp.djep.djep.DJep; 11 import org.lsmp.djep.xjep.*; 12 import org.nfunk.jep.*; 13 14 19 public class MacroFunctionDiffRules extends ChainRuleDiffRules 20 { 21 24 public MacroFunctionDiffRules(DJep djep,MacroFunction fun) throws ParseException 25 { 26 name = fun.getName(); 28 pfmc = fun; 29 30 XSymbolTable localSymTab = (XSymbolTable) ((XSymbolTable) djep.getSymbolTable()).newInstance(); localSymTab.copyConstants(djep.getSymbolTable()); 32 DJep localJep = (DJep) djep.newInstance(localSymTab); 33 34 int nargs = fun.getNumberOfParameters(); 35 rules = new Node[nargs]; 36 if(nargs == 1) 37 rules[0] = localJep.differentiate((Node) fun.getTopNode(),"x"); 38 else if(nargs == 2) 39 { 40 rules[0] = localJep.differentiate(fun.getTopNode(),"x"); 41 rules[1] = localJep.differentiate(fun.getTopNode(),"y"); 42 } 43 else 44 { 45 for(int i=0;i<nargs;++i) 46 rules[i] = localJep.differentiate(fun.getTopNode(),"x"+ String.valueOf(i)); 47 } 48 for(int i=0;i<nargs;++i) 49 rules[i] = localJep.simplify(rules[i]); 50 } 52 } 53 | Popular Tags |