public void ViennaHostProvider_Set()
        {
            var provider = new VclHostTensorMath();

            var y = new ArraySlice <double>(10);

            provider.Set(10.0d, y);

            var yInt = new ArraySlice <double>(10);

            provider.Set(10, yInt);

            Assert.All(y, yy => MathHelpers.Equality(yy, 10.0d));
            Assert.All(yInt, yyInt => MathHelpers.Equality(yyInt, 10.0d));
        }
        public void ViennaHostProvider_Substract()
        {
            var provider = new VclHostTensorMath();

            var x = new ArraySlice <double>(10);

            provider.Set(10.0d, x);

            var y = new ArraySlice <double>(10);

            provider.Set(5.0d, y);

            provider.Substract(x, y);

            Assert.All(y, yy => MathHelpers.Equality(yy, 5.0d));
        }
        public void ViennaHostProvider_Gemm_SquareWithAdd()
        {
            var provider = new VclHostTensorMath();

            int size = 4;

            var x = new ArraySlice <double>(size * size);
            var y = new ArraySlice <double>(size * size);

            for (int i = 0; i < x.Length; i++)
            {
                int ii = i % size;
                int jj = i / size;

                x[i] = i;
                if (ii == jj)
                {
                    y[i] = 1;
                }
            }

            var r = new ArraySlice <double>(size * size);

            provider.Set(2, r);
            provider.Gemm(BlasTranspose.None, BlasTranspose.None, size, size, size, 1.0d, x, y, 1.0d, r);

            for (int i = 0; i < x.Length; i++)
            {
                Assert.True(MathHelpers.Equality(x[i] + 2, r[i]));
            }
        }
        public void ViennaHostProvider_Add()
        {
            var provider = new VclHostTensorMath();

            var x = new ArraySlice <double>(10);

            provider.Set(10.0d, x);
            provider.Add(10.0d, x);

            Assert.All(x, xx => MathHelpers.Equality(xx, 20.0d));
        }
        public void ViennaHostProvider_Axpby()
        {
            var provider = new VclHostTensorMath();

            var x = new ArraySlice <double>(10);

            provider.Set(10.0d, x);

            var y = new ArraySlice <double>(10);

            provider.Set(5.0d, y);

            provider.Axpby(1, x, 2, y);

            var z = new ArraySlice <double>(10);

            provider.Set(10.0d, z);

            provider.Axpy(2, x, z);

            Assert.All(y, yy => MathHelpers.Equality(yy, 20.0d));
            Assert.All(z, zz => MathHelpers.Equality(zz, 30.0d));
        }