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()); }
/// <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] ); }
internal GaSymOrthonormalCp(GaSymMetricOrthonormal basisBladesSignatures) : base(basisBladesSignatures) { }
protected GaSymBilinearProductOrthonormal(GaSymMetricOrthonormal basisBladesSignatures) { OrthonormalMetric = basisBladesSignatures; }
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); }