public GaPoTNumMultivector Sp(GaPoTNumMultivector mv2) { var result = new GaPoTNumMultivector(); foreach (var term1 in _termsDictionary.Values) { if (!mv2._termsDictionary.TryGetValue(term1.IDsPattern, out var term2)) { continue; } var value = term1.Value * term2.Value; if (value == 0) { continue; } if (GaPoTNumUtils.ComputeIsNegativeEGp(term1.IDsPattern, term2.IDsPattern)) { value = -value; } result.AddTerm(new GaPoTNumMultivectorTerm(0, value)); } return(result); }
public static GaPoTNumMultivector operator -(double v1, GaPoTNumMultivector v2) { var result = new GaPoTNumMultivector(); result.AddTerm(0, v1); foreach (var term in v2._termsDictionary.Values) { result.AddTerm( term.IDsPattern, -term.Value ); } return(result); }
public static GaPoTNumMultivector operator *(double s, GaPoTNumMultivector v) { var result = new GaPoTNumMultivector(); foreach (var term in v._termsDictionary.Values) { result.AddTerm( term.IDsPattern, term.Value * s ); } return(result); }
public GaPoTNumMultivector Gp(GaPoTNumMultivector mv2) { var result = new GaPoTNumMultivector(); foreach (var term1 in _termsDictionary.Values) { foreach (var term2 in mv2._termsDictionary.Values) { var term = term1.Gp(term2); if (term.Value != 0) { result.AddTerm(term); } } } return(result); }
public static GaPoTNumMultivector operator *(GaPoTNumMultivector v1, GaPoTNumMultivector v2) { var result = new GaPoTNumMultivector(); foreach (var term1 in v1._termsDictionary.Values) { foreach (var term2 in v2._termsDictionary.Values) { var term = term1.Gp(term2); if (term.Value != 0) { result.AddTerm(term); } } } return(result); }