public static GaSymMultivector ERcp(this GaSymMultivector mv1, GaSymMultivector mv2)
        {
            if (mv1.GaSpaceDimension != mv2.GaSpaceDimension)
            {
                throw new GMacSymbolicException("Multivector size mismatch");
            }

            return(GaSymMultivector
                   .CreateZeroTemp(mv1.GaSpaceDimension)
                   .AddFactors(mv1.GetBiTermsForERcp(mv2))
                   .ToMultivector());
        }
        public override IGaSymMultivectorTemp MapToTemp(GaSymMultivector mv1, GaSymMultivector mv2)
        {
            if (mv1.GaSpaceDimension != DomainGaSpaceDimension || mv2.GaSpaceDimension != DomainGaSpaceDimension2)
            {
                throw new GMacSymbolicException("Multivector size mismatch");
            }

            return
                (GaSymMultivector
                 .CreateZeroTemp(TargetGaSpaceDimension)
                 .AddFactors(
                     mv1.GetBiTermsForERcp(mv2),
                     OrthonormalMetric
                     ));
        }