/// <summary> /// Create a symbolic scalar from this pattern. If the pattern is a constant its internal /// expression is returned, else a symbolic expression with a single variable is created and returned /// </summary> /// <param name="varNameTemplate"></param> /// <returns></returns> internal MathematicaScalar ToMathematicaScalar(StringSequenceTemplate varNameTemplate) { return (IsConstant ? ConstantSymbolicScalar : MathematicaScalar.Create(SymbolicUtils.Cas, varNameTemplate.GenerateNextString())); }
/// <summary> /// Create a symbolic expression from this pattern. If the pattern is a constant its internal /// expression is returned, else a symbolic expression with a single variable is created and returned /// </summary> /// <param name="varNameTemplate"></param> /// <returns></returns> public Expr ToExpr(StringSequenceTemplate varNameTemplate) { return (IsConstant ? ConstantExpr : SymbolicUtils.Cas[varNameTemplate.GenerateNextString()]); }
public ValueStructureSparse ToValue(StringSequenceTemplate varNameTemplate) { var structValue = ValueStructureSparse.Create(BaseStructure.AssociatedStructure); foreach (var pair in _patternDictionary) { var scalarPattern = pair.Value as GMacScalarBinding; if (scalarPattern != null) { structValue[pair.Key] = scalarPattern.ToValue(varNameTemplate).AssociatedValue; continue; } var mvPattern = pair.Value as GMacMultivectorBinding; if (mvPattern != null) { structValue[pair.Key] = mvPattern.ToValue(varNameTemplate).AssociatedValue; continue; } var structPattern = pair.Value as GMacStructureBinding; if (structPattern != null) { structValue[pair.Key] = structPattern.ToValue(varNameTemplate); } } return(structValue); }
/// <summary> /// Create a symbolic value from this pattern. If the pattern is a constant its internal /// expression is returned, else a symbolic expression with a single variable is created and returned /// </summary> /// <param name="varNameTemplate"></param> /// <returns></returns> public AstValueScalar ToValue(StringSequenceTemplate varNameTemplate) { return (IsConstant ? ConstantValue : new AstValueScalar( ValuePrimitive <MathematicaScalar> .Create( GMacType.AssociatedPrimitiveType, MathematicaScalar.Create(SymbolicUtils.Cas, varNameTemplate.GenerateNextString()) ) )); }
internal AstVisitorDotGraph() : base(DotGraphType.Directed, String.Empty) { IconsPath = Path.Combine( Path.GetDirectoryName(Application.ExecutablePath) ?? "", "Icons\\64" ); _nodeNamesTemplate = new StringSequenceTemplate() { NameParamValue = "gvNode" }; }
public AstValueMultivector SubspaceToMultivector(string subspaceName, StringSequenceTemplate varNameTemplate) { var subspaceInfo = Subspace(subspaceName); if (subspaceInfo.IsNullOrInvalid()) { return(null); } var pattern = GMacMultivectorBinding.Create(subspaceInfo); return(pattern.ToValue(varNameTemplate)); }
/// <summary> /// Convert this binding pattern into a multivector value /// </summary> /// <param name="varNameTemplate"></param> /// <returns></returns> public AstValueMultivector ToValue(StringSequenceTemplate varNameTemplate) { var mv = GaMultivector.CreateZero(BaseFrameMultivector.AssociatedFrameMultivector.ParentFrame.GaSpaceDimension); foreach (var pair in _patternDictionary) { mv[pair.Key] = pair.Value.ToMathematicaScalar(varNameTemplate); } return(new AstValueMultivector( GMacValueMultivector.Create( BaseFrameMultivector.AssociatedFrameMultivector, mv ) )); }