Exemple #1
0
        public UBigIntHandle Multiply(MultiplicationMethod method, UBigIntHandle u, UBigIntHandle v)
        {
            IntPtr w;

            HandleResultCode((PMC_STATUS_CODE)PMCCS_Multiply_I_UX_UX((Int32)method, u.NativeHandle, v.NativeHandle, out w));
            return(new UBigIntHandle(w));
        }
        static void Analize()
        {
            // Test multiplication with sizes from 100 to 1000 with step 100

            Array methods = Enum.GetValues(typeof(MultiplicationMethod));

            //for (int i = methods.Length - 1; i >= 0; i--)
            for (int i = 0; i < methods.Length; i++)
            {
                MultiplicationMethod method = (MultiplicationMethod)methods.GetValue(i);

                Console.WriteLine("\nMethod: " + method);

                MatrixMultiplier multiplier = MatrixMultiplier.GetMatrixMultiplier(method);
                //MatrixMultiplier multiplier = new WinogradMultiplier();

                for (int size = 100; size <= 400; size += 100)
                {
                    Matrix left  = new Matrix(size, size);
                    Matrix right = new Matrix(size, size);
                    Matrix.GenerateRandom(left, 0, size);
                    Matrix.GenerateRandom(right, 0, size);

                    long ticksAvg = TestNTimes(multiplier, left, right, 1);

                    Console.WriteLine("Size: " + size + ". Ticks: " + ticksAvg);
                }
            }
        }
Exemple #3
0
        public static MatrixMultiplier GetMatrixMultiplier(MultiplicationMethod method)
        {
            MatrixMultiplier multiplier = null;

            switch (method)
            {
            case MultiplicationMethod.Simple:
                multiplier = new SimpleMultiplier();
                break;

            case MultiplicationMethod.Winograd:
                multiplier = new WinogradMultiplier();
                break;
            }

            return(multiplier);
        }
 public UBigInt Multiply(MultiplicationMethod method, UBigInt v)
 {
     return(new UBigInt(EngineObject.Multiply(method, Handle, v.Handle)));
 }