Beispiel #1
0
        static void Main(string[] args)
        {
            NumericArray <Rational> numericArray = new NumericArray <Rational>();

            numericArray.Add(new Rational(1, 8));
            numericArray.Add(new Rational(1, 4));
            numericArray.Add(new Rational(1, 2));
            // place for 3/5
            numericArray.Add(new Rational(3, 4));
            numericArray.Add(new Rational(1, 4));
            Console.WriteLine("Numetic Array of Rational: ");
            Console.WriteLine(numericArray);

            Console.WriteLine("Size: " + numericArray.Size());
            Console.WriteLine("Max: " + numericArray.GetMax());
            Console.WriteLine("Min: " + numericArray.GetMin());

            Console.WriteLine("Greater than 3/5 (count): " + numericArray.HowManyIsGreaterThan(new Rational(3, 5)));
            Console.WriteLine("Lesser than 3/5 (count): " + numericArray.HowManyIsLesserThan(new Rational(3, 5)));

            Console.WriteLine("Greater than 1/2 (count): " + numericArray.HowManyIsGreaterThan(new Rational(1, 2)));
            Console.WriteLine("Lesser than 1/2 (count): " + numericArray.HowManyIsLesserThan(new Rational(1, 2)));

            String                  filepath        = "data.txt";
            String                  pattern         = "[0-9]+/[0-9]+";
            RationalFactory         rationalFactory = new RationalFactory();
            NumericArray <Rational> numericArray2   = new NumericArray <Rational>(filepath, pattern, rationalFactory);

            Console.WriteLine();
            Console.WriteLine("NumericArray2, created from file: ");
            Console.WriteLine(numericArray2);

            Polynom <Rational> polynom1 = new Polynom <Rational>(numericArray);
            Polynom <Rational> polynom2 = new Polynom <Rational>(numericArray2);

            Console.WriteLine();
            Console.WriteLine("Polynom1:");
            Console.WriteLine(polynom1);
            Console.WriteLine("Polynom2:");
            Console.WriteLine(polynom2);
            Console.WriteLine("Sum:");
            Console.WriteLine(polynom1 + polynom2);

            Console.WriteLine();
            Console.WriteLine("Trying to operate with rational with zero denominator:");
            try
            {
                Rational r = new Rational("3/0");
                Console.WriteLine(r);
                Console.WriteLine(r.GetDouble());
            } catch (Exception ex)
            {
                Console.WriteLine("Exception catched: " + ex.ToString());
            }
            Console.Read();
        }
Beispiel #2
0
        protected override void OnEVH()
        {
            switch (step)
            {
            case 1:
                parallism             = encVal.Length;
                scaleBits             = new byte[parallism];
                kip_minus_2_times_kmi = new NumericArray();
                party.receiver.ReceiveFrom(PartyType.KH, line, this, kip_minus_2_times_kmi);
                break;

            case 2:
                var enc_kip_eip = new NumericArray(parallism * Config.KeyBits);
                for (int p = 0; p < parallism; ++p)
                {
                    //System.Diagnostics.Debug.Assert(encVal[p].GetEncType() == EncryptionType.AddMod);
                    scaleBits[p] = encVal[p].GetScaleBits();
                    int offset = p * Config.KeyBits;
                    var emi    = new Numeric[Config.KeyBits];
                    for (int i = 0; i < Config.KeyBits; ++i)
                    {
                        emi[i] = encVal[p].ModPow(i);
                        emi[i].ResetScaleBits();
                        enc_kip_eip[offset + i] = emi[i] + kip_minus_2_times_kmi[offset + i];
                    }
                }
                eci = new NumericArray();
                new LessZeroOnEVH(party, line, this, enc_kip_eip, eci, Config.KeyBits).Run();
                break;

            case 3:
                Numeric[] enc_kf_a = new Numeric[parallism];
                for (int p = 0; p < parallism; ++p)
                {
                    int        offset = p * Config.KeyBits;
                    BigInteger bi     = BigInteger.Zero;
                    for (int i = Config.KeyBits - 1; i >= 0; --i)
                    {
                        bi = (bi << 1) + eci[offset + i].GetUnsignedBigInteger();
                    }
                    enc_kf_a[p] = new Numeric(bi, scaleBits[p]);
                    //System.Diagnostics.Debug.WriteLine("EVH    EncVal: " + encVal[p]);
                    //System.Diagnostics.Debug.WriteLine("EVH CarryBits: " + enckf[p]);
                    enc_kf_a[p] ^= encVal[p];
                    //System.Diagnostics.Debug.WriteLine("EVH   Results: " + enckf[p]);
                    enc_kf_a[p].SetScaleBits(scaleBits[p]);
                    //enckf[p].SetEncType(EncryptionType.XOR);
                }
                result.SetArray(enc_kf_a);
                caller.Run();
                break;

            default:
                throw new Exception();
            }
        }
Beispiel #3
0
        protected override void OnKH()
        {
            switch (step)
            {
            case 1:
                parallism = key.Length;
                scaleBits = new byte[parallism];
                Numeric[] kip = new Numeric[Config.KeyBits * parallism], kip_minus_2_times_kmi = new Numeric[Config.KeyBits * parallism];
                for (int p = 0; p < parallism; ++p)
                {
                    //System.Diagnostics.Debug.Assert(key[p].GetEncType() == EncryptionType.AddMod);
                    scaleBits[p] = key[p].GetScaleBits();
                    int offset = p * Config.KeyBits;
                    var kmi    = new Numeric[Config.KeyBits];
                    for (int i = 0; i < Config.KeyBits; ++i)
                    {
                        kmi[i] = key[p].ModPow(i);
                        kmi[i].ResetScaleBits();
                        kip[offset + i] = Utility.NextUnsignedNumeric(0);
                        kip_minus_2_times_kmi[offset + i] = kip[offset + i] - kmi[i];
                    }
                }
                var toEVH = Message.AssembleMessage(line, opType, false, kip_minus_2_times_kmi);
                party.sender.SendTo(PartyType.EVH, toEVH);
                kci = new NumericArray();
                new LessZeroOnKH(party, line, this, new NumericArray(kip), kci, Config.KeyBits).Run();
                break;

            case 2:
                Numeric[] kf = new Numeric[parallism];
                for (int p = 0; p < parallism; ++p)
                {
                    int        offset = p * Config.KeyBits;
                    BigInteger bi     = BigInteger.Zero;
                    for (int i = Config.KeyBits - 1; i >= 0; --i)
                    {
                        bi = (bi << 1) + kci[offset + i].GetUnsignedBigInteger();
                    }
                    kf[p] = new Numeric(bi, scaleBits[p]);
                    //System.Diagnostics.Debug.WriteLine("KH        Key: " + key[p]);
                    //System.Diagnostics.Debug.WriteLine("KH  CarryBits: " + kf[p]);
                    kf[p] ^= key[p];
                    //System.Diagnostics.Debug.WriteLine("KH    Results: " + kf[p]);
                    kf[p].SetScaleBits(scaleBits[p]);
                    //kf[p].SetEncType(EncryptionType.XOR);
                }
                result.SetArray(kf);
                caller.Run();
                break;

            default:
                throw new Exception();
            }
        }
        public void ToDelimitedString_WithAllProperties_ReturnsCorrectlySequencedFields()
        {
            IType hl7Type = new NumericArray
            {
                Value1 = 1,
                Value2 = 2,
                Value3 = 3,
                Value4 = 4
            };

            string expected = "1^2^3^4";
            string actual   = hl7Type.ToDelimitedString();

            Assert.Equal(expected, actual);
        }
        public void FromDelimitedString_WithAllProperties_ReturnsCorrectlyInitializedFields()
        {
            IType expected = new NumericArray
            {
                Value1 = 1,
                Value2 = 2,
                Value3 = 3,
                Value4 = 4
            };

            IType actual = new NumericArray();

            actual.FromDelimitedString("1^2^3^4");

            expected.Should().BeEquivalentTo(actual);
        }