Example #1
0
        public void ManyOperandsCheck()
        {
            int digitsInput = 4, digitsOutput = 1;

            double[] distortionto1Probability = { 0.0, 0.0, 0.0, 0.0 };
            double[] distortionto0Probability = { 0.0, 0.0, 0.0, 0.0 };
            double[] distortiontoInverseProbability = { 0.5, 0.5, 0.5, 0.5 };
            double   expected_G0 = 0.0625;
            double   expected_Gc = 0.0, expected_Gce = 0.0;
            double   expected_Gee = 0.25;

            double[] zeroProbability = { 0.5, 0.5, 0.5, 0.5 };
            string[] func            = new string[1];
            func[0] = "(x[0] ^ x[1]) ^ (x[2] ^ x[3])";
            var f = new BooleanFunctionAnalytic(digitsInput, digitsOutput, func);

            f.SetDistortionProbabilitiesVectors(distortionto0Probability, distortionto1Probability, distortiontoInverseProbability);
            ProbabilitiesGxyCalc pGxy = new ProbabilitiesGxyCalc(f, zeroProbability);
            var actual1 = pGxy.GetGprobabilitesResult(new BitArray(digitsOutput, true));
            var actual0 = pGxy.GetGprobabilitesResult(new BitArray(digitsOutput, false));

            Assert.AreEqual(expected_G0, actual1.G0, 0.00001, "Fail for many operands G0");
            Assert.AreEqual(expected_Gc, actual1.Gc, 0.00001, "Fail for many operands Gc");
            //Assert.AreEqual(expected_Gce, actual.Gce, 0.00001, "Fail for many operands Gce");
            Assert.AreEqual(expected_Gee, actual1.Gee, 0.00001, "Fail for many operands Gee");
            Assert.AreEqual(actual1.G0 + actual1.Gc + actual1.Gce + actual1.Gee
                            + actual0.Gc + actual0.Gce + actual0.Gee, 1.0, 0.001, "Fail sum of probabilities");
        }
Example #2
0
        public void Base3Check()
        {
            int digitsInput = 1, digitsOutput = 1;

            double[] distortionto1Probability       = { 0.0 };
            double[] distortionto0Probability       = { 0.0 };
            double[] distortiontoInverseProbability = { 0.5 };
            double[] zeroProbability                = { 0.5 };
            string[] func = new string[1];
            func[0] = "x[0]";
            var f = new BooleanFunctionAnalytic(digitsInput, digitsOutput, func);

            f.SetDistortionProbabilitiesVectors(distortionto0Probability, distortionto1Probability, distortiontoInverseProbability);
            ProbabilitiesGxyCalc pGxy = new ProbabilitiesGxyCalc(f, zeroProbability);
            var a1 = pGxy.Base3(0, 3);

            int[] exp1 = new int[3];
            for (int i = 0; i < exp1.Length; i++)
            {
                Assert.AreEqual(exp1[i], a1[i], "Base3 test Fail");
            }
            var a2 = pGxy.Base3(4, 3);

            int[] exp2 = new int[3];
            exp2[1] = exp2[0] = 1;
            for (int i = 0; i < exp2.Length; i++)
            {
                Assert.AreEqual(exp2[i], a2[i], "Base3 test Fail");
            }
            const int size = 20;
            var       a3   = pGxy.Base3(3456345, size);

            int[] exp3 = new int[size];
            exp3[13 - 0]             = 2;
            exp3[13 - 1]             = 0;
            exp3[13 - 2]             =
                exp3[13 - 3]         =
                    exp3[13 - 4]     =
                        exp3[13 - 5] = 1;
            exp3[13 - 6]             = 2;
            exp3[13 - 7]             = 1;
            exp3[13 - 8]             = 0;
            exp3[13 - 9]             = 1;
            exp3[13 - 10]            =
                exp3[13 - 11]        = 2;
            exp3[13 - 12]            = 1;
            exp3[13 - 13]            = 0;
            for (int i = 0; i < exp3.Length; i++)
            {
                Assert.AreEqual(exp3[i], a3[i], "Base3 test Fail with index " + i);
            }
        }
        private void AcceptAnaliticFucntion_Click(object sender, EventArgs e)
        {
            if (textBoolFunction.Text.Trim().Length < 1)
            {
                return;
            }
            string[] text;
            text = textBoolFunction.Lines;
            int bitsInput = Convert.ToInt32(numericDigitsCount.Value);
            BooleanFunctionAnalytic bf = new BooleanFunctionAnalytic(bitsInput, text.Length, text);

            _bfProxy(bf);
            this.FindForm().Close();
        }
Example #4
0
        public void AutoCorrectionCalcCheck()
        {
            int digitsInput = 4, digitsOutput = 1;

            double[] distortionto1Probability       = { 0.1, 0.03, 0.1, 0.04 };
            double[] distortionto0Probability       = { 0.09, 0.01, 0.02, 0.03 };
            double[] distortiontoInverseProbability = { 0.1, 0.05, 0.04, 0.08 };
            double[] zeroProbability                = { 0.5, 0.5, 0.5, 0.5 };
            string[] func = new string[1];
            func[0] = "(x[0]) & (x[2] | x[3])";
            var f = new BooleanFunctionAnalytic(digitsInput, digitsOutput, func);

            f.SetDistortionProbabilitiesVectors(distortionto0Probability, distortionto1Probability, distortiontoInverseProbability);
            ProbabilitiesGxyCalc pGxy = new ProbabilitiesGxyCalc(f, zeroProbability);
            var actual1 = pGxy.GetGprobabilitesResult(new BitArray(digitsOutput, true));
            var actual0 = pGxy.GetGprobabilitesResult(new BitArray(digitsOutput, false));

            Assert.AreEqual(actual1.G0 + actual1.Gc + actual1.Gce + actual1.Gee
                            + actual0.Gc + actual0.Gce + actual0.Gee, 1.0, 0.001, "Fail sum of probabilities");
        }/*
Example #5
0
        public void ElementaryLogicCheck()
        {
            double expected_G0 = 0.5;
            double expected_Gc = 0.0, expected_Gce = 0.0;
            double expected_Gee = 0.25;
            int    digitsInput = 1, digitsOutput = 1;

            double[] distortionto1Probability       = { 0.0 };
            double[] distortionto0Probability       = { 0.0 };
            double[] distortiontoInverseProbability = { 0.5 };
            double[] zeroProbability                = { 0.5 };
            string[] func = new string[1];
            func[0] = "x[0]";
            var f = new BooleanFunctionAnalytic(digitsInput, digitsOutput, func);

            f.SetDistortionProbabilitiesVectors(distortionto0Probability, distortionto1Probability, distortiontoInverseProbability);
            ProbabilitiesGxyCalc pGxy = new ProbabilitiesGxyCalc(f, zeroProbability);
            var actual = pGxy.GetGprobabilitesResult(new BitArray(1, true));

            Assert.AreEqual(expected_G0, actual.G0, 0.00001, "Elementary test Fail G0");
            Assert.AreEqual(expected_Gc, actual.Gc, 0.00001, "Elementary test Fail Gc");
            Assert.AreEqual(expected_Gce, actual.Gce, 0.00001, "Elementary test Fail Gce");
            Assert.AreEqual(expected_Gee, actual.Gee, 0.00001, "Elementary test Fail Gee");
        }