public static DoubleMatrix operator *(
	DoubleMatrix left,
	DoubleMatrix right
)Public Shared Operator * ( 
	left As DoubleMatrix,
	right As DoubleMatrix
) As DoubleMatrixpublic:
static DoubleMatrix^ operator *(
	DoubleMatrix^ left, 
	DoubleMatrix^ right
)static let inline (*)
        left : DoubleMatrix * 
        right : DoubleMatrix  : DoubleMatrix
            Let  and  
            
 be the left
            number of rows and columns, respectively, and consider its generic entry
            
            Analogously, Let  and  
            
 be the right
            number of rows and columns, respectively, and let its generic entry given by
            
The method operates as follows.
In the following example, some matrices are multiplied.
using System;
namespace Novacta.Analytics.CodeExamples
{
    public class MultiplicationExample0  
    {
        public void Main()
        {
            // Create the left operand.
            var data = new double[4] {
                0,  2,  
                1,  3
            };
            var left = DoubleMatrix.Dense(2, 2, data, StorageOrder.RowMajor);
            Console.WriteLine("left =");
            Console.WriteLine(left);
            // Create the right operand.
            data = [
                0,  20,  40,
               10,  30,  50
            ];
            var right = DoubleMatrix.Dense(2, 3, data, StorageOrder.RowMajor);
            Console.WriteLine("right =");
            Console.WriteLine(right);
            // Multiply left by right.
            var result = left * right;
            Console.WriteLine();
            Console.WriteLine("left * right =");
            Console.WriteLine(result);
            // In .NET languages that do not support overloaded operators,
            // you can use the alternative methods named Multiply.
            result = DoubleMatrix.Multiply(left, right);
            Console.WriteLine();
            Console.WriteLine("DoubleMatrix.Multiply(left, right) returns");
            Console.WriteLine();
            Console.WriteLine(result);
            // Both operators and alternative methods are overloaded to 
            // support read-only matrix arguments.
            // Compute the product using a read-only wrapper of left.
            ReadOnlyDoubleMatrix readOnlyLeft = left.AsReadOnly();
            result = readOnlyLeft * right;
            Console.WriteLine();
            Console.WriteLine("readOnlyLeft * right =");
            Console.WriteLine(result);
        }
    }
}
// Executing method Main() produces the following output:
// 
// left =
// 0                2                
// 1                3                
// 
// 
// right =
// 0                20               40               
// 10               30               50               
// 
// 
// 
// left * right =
// 20               60               100              
// 30               110              190              
// 
// 
// 
// DoubleMatrix.Multiply(left, right) returns
// 
// 20               60               100              
// 30               110              190              
// 
// 
// 
// readOnlyLeft * right =
// 20               60               100              
// 30               110              190              
// 
//| ArgumentNullException | left is null. -or- right is null.  | 
| ArgumentException | Both left and right are not scalar matrices, and the number of columns of left is not equal to the number of rows of right. |