/// <summary> /// Creates the graph associated to this expression, when the given parameter ranges over the X axis /// </summary> /// <param name="context">The interpretation context</param> /// <param name="parameter">The parameters of *the enclosing function* for which the graph should be created</param> /// <returns></returns> public override Functions.Graph createGraph(InterpretationContext context, Parameter parameter) { Functions.Graph retVal = base.createGraph(context, parameter); if (Term != null) { retVal = Functions.Graph.createGraph(GetValue(context), parameter); } else if (Expression != null) { if (UnaryOp == null) { retVal = Expression.createGraph(context, parameter); } else if (UnaryOp == MINUS) { retVal = Expression.createGraph(context, parameter); retVal.Negate(); } else { throw new Exception("Cannot create graph where NOT operator is defined"); } } return(retVal); }
/// <summary> /// Creates the graph for the unbound parameters provided /// </summary> /// <param name="context"></param> /// <param name="expression"></param> /// <param name="function"></param> /// <param name="unbound"></param> /// <returns></returns> private Graph createGraphForUnbound(InterpretationContext context, Expression expression, Function function, List <Parameter> unbound) { Graph retVal = null; if (unbound.Count == 0) { if (function != null && function.FormalParameters.Count > 0) { retVal = function.createGraph(context, (Parameter)function.FormalParameters[0]); } else { retVal = Graph.createGraph(expression.GetValue(context), null); } } else { if (function == null) { retVal = expression.createGraph(context, unbound[0]); } else { retVal = function.createGraph(context, unbound[0]); } } return(retVal); }
/// <summary> /// Creates the graph associated to this expression, when the given parameter ranges over the X axis /// </summary> /// <param name="context">The interpretation context</param> /// <param name="parameter">The parameters of *the enclosing function* for which the graph should be created</param> /// <returns></returns> public override Functions.Graph createGraph(InterpretationContext context, Parameter parameter) { Functions.Graph retVal = base.createGraph(context, parameter); if (parameter == Parameters[0] || parameter == Parameters[1]) { retVal = Expression.createGraph(context, parameter); } else { throw new Exception("Cannot create graph for parameter " + parameter.Name); } return(retVal); }
/// <summary> /// Creates the graph for the unbound parameters provided /// </summary> /// <param name="context"></param> /// <param name="expression"></param> /// <param name="function"></param> /// <param name="unbound"></param> /// <returns></returns> private Graph createGraphForUnbound(InterpretationContext context, Expression expression, Function function, List<Parameter> unbound) { Graph retVal = null; if (unbound.Count == 0) { if (function != null && function.FormalParameters.Count > 0) { retVal = function.createGraph(context, (Parameter)function.FormalParameters[0]); } else { retVal = Graph.createGraph(expression.GetValue(context), null); } } else { if (function == null) { retVal = expression.createGraph(context, unbound[0]); } else { retVal = function.createGraph(context, unbound[0]); } } return retVal; }