Ejemplo n.º 1
0
        public void Equals()
        {
            var a = new ComplexDoubleVector(2, 4);
            var b = new ComplexDoubleVector(2, 4);
            var c = new ComplexDoubleVector(2)
            {
                [0] = 4,
                [1] = 4
            };

            var d = new ComplexDoubleVector(2, 5);
            ComplexDoubleVector e = null;
            var f = new FloatVector(2, 4);

            Assert.IsTrue(a.Equals(b));
            Assert.IsTrue(b.Equals(a));
            Assert.IsTrue(a.Equals(c));
            Assert.IsTrue(b.Equals(c));
            Assert.IsTrue(c.Equals(b));
            Assert.IsTrue(c.Equals(a));
            Assert.IsFalse(a.Equals(d));
            Assert.IsFalse(d.Equals(b));
            Assert.IsFalse(a.Equals(e));
            Assert.IsFalse(a.Equals(f));
        }
Ejemplo n.º 2
0
        private void calculateNextNewFigurePart(ref Figure newFigure, int indWhereWeAreInList, List <Figure> listMoves, List <Point3[]> ptsUsedToCalc, ref List <Point3> toApply)
        {
            Point3[]    ptStartAndEnd = ptsUsedToCalc[indWhereWeAreInList];
            Figure      moves         = listMoves[indWhereWeAreInList];
            Point3      ptStart       = ptStartAndEnd[0];
            Point3      ptEnd         = ptStartAndEnd[1];
            FloatVector vector        = ptEnd.toVector().substract(ptStart.toVector()).normalize();
            int         i             = 0;
            FloatVector tempPoint;
            Point3      checkPoint;
            Figure      tempsFigure = new Figure();

            do
            {
                tempPoint  = ptStart.toVector().add(vector.multiplyByScalar(i));
                checkPoint = tempPoint.toPoint3();
                if (i == 0 || !moves[i].toVector().isEquals(tempPoint.vectorWhithAllCoordinatesEquals(0)))
                {
                    foreach (Point3 point in toApply)
                    {
                        tempPoint = tempPoint.add(point.toVector());
                    }
                    tempsFigure.Add(tempPoint.toPoint3());
                }
                i++;
            }while (checkPoint.toVector().isEquals(ptEnd.toVector()));
            tempsFigure.Reverse();
            foreach (Point3 point in tempsFigure)
            {
                newFigure.Add(point);
            }
            toApply.Add(moves[0]);
        }
Ejemplo n.º 3
0
        public ManyToOneDataTableAdaptor(ILinearAlgebraProvider lap, IDataTable dataTable)
            : base(lap, dataTable)
        {
            if (_dataColumnIndex.Count() > 1)
            {
                throw new NotImplementedException("Sequential datasets not supported with more than one input data column");
            }

            _rowDepth = new int[dataTable.RowCount];
            FloatMatrix inputMatrix  = null;
            FloatVector outputVector = null;

            dataTable.ForEach((row, i) => {
                inputMatrix  = row.GetField <FloatMatrix>(_dataColumnIndex[0]);
                outputVector = row.GetField <FloatVector>(_dataTargetIndex);
                _rowDepth[i] = inputMatrix.RowCount;
                if (inputMatrix.ColumnCount != outputVector.Size)
                {
                    throw new ArgumentException("Rows between input and output data tables do not match");
                }
            });

            _inputSize  = inputMatrix.ColumnCount;
            _outputSize = outputVector.Size;
        }
Ejemplo n.º 4
0
        public override void ReadFrom(GraphFactory factory, BinaryReader reader)
        {
            var isElman     = reader.ReadBoolean();
            var inputSize   = reader.ReadInt32();
            var memoryId    = reader.ReadString();
            var memory      = FloatVector.ReadFrom(reader);
            var activation  = _Hydrate(factory, reader);
            var activation2 = _Hydrate(factory, reader);

            if (_memory == null)
            {
                _Create(factory, isElman, inputSize, memory.Data, activation, activation2, memoryId);
            }
            else
            {
                _memory.Data = memory;
            }

            var Wh = _input.FindByName("Wh") as INode;
            var Wy = _input.FindByName("Wy") as INode;
            var Uh = _memory.FindByName("Uh") as INode;

            Wh.ReadFrom(factory, reader);
            Wy.ReadFrom(factory, reader);
            Uh.ReadFrom(factory, reader);
        }
Ejemplo n.º 5
0
 public void CtorDimensionsNegative()
 {
     Assert.Throws(typeof(ArgumentException), () =>
     {
         var test = new FloatVector(-1);
     });
 }
Ejemplo n.º 6
0
 public void IndexAccessGetOutOfRange()
 {
     FloatVector a = new FloatVector(new float[2] {
         0, 1
     });
     float b = a[2];
 }
Ejemplo n.º 7
0
        public void GetIndex()
        {
            FloatVector a = new FloatVector(new float[4] {
                1, 2, 3, 4
            });
            FloatVector b = new FloatVector(new float[4] {
                3, 2, 1, 0
            });
            FloatVector c = new FloatVector(new float[4] {
                0, -1, -2, -3
            });
            FloatVector d = new FloatVector(new float[4] {
                -3, -2, -1, 0
            });

            Assert.AreEqual(a.GetAbsMaximumIndex(), 3);
            Assert.AreEqual(b.GetAbsMaximumIndex(), 0);
            Assert.AreEqual(c.GetAbsMaximumIndex(), 3);
            Assert.AreEqual(d.GetAbsMaximumIndex(), 0);

            Assert.AreEqual(a.GetAbsMaximum(), 4);
            Assert.AreEqual(b.GetAbsMaximum(), 3);
            Assert.AreEqual(c.GetAbsMaximum(), -3);
            Assert.AreEqual(d.GetAbsMaximum(), -3);

            Assert.AreEqual(a.GetAbsMinimumIndex(), 0);
            Assert.AreEqual(b.GetAbsMinimumIndex(), 3);
            Assert.AreEqual(c.GetAbsMinimumIndex(), 0);
            Assert.AreEqual(d.GetAbsMinimumIndex(), 3);

            Assert.AreEqual(a.GetAbsMinimum(), 1);
            Assert.AreEqual(b.GetAbsMinimum(), 0);
            Assert.AreEqual(c.GetAbsMinimum(), 0);
            Assert.AreEqual(d.GetAbsMinimum(), 0);
        }
Ejemplo n.º 8
0
 public FloatVector(FloatVector other) : this(csharpaidiclientPINVOKE.new_FloatVector__SWIG_1(FloatVector.getCPtr(other)), true)
 {
     if (csharpaidiclientPINVOKE.SWIGPendingException.Pending)
     {
         throw csharpaidiclientPINVOKE.SWIGPendingException.Retrieve();
     }
 }
Ejemplo n.º 9
0
        public void TestAdd()
        {
            FloatVector vect1 = new FloatVector(new float[] { 1, 2, 3 });
            FloatVector vect2 = new FloatVector(new float[] { 3, 2, 1 });

            Assert.IsTrue(vect1.vectorWhithAllCoordinatesEquals(4).isEquals(vect1.add(vect2)));
        }
Ejemplo n.º 10
0
    private unsafe void DoFindPath(Vector3 start, Vector3 end, float agentSize,
                                   ref List <PathPoint> oPath)
    {
        SVONPathPoint *pathPoints  = null;
        int            pointsCount = 0;

        FloatVector startPos  = new FloatVector(start);
        FloatVector targetPos = new FloatVector(end);

        using (GenerateFindPathWrapper(volumeHandle, startPos, targetPos, agentSize,
                                       out pathPoints, out pointsCount))
        {
            SVONPathPoint *pPoint = pathPoints;
            for (int i = 0; i < pointsCount; ++i)
            {
                PathPoint ppt = new PathPoint
                {
                    layer      = pPoint->layer,
                    mortonCode = pPoint->mortonCode,
                    position   = pPoint->position.ToVector3()
                };
                oPath.Add(ppt);

                ++pPoint;
            }
        }
    }
Ejemplo n.º 11
0
 private static unsafe extern bool SVONFindPath(IntPtr volume,
                                                FloatVector startPos,
                                                FloatVector targetPos,
                                                float agentSize,
                                                out PathSafeHandle pathHandle,
                                                out SVONPathPoint *pathPoints,
                                                out int count);
Ejemplo n.º 12
0
        public override void ReadFrom(GraphFactory factory, BinaryReader reader)
        {
            var lap = factory?.LinearAlgebraProvider;

            InputSize  = reader.ReadInt32();
            OutputSize = reader.ReadInt32();

            // read the bias parameters
            var bias = FloatVector.ReadFrom(reader);

            if (Bias == null)
            {
                Bias = lap.CreateVector(bias);
            }
            else
            {
                Bias.Data = bias;
            }

            // read the weight parameters
            var weight = FloatMatrix.ReadFrom(reader);

            if (Weight == null)
            {
                Weight = lap.CreateMatrix(weight);
            }
            else
            {
                Weight.Data = weight;
            }
            if (_updater == null)
            {
                _updater = factory?.CreateWeightUpdater(Weight);
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Creates random integers added together as feature vectors
        /// The input feature contains two features, one for each bit at that position
        /// The output feature contains a single feature: 1 or 0 if that bit is set in the result
        /// </summary>
        /// <param name="sampleCount">How many samples to generate</param>
        /// <param name="stochastic">True to generate random integers</param>
        /// <returns>A list of sequences</returns>
        public static IDataTable Addition(int sampleCount, bool stochastic)
        {
            Random rand    = stochastic ? new Random() : new Random(0);
            var    builder = DataTableBuilder.CreateTwoColumnMatrix();

            for (var i = 0; i < sampleCount; i++)
            {
                // generate some random numbers (sized to prevent overflow)
                var a          = rand.Next(int.MaxValue / 2);
                var b          = rand.Next(int.MaxValue / 2);
                var a2         = _GetBitArray(a);
                var b2         = _GetBitArray(b);
                var r2         = _GetBitArray(a + b);
                var inputList  = new FloatVector[r2.Length];
                var outputList = new FloatVector[r2.Length];
                for (int j = 0; j < r2.Length; j++)
                {
                    inputList[j] = new FloatVector {
                        Data = new[] { a2[j], b2[j] }
                    };
                    outputList[j] = new FloatVector {
                        Data = new[] { r2[j] }
                    };
                }

                builder.Add(FloatMatrix.Create(inputList), FloatMatrix.Create(outputList));
            }

            return(builder.Build());
        }
Ejemplo n.º 14
0
        static void Main(string[] args)
        {
            MyCallback myCallbackObj = new MyCallback();
            CppClass   instance      = MyDLL.CreateInstance();

            string str = "テストHello World!";

            instance.SetString(str);
            Debug.WriteLine($"str = {instance.GetString()}");

            FloatVector v = new FloatVector();

            v.Add((float)-0.1);
            v.Add((float)-1);
            v.Add((float)-10);
            int i = 0;

            instance.SetVector(v);
            FloatVector buf = instance.GetVector();

            foreach (float value in buf)
            {
                Debug.WriteLine($"[{i}] :value = {value}");
                i += 1;
            }

            instance.SetCallback(myCallbackObj);
            instance.ExeCallback();
        }
Ejemplo n.º 15
0
        /// <summary>
        /// One hot encodes the REBER strings
        /// </summary>
        /// <param name="strList">A list of REBER sequences</param>
        /// <returns>A data table with matrices to represent the sequences of vectors and their corresponding outputs</returns>
        public static IDataTable GetOneHot(IEnumerable <string> strList)
        {
            var strList2 = strList.ToList();

            // build the following item table
            var following = new Dictionary <string, HashSet <int> >();

            foreach (var str in strList2)
            {
                var    sb   = new StringBuilder();
                string prev = null;
                foreach (var ch in str)
                {
                    sb.Append(ch);
                    var key = sb.ToString();
                    if (prev != null)
                    {
                        if (!following.TryGetValue(prev, out HashSet <int> temp))
                        {
                            following.Add(prev, temp = new HashSet <int>());
                        }
                        temp.Add(_ch[ch]);
                    }
                    prev = key;
                }
            }

            var builder = DataTableBuilder.CreateTwoColumnMatrix();

            foreach (var str in strList2)
            {
                var inputList  = new FloatVector[str.Length];
                var outputList = new FloatVector[str.Length];

                var sb = new StringBuilder();
                for (var i = 0; i < str.Length; i++)
                {
                    var ch = str[i];
                    sb.Append(ch);
                    var input  = new float[_ch.Count];
                    var output = new float[_ch.Count];
                    input[_ch[ch]] = 1f;
                    if (following.TryGetValue(sb.ToString(), out HashSet <int> temp))
                    {
                        foreach (var item in temp)
                        {
                            output[item] = 1f;
                        }
                    }
                    inputList[i] = new FloatVector {
                        Data = input
                    };
                    outputList[i] = new FloatVector {
                        Data = output
                    };
                }
                builder.Add(FloatMatrix.Create(inputList), FloatMatrix.Create(outputList));
            }
            return(builder.Build());
        }
Ejemplo n.º 16
0
        public override void ReadFrom(GraphFactory factory, BinaryReader reader)
        {
            var inputSize = reader.ReadInt32();
            var memoryId  = reader.ReadString();
            var memory    = FloatVector.ReadFrom(reader);

            if (_memory == null)
            {
                _Create(factory, inputSize, memory.Data, memoryId);
            }
            else
            {
                _memory.Data = memory;
            }

            var Wf = _input.FindByName("Wf") as FeedForward;
            var Wi = _input.FindByName("Wi") as FeedForward;
            var Wo = _input.FindByName("Wo") as FeedForward;
            var Wc = _input.FindByName("Wc") as FeedForward;
            var Uf = _memory.FindByName("Uf") as FeedForward;
            var Ui = _memory.FindByName("Ui") as FeedForward;
            var Uo = _memory.FindByName("Uo") as FeedForward;
            var Uc = _memory.FindByName("Uc") as FeedForward;

            Wf.ReadFrom(factory, reader);
            Wi.ReadFrom(factory, reader);
            Wo.ReadFrom(factory, reader);
            Wc.ReadFrom(factory, reader);

            Uf.ReadFrom(factory, reader);
            Ui.ReadFrom(factory, reader);
            Uo.ReadFrom(factory, reader);
            Uc.ReadFrom(factory, reader);
        }
Ejemplo n.º 17
0
 public void IndexAccessGetNegative()
 {
     FloatVector a = new FloatVector(new float[2] {
         0, 1
     });
     float b = a[-1];
 }
Ejemplo n.º 18
0
        public override void ReadFrom(GraphFactory factory, BinaryReader reader)
        {
            var inputSize = reader.ReadInt32();
            var memoryId  = reader.ReadString();
            var memory    = FloatVector.ReadFrom(reader);

            if (_memory == null)
            {
                _Create(factory, inputSize, memory.Data, memoryId);
            }
            else
            {
                _memory.Data = memory;
            }

            var Wh = _input.FindByName("Wh") as INode;
            var Wr = _input.FindByName("Wr") as INode;
            var Wz = _input.FindByName("Wz") as INode;
            var Uh = _memory.FindByName("Uh") as INode;
            var Ur = _memory.FindByName("Ur") as INode;
            var Uz = _memory.FindByName("Uz") as INode;

            Wh.ReadFrom(factory, reader);
            Wr.ReadFrom(factory, reader);
            Wz.ReadFrom(factory, reader);
            Uh.ReadFrom(factory, reader);
            Ur.ReadFrom(factory, reader);
            Uz.ReadFrom(factory, reader);
        }
Ejemplo n.º 19
0
        public void ImplicitConversion()
        {
            float[] a = new float[4] {
                0, 1, 2, 3
            };
            float[] b = new float[4] {
                0, 1, 2, 3
            };
            FloatVector c = new FloatVector(a);
            FloatVector d, e, f;

            d = a; e = b; f = c;

            Assert.AreEqual(a.Length, d.Length);
            Assert.AreEqual((float)a[0], d[0]);
            Assert.AreEqual((float)a[1], d[1]);
            Assert.AreEqual((float)a[2], d[2]);
            Assert.AreEqual((float)a[3], d[3]);

            Assert.AreEqual(b.Length, e.Length);
            Assert.AreEqual((float)b[0], e[0]);
            Assert.AreEqual((float)b[1], e[1]);
            Assert.AreEqual((float)b[2], e[2]);
            Assert.AreEqual((float)b[3], e[3]);

            Assert.AreEqual(c.Length, f.Length);
            Assert.AreEqual((float)c[0], f[0]);
            Assert.AreEqual((float)c[1], f[1]);
            Assert.AreEqual((float)c[2], f[2]);
            Assert.AreEqual((float)c[3], f[3]);
        }
Ejemplo n.º 20
0
        public override void ReadFrom(GraphFactory factory, BinaryReader reader)
        {
            var inputSize = reader.ReadInt32();
            var memoryId  = reader.ReadString();
            var memory    = FloatVector.ReadFrom(reader);

            if (_memory == null)
            {
                _Create(factory, inputSize, memory.Data, memoryId);
            }
            else
            {
                _memory.Data = memory;
            }

            var Wx = _input.FindByName("Wx");
            var Wi = _input.FindByName("Wi");
            var Wf = _input.FindByName("Wf");
            var Ui = _memory.FindByName("Ui");
            var Uf = _memory.FindByName("Uf");

            Wx.ReadFrom(factory, reader);
            Wi.ReadFrom(factory, reader);
            Wf.ReadFrom(factory, reader);
            Ui.ReadFrom(factory, reader);
            Uf.ReadFrom(factory, reader);
        }
Ejemplo n.º 21
0
        public void ImplicitConversion()
        {
            float[] a = new float[4] {
                0, 1, 2, 3
            };
            double[] b = new double[4] {
                0, 1, 2, 3
            };
            var          c = new FloatVector(a);
            DoubleVector d, e, f;

            d = (DoubleVector)a;
            e = (DoubleVector)b;
            f = (DoubleVector)c;

            Assert.AreEqual(a.Length, d.Length);
            Assert.AreEqual((double)a[0], d[0]);
            Assert.AreEqual((double)a[1], d[1]);
            Assert.AreEqual((double)a[2], d[2]);
            Assert.AreEqual((double)a[3], d[3]);

            Assert.AreEqual(b.Length, e.Length);
            Assert.AreEqual(b[0], e[0]);
            Assert.AreEqual(b[1], e[1]);
            Assert.AreEqual(b[2], e[2]);
            Assert.AreEqual(b[3], e[3]);

            Assert.AreEqual(c.Length, f.Length);
            Assert.AreEqual((double)c[0], f[0]);
            Assert.AreEqual((double)c[1], f[1]);
            Assert.AreEqual((double)c[2], f[2]);
            Assert.AreEqual((double)c[3], f[3]);
        }
Ejemplo n.º 22
0
 public FloatVector(FloatVector other) : this(MyDLLPINVOKE.new_FloatVector__SWIG_1(FloatVector.getCPtr(other)), true)
 {
     if (MyDLLPINVOKE.SWIGPendingException.Pending)
     {
         throw MyDLLPINVOKE.SWIGPendingException.Retrieve();
     }
 }
Ejemplo n.º 23
0
        public void GetEnumerator()
        {
            FloatVector a = new FloatVector(new float[4] {
                0, 1, 2, 3
            });
            IEnumerator dve = a.GetEnumerator();
            float       b;
            bool        c;

            c = dve.MoveNext();
            b = (float)dve.Current;
            Assert.AreEqual(c, true);
            Assert.AreEqual(b, 0);

            c = dve.MoveNext();
            b = (float)dve.Current;
            Assert.AreEqual(c, true);
            Assert.AreEqual(b, 1);

            c = dve.MoveNext();
            b = (float)dve.Current;
            Assert.AreEqual(c, true);
            Assert.AreEqual(b, 2);

            c = dve.MoveNext();
            b = (float)dve.Current;
            Assert.AreEqual(c, true);
            Assert.AreEqual(b, 3);

            c = dve.MoveNext();
            Assert.AreEqual(c, false);
        }
Ejemplo n.º 24
0
 public FloatVectorEnumerator(FloatVector collection)
 {
     collectionRef = collection;
     currentIndex  = -1;
     currentObject = null;
     currentSize   = collectionRef.Count;
 }
Ejemplo n.º 25
0
        public void Add()
        {
            FloatVector a = new FloatVector(new float[4] {
                0, 1, 2, 3
            });
            FloatVector b = new FloatVector(new float[4] {
                4, 5, 6, 7
            });
            FloatVector c = new FloatVector(a.Length);
            FloatVector d = new FloatVector(b.Length);

            c = a + b;
            d = FloatVector.Add(a, b);

            Assert.AreEqual(c[0], a[0] + b[0]);
            Assert.AreEqual(c[1], a[1] + b[1]);
            Assert.AreEqual(c[2], a[2] + b[2]);
            Assert.AreEqual(c[3], a[3] + b[3]);

            Assert.AreEqual(d[0], c[0]);
            Assert.AreEqual(d[1], c[1]);
            Assert.AreEqual(d[2], c[2]);
            Assert.AreEqual(d[3], c[3]);

            a.Add(b);

            Assert.AreEqual(c[0], a[0]);
            Assert.AreEqual(c[1], a[1]);
            Assert.AreEqual(c[2], a[2]);
            Assert.AreEqual(c[3], a[3]);
        }
Ejemplo n.º 26
0
        public void Subtract()
        {
            FloatVector a = new FloatVector(new float[4] {
                0, 1, 2, 3
            });
            FloatVector b = new FloatVector(new float[4] {
                4, 5, 6, 7
            });
            FloatVector c = new FloatVector(a.Length);
            FloatVector d = new FloatVector(b.Length);

            c = a - b;
            d = FloatVector.Subtract(a, b);

            Assert.AreEqual(c[0], a[0] - b[0]);
            Assert.AreEqual(c[1], a[1] - b[1]);
            Assert.AreEqual(c[2], a[2] - b[2]);
            Assert.AreEqual(c[3], a[3] - b[3]);

            Assert.AreEqual(d[0], c[0]);
            Assert.AreEqual(d[1], c[1]);
            Assert.AreEqual(d[2], c[2]);
            Assert.AreEqual(d[3], c[3]);

            a.Subtract(b);

            Assert.AreEqual(c[0], a[0]);
            Assert.AreEqual(c[1], a[1]);
            Assert.AreEqual(c[2], a[2]);
            Assert.AreEqual(c[3], a[3]);
        }
Ejemplo n.º 27
0
 public void SetRange(int index, FloatVector values)
 {
     MyDLLPINVOKE.FloatVector_SetRange(swigCPtr, index, FloatVector.getCPtr(values));
     if (MyDLLPINVOKE.SWIGPendingException.Pending)
     {
         throw MyDLLPINVOKE.SWIGPendingException.Retrieve();
     }
 }
Ejemplo n.º 28
0
 public static void AssertEqual(FloatVector v1, FloatVector v2, int maxDifference = 6)
 {
     Assert.AreEqual(v1.Count, v2.Count);
     for (var i = 0; i < v1.Count; i++)
     {
         AssertEqual(v1.Data[i], v2.Data[i], maxDifference);
     }
 }
Ejemplo n.º 29
0
        public void CtorInitialValues()
        {
            FloatVector test = new FloatVector(2, 1);

            Assert.AreEqual(test.Length, 2);
            Assert.AreEqual(test[0], 1);
            Assert.AreEqual(test[1], 1);
        }
Ejemplo n.º 30
0
        public void CtorDimensions()
        {
            FloatVector test = new FloatVector(2);

            Assert.AreEqual(test.Length, 2);
            Assert.AreEqual(test[0], 0);
            Assert.AreEqual(test[1], 0);
        }
Ejemplo n.º 31
0
 public void Convolve(Sound kernel,int channelTo, int channelFrom)
 {
     FloatVector kernelVector = new FloatVector(kernel.mSound[channelFrom]);
     FloatVector dataVector = new FloatVector(mSound[channelTo]);
     Float1DConvolution convolution = new Float1DConvolution(kernelVector,dataVector.Length);
     FloatVector result = convolution.Convolve(dataVector);
     mSound[channelTo] = result.ToArray();
 }