public static GaSymMultivectorHash CreateMapped(GaSymMultivectorHash mv, Func <MathematicaScalar, MathematicaScalar> scalarMap) { var resultMv = CreateZero(mv.GaSpaceDimension); foreach (var term in mv.NonZeroTerms) { resultMv[term.Key] = scalarMap(term.Value).Expression; } return(resultMv); }
public static GaSymMultivectorHash CreateCopy(GaSymMultivectorHash mv) { var resultMv = new GaSymMultivectorHash(mv.GaSpaceDimension); foreach (var term in mv) { resultMv.Add(term.Key, term.Value); } return(resultMv); }
public GaSymMultivectorHash CliffConj() { var resultMv = new GaSymMultivectorHash(GaSpaceDimension); foreach (var term in _internalDictionary) { resultMv._internalDictionary.Add( term.Key, term.Key.BasisBladeIdHasNegativeClifConj() ? Mfs.Minus[term.Value] : term.Value ); } return(resultMv); }
public static GaSymMultivectorHash CreateSymbolic(int gaSpaceDim, string baseCoefName, IEnumerable <int> idsList) { var resultMv = new GaSymMultivectorHash(gaSpaceDim); var vSpaceDim = gaSpaceDim.ToVSpaceDimension(); foreach (var id in idsList) { resultMv.Add( id, MathematicaScalar.CreateSymbol( SymbolicUtils.Cas, baseCoefName + id.PatternToString(vSpaceDim) ) ); } return(resultMv); }
public Dictionary <int, GaSymMultivectorHash> ToKVectors() { var kvectorsList = new Dictionary <int, GaSymMultivectorHash>(); foreach (var pair in _internalDictionary) { GaSymMultivectorHash mv; var grade = pair.Key.BasisBladeGrade(); if (kvectorsList.TryGetValue(grade, out mv) == false) { mv = new GaSymMultivectorHash(GaSpaceDimension); kvectorsList.Add(grade, mv); } mv.Add(pair.Key, pair.Value); } return(kvectorsList); }