// INNER PRODUCT
        public IComplexMatrix Multiplication(IComplexMatrix matrixA, IComplexMatrix matrixB)
        {
            int maxRow = System.Math.Min(matrixA.getNumRows(), matrixB.getNumRows());
            int maxCol = System.Math.Min(matrixA.getNumCols(), matrixB.getNumCols());
            //if (matrixA.getNumRows() != matrixB.getNumCols()) { throw new ExceptionMatrixDimension(); };

            IComplexMatrix resultMatrix = ComplexMatrixFactory.GenerateComplexMatrix(maxRow, maxCol, false);
            IComplexMatrix vectorA, vectorB;
            IComplexNumber coefficient;
            for (int i = 0; i < maxRow; i++)
            {
                for (int j = 0; j < maxCol; j++)
                {
                    vectorA = matrixA.extractRowAsVector(i);
                    vectorB = matrixB.extractColAsVector(j);
                    coefficient = ComplexMatrixFactory.Operations.Dot(vectorA, vectorB);
                    resultMatrix.setElement(coefficient, i, j);
                }
            }

            return resultMatrix;
        }