Пример #1
0
        public void Setup()
        {
            IntArray    = new int[Size];
            BoolArray   = new bool[Size];
            BitArray    = new BitArray(Size);
            BinaryTree  = GaSymMetricOrthonormal.Create(new [] { 1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1 });
            ResultsList = new List <int>(Size);

            for (var i = 0; i < Size; i++)
            {
                var value = _rand.GetScalar() > 0.5;

                IntArray[i]  = value ? -1 : 1;
                BoolArray[i] = value;
                BitArray[i]  = value;
                //BinaryTree[i] = value ? -1 : 1;
            }

            IndexList = _rand.GetRangePermutation(Size - 1).ToList();

            //Console.Out.WriteLine(IndexList.Concatenate(", "));

            Console.Out.WriteLine("Int Array Size: " + IntArray.SizeInBytes());
            Console.Out.WriteLine("Bool Array Size: " + BoolArray.SizeInBytes());
            Console.Out.WriteLine("Bit Array Size: " + BitArray.SizeInBytes());
            Console.Out.WriteLine("Binary Tree Size: " + BinaryTree.SizeInBytes());
        }
Пример #2
0
        /// <summary>
        /// frameSigList must have all items equal to 1 (false) or -1 (true) with at least one negative item
        /// </summary>
        /// <param name="frameSigList"></param>
        internal GaSymFrameOrthonormal(IEnumerable <bool> frameSigList)
        {
            BasisVectorsSignatures = frameSigList.Select(b => b ? -1 : 1).ToArray();

            OrthonormalMetric = GaSymMetricOrthonormal.Create(BasisVectorsSignatures);

            Op  = ComputedOp = new GaSymOp(VSpaceDimension);
            Gp  = ComputedGp = new GaSymOrthonormalGp(OrthonormalMetric);
            Sp  = ComputedSp = new GaSymOrthonormalSp(OrthonormalMetric);
            Lcp = ComputedLcp = new GaSymOrthonormalLcp(OrthonormalMetric);
            Rcp = ComputedRcp = new GaSymOrthonormalRcp(OrthonormalMetric);
            Fdp = ComputedFdp = new GaSymOrthonormalFdp(OrthonormalMetric);
            Hip = ComputedHip = new GaSymOrthonormalHip(OrthonormalMetric);
            Acp = ComputedAcp = new GaSymOrthonormalAcp(OrthonormalMetric);
            Cp  = ComputedCp = new GaSymOrthonormalCp(OrthonormalMetric);

            UnitPseudoScalarCoef =
                MathematicaScalar.Create(
                    SymbolicUtils.Cas,
                    MaxBasisBladeId.BasisBladeIdHasNegativeReverse()
                        ? -1.0d / OrthonormalMetric[MaxBasisBladeId]
                        : 1.0d / OrthonormalMetric[MaxBasisBladeId]
                    );
        }
Пример #3
0
 internal GaSymOrthonormalCp(GaSymMetricOrthonormal basisBladesSignatures)
     : base(basisBladesSignatures)
 {
 }
 protected GaSymBilinearProductOrthonormal(GaSymMetricOrthonormal basisBladesSignatures)
 {
     OrthonormalMetric = basisBladesSignatures;
 }
Пример #5
0
        public static IGaSymMultivectorTemp AddFactors(this IGaSymMultivectorTemp tempMv, IEnumerable <GaSymMultivectorBiTerm> biTerms, GaSymMetricOrthonormal orthonormalMetric)
        {
            foreach (var biTerm in biTerms)
            {
                tempMv.AddFactor(
                    biTerm.IdXor,
                    biTerm.IsNegativeEGp,
                    Mfs.Times[
                        biTerm.Value1,
                        biTerm.Value2,
                        orthonormalMetric.GetExprSignature(biTerm.IdAnd)
                    ]
                    );
            }

            return(tempMv);
        }