@ -395,10 +395,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// Gets the matrix's data.
/// </summary>
/// <value>The matrix's data.</value>
public Complex [ ] Values
{
get { return _ values ; }
}
public Complex [ ] Values = > _ values ;
/// <summary>Calculates the induced L1 norm of this matrix.</summary>
/// <returns>The maximum absolute column sum of the matrix.</returns>
@ -427,8 +424,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// <param name="result">The result of the negation.</param>
protected override void DoNegate ( Matrix < Complex > result )
{
var denseResult = result as DenseMatrix ;
if ( denseResult ! = null )
if ( result is DenseMatrix denseResult )
{
LinearAlgebraControl . Provider . ScaleArray ( - 1 , _ values , denseResult . _ values ) ;
return ;
@ -443,8 +439,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// <param name="result">The result of the conjugation.</param>
protected override void DoConjugate ( Matrix < Complex > result )
{
var denseResult = result as DenseMatrix ;
if ( denseResult ! = null )
if ( result is DenseMatrix denseResult )
{
LinearAlgebraControl . Provider . ConjugateArray ( _ values , denseResult . _ values ) ;
return ;
@ -487,17 +482,14 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
protected override void DoAdd ( Matrix < Complex > other , Matrix < Complex > result )
{
// dense + dense = dense
var denseOther = other . Storage as DenseColumnMajorMatrixStorage < Complex > ;
var denseResult = result . Storage as DenseColumnMajorMatrixStorage < Complex > ;
if ( denseOther ! = null & & denseResult ! = null )
if ( other . Storage is DenseColumnMajorMatrixStorage < Complex > denseOther & & result . Storage is DenseColumnMajorMatrixStorage < Complex > denseResult )
{
LinearAlgebraControl . Provider . AddArrays ( _ values , denseOther . Data , denseResult . Data ) ;
return ;
}
// dense + diagonal = any
var diagonalOther = other . Storage as DiagonalMatrixStorage < Complex > ;
if ( diagonalOther ! = null )
if ( other . Storage is DiagonalMatrixStorage < Complex > diagonalOther )
{
Storage . CopyToUnchecked ( result . Storage , ExistingData . Clear ) ;
var diagonal = diagonalOther . Data ;
@ -543,17 +535,14 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
protected override void DoSubtract ( Matrix < Complex > other , Matrix < Complex > result )
{
// dense + dense = dense
var denseOther = other . Storage as DenseColumnMajorMatrixStorage < Complex > ;
var denseResult = result . Storage as DenseColumnMajorMatrixStorage < Complex > ;
if ( denseOther ! = null & & denseResult ! = null )
if ( other . Storage is DenseColumnMajorMatrixStorage < Complex > denseOther & & result . Storage is DenseColumnMajorMatrixStorage < Complex > denseResult )
{
LinearAlgebraControl . Provider . SubtractArrays ( _ values , denseOther . Data , denseResult . Data ) ;
return ;
}
// dense + diagonal = matrix
var diagonalOther = other . Storage as DiagonalMatrixStorage < Complex > ;
if ( diagonalOther ! = null )
if ( other . Storage is DiagonalMatrixStorage < Complex > diagonalOther )
{
CopyTo ( result ) ;
var diagonal = diagonalOther . Data ;
@ -619,9 +608,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// <param name="result">The result of the multiplication.</param>
protected override void DoMultiply ( Matrix < Complex > other , Matrix < Complex > result )
{
var denseOther = other as DenseMatrix ;
var denseResult = result as DenseMatrix ;
if ( denseOther ! = null & & denseResult ! = null )
if ( other is DenseMatrix denseOther & & result is DenseMatrix denseResult )
{
LinearAlgebraControl . Provider . MatrixMultiply (
_ values ,
@ -634,8 +621,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
return ;
}
var diagonalOther = other . Storage as DiagonalMatrixStorage < Complex > ;
if ( diagonalOther ! = null )
if ( other . Storage is DiagonalMatrixStorage < Complex > diagonalOther )
{
var diagonal = diagonalOther . Data ;
var d = Math . Min ( ColumnCount , other . ColumnCount ) ;
@ -665,9 +651,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// <param name="result">The result of the multiplication.</param>
protected override void DoTransposeAndMultiply ( Matrix < Complex > other , Matrix < Complex > result )
{
var denseOther = other as DenseMatrix ;
var denseResult = result as DenseMatrix ;
if ( denseOther ! = null & & denseResult ! = null )
if ( other is DenseMatrix denseOther & & result is DenseMatrix denseResult )
{
LinearAlgebraControl . Provider . MatrixMultiplyWithUpdate (
Providers . LinearAlgebra . Transpose . DontTranspose ,
@ -684,8 +668,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
return ;
}
var diagonalOther = other . Storage as DiagonalMatrixStorage < Complex > ;
if ( diagonalOther ! = null )
if ( other . Storage is DiagonalMatrixStorage < Complex > diagonalOther )
{
var diagonal = diagonalOther . Data ;
var d = Math . Min ( ColumnCount , other . RowCount ) ;
@ -715,9 +698,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// <param name="result">The result of the multiplication.</param>
protected override void DoConjugateTransposeAndMultiply ( Matrix < Complex > other , Matrix < Complex > result )
{
var denseOther = other as DenseMatrix ;
var denseResult = result as DenseMatrix ;
if ( denseOther ! = null & & denseResult ! = null )
if ( other is DenseMatrix denseOther & & result is DenseMatrix denseResult )
{
LinearAlgebraControl . Provider . MatrixMultiplyWithUpdate (
Providers . LinearAlgebra . Transpose . DontTranspose ,
@ -734,8 +715,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
return ;
}
var diagonalOther = other . Storage as DiagonalMatrixStorage < Complex > ;
if ( diagonalOther ! = null )
if ( other . Storage is DiagonalMatrixStorage < Complex > diagonalOther )
{
var diagonal = diagonalOther . Data ;
var conjugateDiagonal = new Complex [ diagonal . Length ] ;
@ -771,9 +751,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// <param name="result">The result of the multiplication.</param>
protected override void DoTransposeThisAndMultiply ( Vector < Complex > rightSide , Vector < Complex > result )
{
var denseRight = rightSide as DenseVector ;
var denseResult = result as DenseVector ;
if ( denseRight ! = null & & denseResult ! = null )
if ( rightSide is DenseVector denseRight & & result is DenseVector denseResult )
{
LinearAlgebraControl . Provider . MatrixMultiplyWithUpdate (
Providers . LinearAlgebra . Transpose . Transpose ,
@ -800,9 +778,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// <param name="result">The result of the multiplication.</param>
protected override void DoConjugateTransposeThisAndMultiply ( Vector < Complex > rightSide , Vector < Complex > result )
{
var denseRight = rightSide as DenseVector ;
var denseResult = result as DenseVector ;
if ( denseRight ! = null & & denseResult ! = null )
if ( rightSide is DenseVector denseRight & & result is DenseVector denseResult )
{
LinearAlgebraControl . Provider . MatrixMultiplyWithUpdate (
Providers . LinearAlgebra . Transpose . ConjugateTranspose ,
@ -829,9 +805,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// <param name="result">The result of the multiplication.</param>
protected override void DoTransposeThisAndMultiply ( Matrix < Complex > other , Matrix < Complex > result )
{
var denseOther = other as DenseMatrix ;
var denseResult = result as DenseMatrix ;
if ( denseOther ! = null & & denseResult ! = null )
if ( other is DenseMatrix denseOther & & result is DenseMatrix denseResult )
{
LinearAlgebraControl . Provider . MatrixMultiplyWithUpdate (
Providers . LinearAlgebra . Transpose . Transpose ,
@ -848,8 +822,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
return ;
}
var diagonalOther = other . Storage as DiagonalMatrixStorage < Complex > ;
if ( diagonalOther ! = null )
if ( other . Storage is DiagonalMatrixStorage < Complex > diagonalOther )
{
var diagonal = diagonalOther . Data ;
var d = Math . Min ( RowCount , other . ColumnCount ) ;
@ -880,9 +853,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// <param name="result">The result of the multiplication.</param>
protected override void DoConjugateTransposeThisAndMultiply ( Matrix < Complex > other , Matrix < Complex > result )
{
var denseOther = other as DenseMatrix ;
var denseResult = result as DenseMatrix ;
if ( denseOther ! = null & & denseResult ! = null )
if ( other is DenseMatrix denseOther & & result is DenseMatrix denseResult )
{
LinearAlgebraControl . Provider . MatrixMultiplyWithUpdate (
Providers . LinearAlgebra . Transpose . ConjugateTranspose ,
@ -899,8 +870,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
return ;
}
var diagonalOther = other . Storage as DiagonalMatrixStorage < Complex > ;
if ( diagonalOther ! = null )
if ( other . Storage is DiagonalMatrixStorage < Complex > diagonalOther )
{
var diagonal = diagonalOther . Data ;
var d = Math . Min ( RowCount , other . ColumnCount ) ;