Accord.Tests.Math.FourierTransformTest.testConvolution C# (CSharp) Method

testConvolution() private static method

private static testConvolution ( int size ) : void
size int
return void
        private static void testConvolution(int size)
        {
            double[] randomReals1 = randomReals(size);
            double[] randomReals2 = randomReals(size);
            double[] randomReals3 = randomReals(size);
            double[] randomReals4 = randomReals(size);

            // Test double array overloads
            double[] input0real = (double[])randomReals1.Clone();
            double[] input0imag = (double[])randomReals2.Clone();
            double[] input1real = (double[])randomReals3.Clone();
            double[] input1imag = (double[])randomReals4.Clone();

            double[] refoutreal = new double[size];
            double[] refoutimag = new double[size];
            naiveConvolve(input0real, input0imag, input1real, input1imag, refoutreal, refoutimag);

            double[] actualoutreal = new double[size];
            double[] actualoutimag = new double[size];
            FourierTransform2.Convolve(input0real, input0imag, input1real, input1imag, actualoutreal, actualoutimag);

            double error = log10RmsErr(refoutreal, refoutimag, actualoutreal, actualoutimag);
            Assert.IsTrue(error < 13);



            // Test Complex overloads
            input0real = (double[])randomReals1.Clone();
            input0imag = (double[])randomReals2.Clone();
            input1real = (double[])randomReals3.Clone();
            input1imag = (double[])randomReals4.Clone();

            Complex[] input0 = input0real.ToComplex(input0imag);
            Complex[] input1 = input1real.ToComplex(input1imag);
            Complex[] actualout = new Complex[size];
            FourierTransform2.Convolve(input0, input1, actualout);

            actualoutreal = actualout.Re();
            actualoutimag = actualout.Im();

            double newError = log10RmsErr(refoutreal, refoutimag, actualoutreal, actualoutimag);
            Assert.AreEqual(error, newError);
        }