コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }