Пример #1
0
        private static void InitAdd()
        {
            Add = GenericMethod.Get("Add", "Add", "op_Addition");

            Add.Add <bool, bool>((a, b) => a || b);

            Add.Add <byte, byte>((a, b) => a + b);
            Add.Add <byte, sbyte>((a, b) => a + b);
            Add.Add <byte, char>((a, b) => a + b);
            Add.Add <byte, short>((a, b) => a + b);
            Add.Add <byte, ushort>((a, b) => a + b);
            Add.Add <byte, int>((a, b) => a + b);
            Add.Add <byte, uint>((a, b) => a + b);
            Add.Add <byte, long>((a, b) => a + b);
            Add.Add <byte, ulong>((a, b) => a + b);
            Add.Add <byte, decimal>((a, b) => a + b);
            Add.Add <byte, float>((a, b) => a + b);
            Add.Add <byte, double>((a, b) => a + b);

            Add.Add <sbyte, byte>((a, b) => a + b);
            Add.Add <sbyte, sbyte>((a, b) => a + b);
            Add.Add <sbyte, char>((a, b) => a + b);
            Add.Add <sbyte, short>((a, b) => a + b);
            Add.Add <sbyte, ushort>((a, b) => a + b);
            Add.Add <sbyte, int>((a, b) => a + b);
            Add.Add <sbyte, uint>((a, b) => a + b);
            Add.Add <sbyte, long>((a, b) => a + b);
            //Add.Add<sbyte, ulong>((a, b) => a + b);
            Add.Add <sbyte, decimal>((a, b) => a + b);
            Add.Add <sbyte, float>((a, b) => a + b);
            Add.Add <sbyte, double>((a, b) => a + b);

            Add.Add <char, byte>((a, b) => a + b);
            Add.Add <char, sbyte>((a, b) => a + b);
            Add.Add <char, char>((a, b) => a + b);
            Add.Add <char, short>((a, b) => a + b);
            Add.Add <char, ushort>((a, b) => a + b);
            Add.Add <char, int>((a, b) => a + b);
            Add.Add <char, uint>((a, b) => a + b);
            Add.Add <char, long>((a, b) => a + b);
            Add.Add <char, ulong>((a, b) => a + b);
            Add.Add <char, decimal>((a, b) => a + b);
            Add.Add <char, float>((a, b) => a + b);
            Add.Add <char, double>((a, b) => a + b);

            Add.Add <short, byte>((a, b) => a + b);
            Add.Add <short, sbyte>((a, b) => a + b);
            Add.Add <short, char>((a, b) => a + b);
            Add.Add <short, short>((a, b) => a + b);
            Add.Add <short, ushort>((a, b) => a + b);
            Add.Add <short, int>((a, b) => a + b);
            Add.Add <short, uint>((a, b) => a + b);
            Add.Add <short, long>((a, b) => a + b);
            //Add.Add<short, ulong>((a, b) => a + b);
            Add.Add <short, decimal>((a, b) => a + b);
            Add.Add <short, float>((a, b) => a + b);
            Add.Add <short, double>((a, b) => a + b);

            Add.Add <ushort, byte>((a, b) => a + b);
            Add.Add <ushort, sbyte>((a, b) => a + b);
            Add.Add <ushort, char>((a, b) => a + b);
            Add.Add <ushort, short>((a, b) => a + b);
            Add.Add <ushort, ushort>((a, b) => a + b);
            Add.Add <ushort, int>((a, b) => a + b);
            Add.Add <ushort, uint>((a, b) => a + b);
            Add.Add <ushort, long>((a, b) => a + b);
            Add.Add <ushort, ulong>((a, b) => a + b);
            Add.Add <ushort, decimal>((a, b) => a + b);
            Add.Add <ushort, float>((a, b) => a + b);
            Add.Add <ushort, double>((a, b) => a + b);

            Add.Add <int, byte>((a, b) => a + b);
            Add.Add <int, sbyte>((a, b) => a + b);
            Add.Add <int, char>((a, b) => a + b);
            Add.Add <int, short>((a, b) => a + b);
            Add.Add <int, ushort>((a, b) => a + b);
            Add.Add <int, int>((a, b) => a + b);
            Add.Add <int, uint>((a, b) => a + b);
            Add.Add <int, long>((a, b) => a + b);
            // Add.Add<int, ulong>((a, b) => a + b);
            Add.Add <int, decimal>((a, b) => a + b);
            Add.Add <int, float>((a, b) => a + b);
            Add.Add <int, double>((a, b) => a + b);

            Add.Add <uint, byte>((a, b) => a + b);
            Add.Add <uint, sbyte>((a, b) => a + b);
            Add.Add <uint, char>((a, b) => a + b);
            Add.Add <uint, short>((a, b) => a + b);
            Add.Add <uint, ushort>((a, b) => a + b);
            Add.Add <uint, int>((a, b) => a + b);
            Add.Add <uint, uint>((a, b) => a + b);
            Add.Add <uint, long>((a, b) => a + b);
            Add.Add <uint, ulong>((a, b) => a + b);
            Add.Add <uint, decimal>((a, b) => a + b);
            Add.Add <uint, float>((a, b) => a + b);
            Add.Add <uint, double>((a, b) => a + b);

            Add.Add <long, byte>((a, b) => a + b);
            Add.Add <long, sbyte>((a, b) => a + b);
            Add.Add <long, char>((a, b) => a + b);
            Add.Add <long, short>((a, b) => a + b);
            Add.Add <long, ushort>((a, b) => a + b);
            Add.Add <long, int>((a, b) => a + b);
            Add.Add <long, uint>((a, b) => a + b);
            Add.Add <long, long>((a, b) => a + b);
            //Add.Add<long, ulong>((a, b) => a + b);
            Add.Add <long, decimal>((a, b) => a + b);
            Add.Add <long, float>((a, b) => a + b);
            Add.Add <long, double>((a, b) => a + b);

            Add.Add <ulong, byte>((a, b) => a + b);
            //Add.Add<ulong, sbyte>((a, b) => a + b);
            Add.Add <ulong, char>((a, b) => a + b);
            //Add.Add<ulong, short>((a, b) => a + b);
            Add.Add <ulong, ushort>((a, b) => a + b);
            //Add.Add<ulong, int>((a, b) => a + b);
            Add.Add <ulong, uint>((a, b) => a + b);
            //Add.Add<ulong, long>((a, b) => a + b);
            Add.Add <ulong, ulong>((a, b) => a + b);
            Add.Add <ulong, decimal>((a, b) => a + b);
            Add.Add <ulong, float>((a, b) => a + b);
            Add.Add <ulong, double>((a, b) => a + b);

            Add.Add <decimal, byte>((a, b) => a + b);
            Add.Add <decimal, sbyte>((a, b) => a + b);
            Add.Add <decimal, char>((a, b) => a + b);
            Add.Add <decimal, short>((a, b) => a + b);
            Add.Add <decimal, ushort>((a, b) => a + b);
            Add.Add <decimal, int>((a, b) => a + b);
            Add.Add <decimal, uint>((a, b) => a + b);
            Add.Add <decimal, long>((a, b) => a + b);
            Add.Add <decimal, ulong>((a, b) => a + b);
            Add.Add <decimal, decimal>((a, b) => a + b);
            //Add.Add<decimal, float>((a, b) => a + b);
            //Add.Add<decimal, double>((a, b) => a + b);

            Add.Add <float, byte>((a, b) => a + b);
            Add.Add <float, sbyte>((a, b) => a + b);
            Add.Add <float, char>((a, b) => a + b);
            Add.Add <float, short>((a, b) => a + b);
            Add.Add <float, ushort>((a, b) => a + b);
            Add.Add <float, int>((a, b) => a + b);
            Add.Add <float, uint>((a, b) => a + b);
            Add.Add <float, long>((a, b) => a + b);
            Add.Add <float, ulong>((a, b) => a + b);
            //Add.Add<float, decimal>((a, b) => a + b);
            Add.Add <float, float>((a, b) => a + b);
            Add.Add <float, double>((a, b) => a + b);

            Add.Add <double, byte>((a, b) => a + b);
            Add.Add <double, sbyte>((a, b) => a + b);
            Add.Add <double, char>((a, b) => a + b);
            Add.Add <double, short>((a, b) => a + b);
            Add.Add <double, ushort>((a, b) => a + b);
            Add.Add <double, int>((a, b) => a + b);
            Add.Add <double, uint>((a, b) => a + b);
            Add.Add <double, long>((a, b) => a + b);
            Add.Add <double, ulong>((a, b) => a + b);
            //Add.Add<double, decimal>((a, b) => a + b);
            Add.Add <double, float>((a, b) => a + b);
            Add.Add <double, double>((a, b) => a + b);
        }
Пример #2
0
        private static void InitMultiply()
        {
            Multiply = GenericMethod.Get("Multiply", "Multiply", "op_Multiply");

            Multiply.Add <bool, bool>((a, b) => a && b);

            Multiply.Add <byte, byte>((a, b) => a * b);
            Multiply.Add <byte, sbyte>((a, b) => a * b);
            Multiply.Add <byte, char>((a, b) => a * b);
            Multiply.Add <byte, short>((a, b) => a * b);
            Multiply.Add <byte, ushort>((a, b) => a * b);
            Multiply.Add <byte, int>((a, b) => a * b);
            Multiply.Add <byte, uint>((a, b) => a * b);
            Multiply.Add <byte, long>((a, b) => a * b);
            Multiply.Add <byte, ulong>((a, b) => a * b);
            Multiply.Add <byte, decimal>((a, b) => a * b);
            Multiply.Add <byte, float>((a, b) => a * b);
            Multiply.Add <byte, double>((a, b) => a * b);

            Multiply.Add <sbyte, byte>((a, b) => a * b);
            Multiply.Add <sbyte, sbyte>((a, b) => a * b);
            Multiply.Add <sbyte, char>((a, b) => a * b);
            Multiply.Add <sbyte, short>((a, b) => a * b);
            Multiply.Add <sbyte, ushort>((a, b) => a * b);
            Multiply.Add <sbyte, int>((a, b) => a * b);
            Multiply.Add <sbyte, uint>((a, b) => a * b);
            Multiply.Add <sbyte, long>((a, b) => a * b);
            //Multiply.Add<sbyte, ulong>((a, b) => a * b);
            Multiply.Add <sbyte, decimal>((a, b) => a * b);
            Multiply.Add <sbyte, float>((a, b) => a * b);
            Multiply.Add <sbyte, double>((a, b) => a * b);

            Multiply.Add <char, byte>((a, b) => a * b);
            Multiply.Add <char, sbyte>((a, b) => a * b);
            Multiply.Add <char, char>((a, b) => a * b);
            Multiply.Add <char, short>((a, b) => a * b);
            Multiply.Add <char, ushort>((a, b) => a * b);
            Multiply.Add <char, int>((a, b) => a * b);
            Multiply.Add <char, uint>((a, b) => a * b);
            Multiply.Add <char, long>((a, b) => a * b);
            Multiply.Add <char, ulong>((a, b) => a * b);
            Multiply.Add <char, decimal>((a, b) => a * b);
            Multiply.Add <char, float>((a, b) => a * b);
            Multiply.Add <char, double>((a, b) => a * b);

            Multiply.Add <short, byte>((a, b) => a * b);
            Multiply.Add <short, sbyte>((a, b) => a * b);
            Multiply.Add <short, char>((a, b) => a * b);
            Multiply.Add <short, short>((a, b) => a * b);
            Multiply.Add <short, ushort>((a, b) => a * b);
            Multiply.Add <short, int>((a, b) => a * b);
            Multiply.Add <short, uint>((a, b) => a * b);
            Multiply.Add <short, long>((a, b) => a * b);
            //Multiply.Add<short, ulong>((a, b) => a * b);
            Multiply.Add <short, decimal>((a, b) => a * b);
            Multiply.Add <short, float>((a, b) => a * b);
            Multiply.Add <short, double>((a, b) => a * b);

            Multiply.Add <ushort, byte>((a, b) => a * b);
            Multiply.Add <ushort, sbyte>((a, b) => a * b);
            Multiply.Add <ushort, char>((a, b) => a * b);
            Multiply.Add <ushort, short>((a, b) => a * b);
            Multiply.Add <ushort, ushort>((a, b) => a * b);
            Multiply.Add <ushort, int>((a, b) => a * b);
            Multiply.Add <ushort, uint>((a, b) => a * b);
            Multiply.Add <ushort, long>((a, b) => a * b);
            Multiply.Add <ushort, ulong>((a, b) => a * b);
            Multiply.Add <ushort, decimal>((a, b) => a * b);
            Multiply.Add <ushort, float>((a, b) => a * b);
            Multiply.Add <ushort, double>((a, b) => a * b);

            Multiply.Add <int, byte>((a, b) => a * b);
            Multiply.Add <int, sbyte>((a, b) => a * b);
            Multiply.Add <int, char>((a, b) => a * b);
            Multiply.Add <int, short>((a, b) => a * b);
            Multiply.Add <int, ushort>((a, b) => a * b);
            Multiply.Add <int, int>((a, b) => a * b);
            Multiply.Add <int, uint>((a, b) => a * b);
            Multiply.Add <int, long>((a, b) => a * b);
            //Multiply.Add<int, ulong>((a, b) => a * b);
            Multiply.Add <int, decimal>((a, b) => a * b);
            Multiply.Add <int, float>((a, b) => a * b);
            Multiply.Add <int, double>((a, b) => a * b);

            Multiply.Add <uint, byte>((a, b) => a * b);
            Multiply.Add <uint, sbyte>((a, b) => a * b);
            Multiply.Add <uint, char>((a, b) => a * b);
            Multiply.Add <uint, short>((a, b) => a * b);
            Multiply.Add <uint, ushort>((a, b) => a * b);
            Multiply.Add <uint, int>((a, b) => a * b);
            Multiply.Add <uint, uint>((a, b) => a * b);
            Multiply.Add <uint, long>((a, b) => a * b);
            Multiply.Add <uint, ulong>((a, b) => a * b);
            Multiply.Add <uint, decimal>((a, b) => a * b);
            Multiply.Add <uint, float>((a, b) => a * b);
            Multiply.Add <uint, double>((a, b) => a * b);

            Multiply.Add <long, byte>((a, b) => a * b);
            Multiply.Add <long, sbyte>((a, b) => a * b);
            Multiply.Add <long, char>((a, b) => a * b);
            Multiply.Add <long, short>((a, b) => a * b);
            Multiply.Add <long, ushort>((a, b) => a * b);
            Multiply.Add <long, int>((a, b) => a * b);
            Multiply.Add <long, uint>((a, b) => a * b);
            Multiply.Add <long, long>((a, b) => a * b);
            //Multiply.Add<long, ulong>((a, b) => a * b);
            Multiply.Add <long, decimal>((a, b) => a * b);
            Multiply.Add <long, float>((a, b) => a * b);
            Multiply.Add <long, double>((a, b) => a * b);

            Multiply.Add <ulong, byte>((a, b) => a * b);
            //Multiply.Add<ulong, sbyte>((a, b) => a * b);
            Multiply.Add <ulong, char>((a, b) => a * b);
            //Multiply.Add<ulong, short>((a, b) => a * b);
            Multiply.Add <ulong, ushort>((a, b) => a * b);
            //Multiply.Add<ulong, int>((a, b) => a * b);
            Multiply.Add <ulong, uint>((a, b) => a * b);
            //Multiply.Add<ulong, long>((a, b) => a * b);
            Multiply.Add <ulong, ulong>((a, b) => a * b);
            Multiply.Add <ulong, decimal>((a, b) => a * b);
            Multiply.Add <ulong, float>((a, b) => a * b);
            Multiply.Add <ulong, double>((a, b) => a * b);

            Multiply.Add <decimal, byte>((a, b) => a * b);
            Multiply.Add <decimal, sbyte>((a, b) => a * b);
            Multiply.Add <decimal, char>((a, b) => a * b);
            Multiply.Add <decimal, short>((a, b) => a * b);
            Multiply.Add <decimal, ushort>((a, b) => a * b);
            Multiply.Add <decimal, int>((a, b) => a * b);
            Multiply.Add <decimal, uint>((a, b) => a * b);
            Multiply.Add <decimal, long>((a, b) => a * b);
            Multiply.Add <decimal, ulong>((a, b) => a * b);
            Multiply.Add <decimal, decimal>((a, b) => a * b);
            //Multiply.Add<decimal, float>((a, b) => a * b);
            //Multiply.Add<decimal, double>((a, b) => a * b);

            Multiply.Add <float, byte>((a, b) => a * b);
            Multiply.Add <float, sbyte>((a, b) => a * b);
            Multiply.Add <float, char>((a, b) => a * b);
            Multiply.Add <float, short>((a, b) => a * b);
            Multiply.Add <float, ushort>((a, b) => a * b);
            Multiply.Add <float, int>((a, b) => a * b);
            Multiply.Add <float, uint>((a, b) => a * b);
            Multiply.Add <float, long>((a, b) => a * b);
            Multiply.Add <float, ulong>((a, b) => a * b);
            //Multiply.Add<float, decimal>((a, b) => a * b);
            Multiply.Add <float, float>((a, b) => a * b);
            Multiply.Add <float, double>((a, b) => a * b);

            Multiply.Add <double, byte>((a, b) => a * b);
            Multiply.Add <double, sbyte>((a, b) => a * b);
            Multiply.Add <double, char>((a, b) => a * b);
            Multiply.Add <double, short>((a, b) => a * b);
            Multiply.Add <double, ushort>((a, b) => a * b);
            Multiply.Add <double, int>((a, b) => a * b);
            Multiply.Add <double, uint>((a, b) => a * b);
            Multiply.Add <double, long>((a, b) => a * b);
            Multiply.Add <double, ulong>((a, b) => a * b);
            //Multiply.Add<double, decimal>((a, b) => a * b);
            Multiply.Add <double, float>((a, b) => a * b);
            Multiply.Add <double, double>((a, b) => a * b);
        }
Пример #3
0
        private static void InitSign()
        {
            Sign = GenericMethod.Get("Sign", "Sign");

            Sign.Add <byte>(a => Math.Sign(a));
            Sign.Add <sbyte>(a => Math.Sign(a));
            Sign.Add <char>(a => Math.Sign(a));
            Sign.Add <short>(a => Math.Sign(a));
            Sign.Add <ushort>(a => Math.Sign(a));
            Sign.Add <int>(a => Math.Sign(a));
            Sign.Add <uint>(a => Math.Sign(a));
            Sign.Add <long>(a => Math.Sign(a));
            //Sign.Add<ulong>(a => Math.Sign(a));
            Sign.Add <decimal>(a => Math.Sign(a));
            Sign.Add <float>(a => Math.Sign(a));
            Sign.Add <double>(a => Math.Sign(a));
        }
Пример #4
0
        private static void InitDivide()
        {
            Divide = GenericMethod.Get("Divide", "Divide", "op_Division");

            Divide.Add <byte, byte>((a, b) => a / b);
            Divide.Add <byte, sbyte>((a, b) => a / b);
            Divide.Add <byte, char>((a, b) => a / b);
            Divide.Add <byte, short>((a, b) => a / b);
            Divide.Add <byte, ushort>((a, b) => a / b);
            Divide.Add <byte, int>((a, b) => a / b);
            Divide.Add <byte, uint>((a, b) => a / b);
            Divide.Add <byte, long>((a, b) => a / b);
            Divide.Add <byte, ulong>((a, b) => a / b);
            Divide.Add <byte, decimal>((a, b) => a / b);
            Divide.Add <byte, float>((a, b) => a / b);
            Divide.Add <byte, double>((a, b) => a / b);

            Divide.Add <sbyte, byte>((a, b) => a / b);
            Divide.Add <sbyte, sbyte>((a, b) => a / b);
            Divide.Add <sbyte, char>((a, b) => a / b);
            Divide.Add <sbyte, short>((a, b) => a / b);
            Divide.Add <sbyte, ushort>((a, b) => a / b);
            Divide.Add <sbyte, int>((a, b) => a / b);
            Divide.Add <sbyte, uint>((a, b) => a / b);
            Divide.Add <sbyte, long>((a, b) => a / b);
            //Divide.Add<sbyte, ulong>((a, b) => a / b);
            Divide.Add <sbyte, decimal>((a, b) => a / b);
            Divide.Add <sbyte, float>((a, b) => a / b);
            Divide.Add <sbyte, double>((a, b) => a / b);

            Divide.Add <char, byte>((a, b) => a / b);
            Divide.Add <char, sbyte>((a, b) => a / b);
            Divide.Add <char, char>((a, b) => a / b);
            Divide.Add <char, short>((a, b) => a / b);
            Divide.Add <char, ushort>((a, b) => a / b);
            Divide.Add <char, int>((a, b) => a / b);
            Divide.Add <char, uint>((a, b) => a / b);
            Divide.Add <char, long>((a, b) => a / b);
            Divide.Add <char, ulong>((a, b) => a / b);
            Divide.Add <char, decimal>((a, b) => a / b);
            Divide.Add <char, float>((a, b) => a / b);
            Divide.Add <char, double>((a, b) => a / b);

            Divide.Add <short, byte>((a, b) => a / b);
            Divide.Add <short, sbyte>((a, b) => a / b);
            Divide.Add <short, char>((a, b) => a / b);
            Divide.Add <short, short>((a, b) => a / b);
            Divide.Add <short, ushort>((a, b) => a / b);
            Divide.Add <short, int>((a, b) => a / b);
            Divide.Add <short, uint>((a, b) => a / b);
            Divide.Add <short, long>((a, b) => a / b);
            //Divide.Add<short, ulong>((a, b) => a / b);
            Divide.Add <short, decimal>((a, b) => a / b);
            Divide.Add <short, float>((a, b) => a / b);
            Divide.Add <short, double>((a, b) => a / b);

            Divide.Add <ushort, byte>((a, b) => a / b);
            Divide.Add <ushort, sbyte>((a, b) => a / b);
            Divide.Add <ushort, char>((a, b) => a / b);
            Divide.Add <ushort, short>((a, b) => a / b);
            Divide.Add <ushort, ushort>((a, b) => a / b);
            Divide.Add <ushort, int>((a, b) => a / b);
            Divide.Add <ushort, uint>((a, b) => a / b);
            Divide.Add <ushort, long>((a, b) => a / b);
            Divide.Add <ushort, ulong>((a, b) => a / b);
            Divide.Add <ushort, decimal>((a, b) => a / b);
            Divide.Add <ushort, float>((a, b) => a / b);
            Divide.Add <ushort, double>((a, b) => a / b);

            Divide.Add <int, byte>((a, b) => a / b);
            Divide.Add <int, sbyte>((a, b) => a / b);
            Divide.Add <int, char>((a, b) => a / b);
            Divide.Add <int, short>((a, b) => a / b);
            Divide.Add <int, ushort>((a, b) => a / b);
            Divide.Add <int, int>((a, b) => a / b);
            Divide.Add <int, uint>((a, b) => a / b);
            Divide.Add <int, long>((a, b) => a / b);
            //Divide.Add<int, ulong>((a, b) => a / b);
            Divide.Add <int, decimal>((a, b) => a / b);
            Divide.Add <int, float>((a, b) => a / b);
            Divide.Add <int, double>((a, b) => a / b);

            Divide.Add <uint, byte>((a, b) => a / b);
            Divide.Add <uint, sbyte>((a, b) => a / b);
            Divide.Add <uint, char>((a, b) => a / b);
            Divide.Add <uint, short>((a, b) => a / b);
            Divide.Add <uint, ushort>((a, b) => a / b);
            Divide.Add <uint, int>((a, b) => a / b);
            Divide.Add <uint, uint>((a, b) => a / b);
            Divide.Add <uint, long>((a, b) => a / b);
            Divide.Add <uint, ulong>((a, b) => a / b);
            Divide.Add <uint, decimal>((a, b) => a / b);
            Divide.Add <uint, float>((a, b) => a / b);
            Divide.Add <uint, double>((a, b) => a / b);

            Divide.Add <long, byte>((a, b) => a / b);
            Divide.Add <long, sbyte>((a, b) => a / b);
            Divide.Add <long, char>((a, b) => a / b);
            Divide.Add <long, short>((a, b) => a / b);
            Divide.Add <long, ushort>((a, b) => a / b);
            Divide.Add <long, int>((a, b) => a / b);
            Divide.Add <long, uint>((a, b) => a / b);
            Divide.Add <long, long>((a, b) => a / b);
            //Divide.Add<long, ulong>((a, b) => a / b);
            Divide.Add <long, decimal>((a, b) => a / b);
            Divide.Add <long, float>((a, b) => a / b);
            Divide.Add <long, double>((a, b) => a / b);

            Divide.Add <ulong, byte>((a, b) => a / b);
            //Divide.Add<ulong, sbyte>((a, b) => a / b);
            Divide.Add <ulong, char>((a, b) => a / b);
            //Divide.Add<ulong, short>((a, b) => a / b);
            Divide.Add <ulong, ushort>((a, b) => a / b);
            //Divide.Add<ulong, int>((a, b) => a / b);
            Divide.Add <ulong, uint>((a, b) => a / b);
            //Divide.Add<ulong, long>((a, b) => a / b);
            Divide.Add <ulong, ulong>((a, b) => a / b);
            Divide.Add <ulong, decimal>((a, b) => a / b);
            Divide.Add <ulong, float>((a, b) => a / b);
            Divide.Add <ulong, double>((a, b) => a / b);

            Divide.Add <decimal, byte>((a, b) => a / b);
            Divide.Add <decimal, sbyte>((a, b) => a / b);
            Divide.Add <decimal, char>((a, b) => a / b);
            Divide.Add <decimal, short>((a, b) => a / b);
            Divide.Add <decimal, ushort>((a, b) => a / b);
            Divide.Add <decimal, int>((a, b) => a / b);
            Divide.Add <decimal, uint>((a, b) => a / b);
            Divide.Add <decimal, long>((a, b) => a / b);
            Divide.Add <decimal, ulong>((a, b) => a / b);
            Divide.Add <decimal, decimal>((a, b) => a / b);
            //Divide.Add<decimal, float>((a, b) => a / b);
            //Divide.Add<decimal, double>((a, b) => a / b);

            Divide.Add <float, byte>((a, b) => a / b);
            Divide.Add <float, sbyte>((a, b) => a / b);
            Divide.Add <float, char>((a, b) => a / b);
            Divide.Add <float, short>((a, b) => a / b);
            Divide.Add <float, ushort>((a, b) => a / b);
            Divide.Add <float, int>((a, b) => a / b);
            Divide.Add <float, uint>((a, b) => a / b);
            Divide.Add <float, long>((a, b) => a / b);
            Divide.Add <float, ulong>((a, b) => a / b);
            //Divide.Add<float, decimal>((a, b) => a / b);
            Divide.Add <float, float>((a, b) => a / b);
            Divide.Add <float, double>((a, b) => a / b);

            Divide.Add <double, byte>((a, b) => a / b);
            Divide.Add <double, sbyte>((a, b) => a / b);
            Divide.Add <double, char>((a, b) => a / b);
            Divide.Add <double, short>((a, b) => a / b);
            Divide.Add <double, ushort>((a, b) => a / b);
            Divide.Add <double, int>((a, b) => a / b);
            Divide.Add <double, uint>((a, b) => a / b);
            Divide.Add <double, long>((a, b) => a / b);
            Divide.Add <double, ulong>((a, b) => a / b);
            //Divide.Add<double, decimal>((a, b) => a / b);
            Divide.Add <double, float>((a, b) => a / b);
            Divide.Add <double, double>((a, b) => a / b);
        }
Пример #5
0
        private static void InitSubtract()
        {
            Subtract = GenericMethod.Get("Subtract", "Subtract", "op_Subtraction");

            Subtract.Add <bool, bool>((a, b) => a ^ b);

            Subtract.Add <byte, byte>((a, b) => a - b);
            Subtract.Add <byte, sbyte>((a, b) => a - b);
            Subtract.Add <byte, char>((a, b) => a - b);
            Subtract.Add <byte, short>((a, b) => a - b);
            Subtract.Add <byte, ushort>((a, b) => a - b);
            Subtract.Add <byte, int>((a, b) => a - b);
            Subtract.Add <byte, uint>((a, b) => a - b);
            Subtract.Add <byte, long>((a, b) => a - b);
            Subtract.Add <byte, ulong>((a, b) => a - b);
            Subtract.Add <byte, decimal>((a, b) => a - b);
            Subtract.Add <byte, float>((a, b) => a - b);
            Subtract.Add <byte, double>((a, b) => a - b);

            Subtract.Add <sbyte, byte>((a, b) => a - b);
            Subtract.Add <sbyte, sbyte>((a, b) => a - b);
            Subtract.Add <sbyte, char>((a, b) => a - b);
            Subtract.Add <sbyte, short>((a, b) => a - b);
            Subtract.Add <sbyte, ushort>((a, b) => a - b);
            Subtract.Add <sbyte, int>((a, b) => a - b);
            Subtract.Add <sbyte, uint>((a, b) => a - b);
            Subtract.Add <sbyte, long>((a, b) => a - b);
            //Subtract.Add<sbyte, ulong>((a, b) => a - b);
            Subtract.Add <sbyte, decimal>((a, b) => a - b);
            Subtract.Add <sbyte, float>((a, b) => a - b);
            Subtract.Add <sbyte, double>((a, b) => a - b);

            Subtract.Add <char, byte>((a, b) => a - b);
            Subtract.Add <char, sbyte>((a, b) => a - b);
            Subtract.Add <char, char>((a, b) => a - b);
            Subtract.Add <char, short>((a, b) => a - b);
            Subtract.Add <char, ushort>((a, b) => a - b);
            Subtract.Add <char, int>((a, b) => a - b);
            Subtract.Add <char, uint>((a, b) => a - b);
            Subtract.Add <char, long>((a, b) => a - b);
            Subtract.Add <char, ulong>((a, b) => a - b);
            Subtract.Add <char, decimal>((a, b) => a - b);
            Subtract.Add <char, float>((a, b) => a - b);
            Subtract.Add <char, double>((a, b) => a - b);

            Subtract.Add <short, byte>((a, b) => a - b);
            Subtract.Add <short, sbyte>((a, b) => a - b);
            Subtract.Add <short, char>((a, b) => a - b);
            Subtract.Add <short, short>((a, b) => a - b);
            Subtract.Add <short, ushort>((a, b) => a - b);
            Subtract.Add <short, int>((a, b) => a - b);
            Subtract.Add <short, uint>((a, b) => a - b);
            Subtract.Add <short, long>((a, b) => a - b);
            //Subtract.Add<short, ulong>((a, b) => a - b);
            Subtract.Add <short, decimal>((a, b) => a - b);
            Subtract.Add <short, float>((a, b) => a - b);
            Subtract.Add <short, double>((a, b) => a - b);

            Subtract.Add <ushort, byte>((a, b) => a - b);
            Subtract.Add <ushort, sbyte>((a, b) => a - b);
            Subtract.Add <ushort, char>((a, b) => a - b);
            Subtract.Add <ushort, short>((a, b) => a - b);
            Subtract.Add <ushort, ushort>((a, b) => a - b);
            Subtract.Add <ushort, int>((a, b) => a - b);
            Subtract.Add <ushort, uint>((a, b) => a - b);
            Subtract.Add <ushort, long>((a, b) => a - b);
            Subtract.Add <ushort, ulong>((a, b) => a - b);
            Subtract.Add <ushort, decimal>((a, b) => a - b);
            Subtract.Add <ushort, float>((a, b) => a - b);
            Subtract.Add <ushort, double>((a, b) => a - b);

            Subtract.Add <int, byte>((a, b) => a - b);
            Subtract.Add <int, sbyte>((a, b) => a - b);
            Subtract.Add <int, char>((a, b) => a - b);
            Subtract.Add <int, short>((a, b) => a - b);
            Subtract.Add <int, ushort>((a, b) => a - b);
            Subtract.Add <int, int>((a, b) => a - b);
            Subtract.Add <int, uint>((a, b) => a - b);
            Subtract.Add <int, long>((a, b) => a - b);
            //Subtract.Add<int, ulong>((a, b) => a - b);
            Subtract.Add <int, decimal>((a, b) => a - b);
            Subtract.Add <int, float>((a, b) => a - b);
            Subtract.Add <int, double>((a, b) => a - b);

            Subtract.Add <uint, byte>((a, b) => a - b);
            Subtract.Add <uint, sbyte>((a, b) => a - b);
            Subtract.Add <uint, char>((a, b) => a - b);
            Subtract.Add <uint, short>((a, b) => a - b);
            Subtract.Add <uint, ushort>((a, b) => a - b);
            Subtract.Add <uint, int>((a, b) => a - b);
            Subtract.Add <uint, uint>((a, b) => a - b);
            Subtract.Add <uint, long>((a, b) => a - b);
            Subtract.Add <uint, ulong>((a, b) => a - b);
            Subtract.Add <uint, decimal>((a, b) => a - b);
            Subtract.Add <uint, float>((a, b) => a - b);
            Subtract.Add <uint, double>((a, b) => a - b);

            Subtract.Add <long, byte>((a, b) => a - b);
            Subtract.Add <long, sbyte>((a, b) => a - b);
            Subtract.Add <long, char>((a, b) => a - b);
            Subtract.Add <long, short>((a, b) => a - b);
            Subtract.Add <long, ushort>((a, b) => a - b);
            Subtract.Add <long, int>((a, b) => a - b);
            Subtract.Add <long, uint>((a, b) => a - b);
            Subtract.Add <long, long>((a, b) => a - b);
            //Subtract.Add<long, ulong>((a, b) => a - b);
            Subtract.Add <long, decimal>((a, b) => a - b);
            Subtract.Add <long, float>((a, b) => a - b);
            Subtract.Add <long, double>((a, b) => a - b);

            Subtract.Add <ulong, byte>((a, b) => a - b);
            //Subtract.Add<ulong, sbyte>((a, b) => a - b);
            Subtract.Add <ulong, char>((a, b) => a - b);
            //Subtract.Add<ulong, short>((a, b) => a - b);
            Subtract.Add <ulong, ushort>((a, b) => a - b);
            //Subtract.Add<ulong, int>((a, b) => a - b);
            Subtract.Add <ulong, uint>((a, b) => a - b);
            //Subtract.Add<ulong, long>((a, b) => a - b);
            Subtract.Add <ulong, ulong>((a, b) => a - b);
            Subtract.Add <ulong, decimal>((a, b) => a - b);
            Subtract.Add <ulong, float>((a, b) => a - b);
            Subtract.Add <ulong, double>((a, b) => a - b);

            Subtract.Add <decimal, byte>((a, b) => a - b);
            Subtract.Add <decimal, sbyte>((a, b) => a - b);
            Subtract.Add <decimal, char>((a, b) => a - b);
            Subtract.Add <decimal, short>((a, b) => a - b);
            Subtract.Add <decimal, ushort>((a, b) => a - b);
            Subtract.Add <decimal, int>((a, b) => a - b);
            Subtract.Add <decimal, uint>((a, b) => a - b);
            Subtract.Add <decimal, long>((a, b) => a - b);
            Subtract.Add <decimal, ulong>((a, b) => a - b);
            Subtract.Add <decimal, decimal>((a, b) => a - b);
            //Subtract.Add<decimal, float>((a, b) => a - b);
            //Subtract.Add<decimal, double>((a, b) => a - b);

            Subtract.Add <float, byte>((a, b) => a - b);
            Subtract.Add <float, sbyte>((a, b) => a - b);
            Subtract.Add <float, char>((a, b) => a - b);
            Subtract.Add <float, short>((a, b) => a - b);
            Subtract.Add <float, ushort>((a, b) => a - b);
            Subtract.Add <float, int>((a, b) => a - b);
            Subtract.Add <float, uint>((a, b) => a - b);
            Subtract.Add <float, long>((a, b) => a - b);
            Subtract.Add <float, ulong>((a, b) => a - b);
            //Subtract.Add<float, decimal>((a, b) => a - b);
            Subtract.Add <float, float>((a, b) => a - b);
            Subtract.Add <float, double>((a, b) => a - b);

            Subtract.Add <double, byte>((a, b) => a - b);
            Subtract.Add <double, sbyte>((a, b) => a - b);
            Subtract.Add <double, char>((a, b) => a - b);
            Subtract.Add <double, short>((a, b) => a - b);
            Subtract.Add <double, ushort>((a, b) => a - b);
            Subtract.Add <double, int>((a, b) => a - b);
            Subtract.Add <double, uint>((a, b) => a - b);
            Subtract.Add <double, long>((a, b) => a - b);
            Subtract.Add <double, ulong>((a, b) => a - b);
            //Subtract.Add<double, decimal>((a, b) => a - b);
            Subtract.Add <double, float>((a, b) => a - b);
            Subtract.Add <double, double>((a, b) => a - b);
        }
Пример #6
0
        private static void InitMin()
        {
            Min = GenericMethod.Get("Min", "Min");

            Min.Add <byte, byte>((a, b) => Math.Min(a, b));
            Min.Add <sbyte, sbyte>((a, b) => Math.Min(a, b));
            Min.Add <char, char>((a, b) => (char)Math.Min(a, b));
            Min.Add <short, short>((a, b) => Math.Min(a, b));
            Min.Add <ushort, ushort>((a, b) => Math.Min(a, b));
            Min.Add <int, int>((a, b) => Math.Min(a, b));
            Min.Add <uint, uint>((a, b) => Math.Min(a, b));
            Min.Add <long, long>((a, b) => Math.Min(a, b));
            Min.Add <ulong, ulong>((a, b) => Math.Min(a, b));
            Min.Add <decimal, decimal>((a, b) => Math.Min(a, b));
            Min.Add <float, float>((a, b) => Math.Min(a, b));
            Min.Add <double, double>((a, b) => Math.Min(a, b));
        }
Пример #7
0
        private static void InitNegative()
        {
            Negative = GenericMethod.Get("Negative", "Negative", "op_UnaryNegation");

            Negative.Add <bool>(a => !a);
            Negative.Add <byte>(a => (byte)-a);
            Negative.Add <sbyte>(a => (sbyte)-a);
            Negative.Add <char>(a => (char)-a);
            Negative.Add <short>(a => (short)-a);
            Negative.Add <ushort>(a => (ushort)-a);
            Negative.Add <int>(a => - a);
            Negative.Add <uint>(a => (uint)-a);
            Negative.Add <long>(a => - a);
            //Negative.Add<ulong>(a => (ulong)-a);
            Negative.Add <decimal>(a => - a);
            Negative.Add <float>(a => - a);
            Negative.Add <double>(a => - a);
        }
Пример #8
0
        private static void InitAbs()
        {
            Abs = GenericMethod.Get("Abs", "Abs");

            Abs.Add <byte>(a => (byte)Math.Abs(a));
            Abs.Add <sbyte>(a => Math.Abs(a));
            Abs.Add <char>(a => (char)Math.Abs(a));
            Abs.Add <short>(a => Math.Abs(a));
            Abs.Add <ushort>(a => (ushort)Math.Abs(a));
            Abs.Add <int>(a => Math.Abs(a));
            Abs.Add <uint>(a => (uint)Math.Abs(a));
            Abs.Add <long>(a => Math.Abs(a));
            //Abs.Add<ulong>(a => (ulong)Math.Abs(a));
            Abs.Add <decimal>(a => Math.Abs(a));
            Abs.Add <float>(a => Math.Abs(a));
            Abs.Add <double>(a => Math.Abs(a));
        }
Пример #9
0
        private static void InitSqrt()
        {
            Sqrt = GenericMethod.Get("Sqrt", "Sqrt");

            Sqrt.Add <byte>(a => (byte)Math.Sqrt(a));
            Sqrt.Add <sbyte>(a => (sbyte)Math.Sqrt(a));
            Sqrt.Add <char>(a => (char)Math.Sqrt(a));
            Sqrt.Add <short>(a => (short)Math.Sqrt(a));
            Sqrt.Add <ushort>(a => (ushort)Math.Sqrt(a));
            Sqrt.Add <int>(a => (int)Math.Sqrt(a));
            Sqrt.Add <uint>(a => (uint)Math.Sqrt(a));
            Sqrt.Add <long>(a => (long)Math.Sqrt(a));
            Sqrt.Add <ulong>(a => (ulong)Math.Sqrt(a));
            //Sqrt.Add<decimal>(a => (decimal)Math.Sqrt(a));
            Sqrt.Add <float>(a => (float)Math.Sqrt(a));
            Sqrt.Add <double>(a => Math.Sqrt(a));
        }