From d65354f4b87362e320503a56eeaceb2d212ae2a6 Mon Sep 17 00:00:00 2001 From: Christoph Ruegg Date: Mon, 4 Feb 2013 16:19:18 +0100 Subject: [PATCH] Native Pull: Updated provider and bug fixes mathnet-numerics-native a6e5c948049bda46cb3b5625fa41accebaa4bdb3: 1. Updated the native provider to MKL V11 update 2, which fixes the lange bug. 2. Re-enabled native matrix norms. 3. Fixed complex Frobenius norm bug in managed code (we weren't taking the conjugative transpose). 4. Fixed the return type on the double matix norm in the managed side of the native provider. --- src/NativeWrappers/Common/resource.rc | 10 +- .../ATLASWrapperTests.csproj | 118 ---- .../Double/AtlasLinearAlgebraProviderTests.cs | 14 - .../Properties/AssemblyInfo.cs | 36 -- .../Windows/MKL/MKLWrapper.vcxproj | 31 +- .../Windows/MKLWrapperTests/App.config | 15 - .../MKLWrapperTests/MKLWrapperTests.csproj | 565 ------------------ src/NativeWrappers/Windows/NativeWrappers.sln | 114 +--- .../ManagedLinearAlgebraProvider.Complex.cs | 2 +- .../ManagedLinearAlgebraProvider.Complex32.cs | 2 +- .../Mkl/MklLinearAlgebraProvider.Common.cs | 5 +- .../LinearAlgebra/Mkl/SafeNativeMethods.cs | 4 +- src/Numerics/LinearAlgebra/Complex/Matrix.cs | 2 +- .../LinearAlgebra/Complex/SparseMatrix.cs | 2 +- .../LinearAlgebra/Complex32/Matrix.cs | 2 +- .../LinearAlgebra/Complex32/SparseMatrix.cs | 2 +- .../LinearAlgebraTests/Complex/MatrixTests.cs | 6 +- .../Complex32/MatrixTests.cs | 6 +- .../Double/IO/MatlabReaderTests.cs | 4 +- 19 files changed, 38 insertions(+), 902 deletions(-) delete mode 100644 src/NativeWrappers/Windows/ATLASWrapperTests/ATLASWrapperTests.csproj delete mode 100644 src/NativeWrappers/Windows/ATLASWrapperTests/LinearAlgebra/Double/AtlasLinearAlgebraProviderTests.cs delete mode 100644 src/NativeWrappers/Windows/ATLASWrapperTests/Properties/AssemblyInfo.cs delete mode 100644 src/NativeWrappers/Windows/MKLWrapperTests/App.config delete mode 100644 src/NativeWrappers/Windows/MKLWrapperTests/MKLWrapperTests.csproj diff --git a/src/NativeWrappers/Common/resource.rc b/src/NativeWrappers/Common/resource.rc index 9b549a6c..41b5a5ff 100644 --- a/src/NativeWrappers/Common/resource.rc +++ b/src/NativeWrappers/Common/resource.rc @@ -51,8 +51,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,2,0,0 - PRODUCTVERSION 1,2,0,0 + FILEVERSION 1,2,1,0 + PRODUCTVERSION 1,2,1,0 FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -70,12 +70,12 @@ BEGIN VALUE "Comments", "http://numerics.mathdotnet.com/" VALUE "CompanyName", "Math.NET" VALUE "FileDescription", "MathNET Numerics Native Wrapper" - VALUE "FileVersion", "1.2.0.0" + VALUE "FileVersion", "1.2.1.0" VALUE "InternalName", "Math.NET" VALUE "LegalCopyright", "Copyright (C) Math.NET 2009-2013" - VALUE "OriginalFilename", "MathNET.Numerics" + VALUE "OriginalFilename", "MathNet.Numerics" VALUE "ProductName", "Math.NET Numerics" - VALUE "ProductVersion", "1.2.0.0" + VALUE "ProductVersion", "1.2.1.0" END END BLOCK "VarFileInfo" diff --git a/src/NativeWrappers/Windows/ATLASWrapperTests/ATLASWrapperTests.csproj b/src/NativeWrappers/Windows/ATLASWrapperTests/ATLASWrapperTests.csproj deleted file mode 100644 index f3118640..00000000 --- a/src/NativeWrappers/Windows/ATLASWrapperTests/ATLASWrapperTests.csproj +++ /dev/null @@ -1,118 +0,0 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {0EFC01B9-1F75-4BFD-ADB6-3FF18B2B9B5E} - Library - Properties - MathNet.Numerics.ATLASWrapperTests - MathNet.Numerics.ATLASWrapperTests - v3.5 - 512 - - - 3.5 - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - AllRules.ruleset - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - x86 - AllRules.ruleset - - - - False - ..\..\UnitTests\bin\Debug\Gallio.dll - - - False - ..\..\UnitTests\bin\Debug\MathNet.Numerics.dll - - - False - ..\..\UnitTests\bin\Debug\MathNet.Numerics.UnitTests.dll - - - False - ..\..\UnitTests\bin\Debug\MbUnit.dll - - - False - ..\..\UnitTests\bin\Debug\MbUnit35.dll - - - - 3.5 - - - 3.5 - - - 3.5 - - - - - - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Windows Installer 3.1 - true - - - - - \ No newline at end of file diff --git a/src/NativeWrappers/Windows/ATLASWrapperTests/LinearAlgebra/Double/AtlasLinearAlgebraProviderTests.cs b/src/NativeWrappers/Windows/ATLASWrapperTests/LinearAlgebra/Double/AtlasLinearAlgebraProviderTests.cs deleted file mode 100644 index d5aab186..00000000 --- a/src/NativeWrappers/Windows/ATLASWrapperTests/LinearAlgebra/Double/AtlasLinearAlgebraProviderTests.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace MathNet.Numerics.ATLASWrapperTests.LinearAlgebra.Double -{ - using MbUnit.Framework; - using UnitTests.LinearAlgebraTests.Double; - - public class AtlasLinearAlgebraProviderTests : LinearAlgebraProviderTests - { - [FixtureSetUp] - public void SetUpProvider() - { - Provider = new Algorithms.LinearAlgebra.Atlas.AtlasLinearAlgebraProvider(); - } - } -} diff --git a/src/NativeWrappers/Windows/ATLASWrapperTests/Properties/AssemblyInfo.cs b/src/NativeWrappers/Windows/ATLASWrapperTests/Properties/AssemblyInfo.cs deleted file mode 100644 index 330868bb..00000000 --- a/src/NativeWrappers/Windows/ATLASWrapperTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("ATLASWrapperTests")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Microsoft")] -[assembly: AssemblyProduct("ATLASWrapperTests")] -[assembly: AssemblyCopyright("Copyright © Microsoft 2009")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("c3d8a88c-97b6-4b25-8d63-e30ffeaf503c")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/NativeWrappers/Windows/MKL/MKLWrapper.vcxproj b/src/NativeWrappers/Windows/MKL/MKLWrapper.vcxproj index ae0a68a4..11b8e4d2 100644 --- a/src/NativeWrappers/Windows/MKL/MKLWrapper.vcxproj +++ b/src/NativeWrappers/Windows/MKL/MKLWrapper.vcxproj @@ -95,32 +95,32 @@ <_ProjectFileVersion>11.0.50727.1 - $(SolutionDir)..\..\..\lib\Windows\$(Platform)\ + $(SolutionDir)..\..\..\..\MKL\Windows\x86\ $(Platform)\$(Configuration)\ MathNet.Numerics.MKL - $(SolutionDir)..\..\..\lib\Windows\$(Platform)\ + $(SolutionDir)..\..\..\..\MKL\Windows\x86\ $(Platform)\$(Configuration)\ MathNet.Numerics.MKL - $(SolutionDir)..\..\..\lib\Windows\$(Platform)\ + $(SolutionDir)..\..\..\..\MKL\Windows\x64\ $(Platform)\$(Configuration)\ MathNet.Numerics.MKL - $(SolutionDir)..\..\..\lib\Windows\$(Platform)\ + $(SolutionDir)..\..\..\..\MKL\Windows\x64\ $(Platform)\$(Configuration)\ MathNet.Numerics.MKL - $(SolutionDir)..\..\..\lib\Windows\$(Platform)\ + $(SolutionDir)..\..\..\..\MKL\Windows\x86\ $(Platform)\$(Configuration)\ MathNet.Numerics.MKL - $(SolutionDir)..\..\..\lib\Windows\$(Platform)\ + $(SolutionDir)..\..\..\..\MKL\Windows\x64\ $(Platform)\$(Configuration)\ MathNet.Numerics.MKL @@ -145,8 +145,7 @@ $(OutDir)$(TargetName).lib - - + copy "$(CompilerPathForVC)\libiomp5md.dll" $(OutputPath) @@ -172,8 +171,7 @@ $(OutDir)$(TargetName).lib - - + copy "$(CompilerPathForVC)\libiomp5md.dll" $(OutputPath) @@ -200,8 +198,7 @@ $(OutDir)$(TargetName).lib - - + copy "$(CompilerPathForVC)\libiomp5md.dll" $(OutputPath) @@ -230,8 +227,7 @@ $(OutDir)$(TargetName).lib - - + copy "$(CompilerPathForVC)\libiomp5md.dll" $(OutputPath) @@ -256,9 +252,9 @@ MachineX86 $(OutDir)$(TargetName).lib + - - + copy "$(CompilerPathForVC)\libiomp5md.dll" $(OutputPath) @@ -287,8 +283,7 @@ $(OutDir)$(TargetName).lib - - + copy "$(CompilerPathForVC)\libiomp5md.dll" $(OutputPath) diff --git a/src/NativeWrappers/Windows/MKLWrapperTests/App.config b/src/NativeWrappers/Windows/MKLWrapperTests/App.config deleted file mode 100644 index 01b95b9d..00000000 --- a/src/NativeWrappers/Windows/MKLWrapperTests/App.config +++ /dev/null @@ -1,15 +0,0 @@ - - - - -
- - - - - - MKL - - - - \ No newline at end of file diff --git a/src/NativeWrappers/Windows/MKLWrapperTests/MKLWrapperTests.csproj b/src/NativeWrappers/Windows/MKLWrapperTests/MKLWrapperTests.csproj deleted file mode 100644 index 43f854c9..00000000 --- a/src/NativeWrappers/Windows/MKLWrapperTests/MKLWrapperTests.csproj +++ /dev/null @@ -1,565 +0,0 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3} - Library - Properties - MathNet.Numerics.MKLWrapperTests - MathNet.Numerics.MKLWrapperTests - v4.0 - 512 - - - 3.5 - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - AnyCPU - AllRules.ruleset - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - x86 - AllRules.ruleset - - - - False - ..\..\..\..\packages\NUnit.2.6.2\lib\nunit.framework.dll - - - - 3.5 - - - - 3.5 - - - 3.5 - - - - - - - AssertHelpers.cs - - - LinearAlgebraProviderTests\Complex32\LinearAlgebraProviderTests.cs - - - LinearAlgebraProviderTests\Complex\LinearAlgebraProviderTests.cs - - - LinearAlgebraProviderTests\Double\LinearAlgebraProviderTests.cs - - - LinearAlgebraProviderTests\Single\LinearAlgebraProviderTests.cs - - - LinearAlgebraTests\Complex32\DenseMatrixTests.cs - - - LinearAlgebraTests\Complex32\DenseVectorArithmeticTheory.cs - - - LinearAlgebraTests\Complex32\DenseVectorTest.TextHandling.cs - - - LinearAlgebraTests\Complex32\DenseVectorTests.cs - - - LinearAlgebraTests\Complex32\DiagonalMatrixTests.cs - - - LinearAlgebraTests\Complex32\Factorization\CholeskyTests.cs - - - LinearAlgebraTests\Complex32\Factorization\EvdTests.cs - - - LinearAlgebraTests\Complex32\Factorization\GramSchmidtTests.cs - - - LinearAlgebraTests\Complex32\Factorization\LUTests.cs - - - LinearAlgebraTests\Complex32\Factorization\QRTests.cs - - - LinearAlgebraTests\Complex32\Factorization\SvdTests.cs - - - LinearAlgebraTests\Complex32\Factorization\UserCholeskyTests.cs - - - LinearAlgebraTests\Complex32\Factorization\UserEvdTests.cs - - - LinearAlgebraTests\Complex32\Factorization\UserGramSchmidtTests.cs - - - LinearAlgebraTests\Complex32\Factorization\UserLUTests.cs - - - LinearAlgebraTests\Complex32\Factorization\UserQRTests.cs - - - LinearAlgebraTests\Complex32\Factorization\UserSvdTests.cs - - - LinearAlgebraTests\Complex32\MatrixLoader.cs - - - LinearAlgebraTests\Complex32\MatrixStructureTheory.cs - - - LinearAlgebraTests\Complex32\MatrixTests.Arithmetic.cs - - - LinearAlgebraTests\Complex32\MatrixTests.cs - - - LinearAlgebraTests\Complex32\SparseMatrixTests.cs - - - LinearAlgebraTests\Complex32\SparseVectorArithmeticTheory.cs - - - LinearAlgebraTests\Complex32\SparseVectorTest.cs - - - LinearAlgebraTests\Complex32\SparseVectorTest.TextHandling.cs - - - LinearAlgebraTests\Complex32\UserDefinedMatrix.cs - - - LinearAlgebraTests\Complex32\UserDefinedMatrixTests.cs - - - LinearAlgebraTests\Complex32\UserDefinedVector.cs - - - LinearAlgebraTests\Complex32\UserDefinedVectorTests.cs - - - LinearAlgebraTests\Complex32\VectorArithmeticTheory.cs - - - LinearAlgebraTests\Complex32\VectorTests.Arithmetic.cs - - - LinearAlgebraTests\Complex32\VectorTests.cs - - - LinearAlgebraTests\Complex32\VectorTests.Norm.cs - - - LinearAlgebraTests\Complex\DenseMatrixTests.cs - - - LinearAlgebraTests\Complex\DenseVectorArithmeticTheory.cs - - - LinearAlgebraTests\Complex\DenseVectorTest.TextHandling.cs - - - LinearAlgebraTests\Complex\DenseVectorTests.cs - - - LinearAlgebraTests\Complex\DiagonalMatrixTests.cs - - - LinearAlgebraTests\Complex\Factorization\CholeskyTests.cs - - - LinearAlgebraTests\Complex\Factorization\EvdTests.cs - - - LinearAlgebraTests\Complex\Factorization\GramSchmidtTests.cs - - - LinearAlgebraTests\Complex\Factorization\LUTests.cs - - - LinearAlgebraTests\Complex\Factorization\QRTests.cs - - - LinearAlgebraTests\Complex\Factorization\SvdTests.cs - - - LinearAlgebraTests\Complex\Factorization\UserCholeskyTests.cs - - - LinearAlgebraTests\Complex\Factorization\UserEvdTests.cs - - - LinearAlgebraTests\Complex\Factorization\UserGramSchmidtTests.cs - - - LinearAlgebraTests\Complex\Factorization\UserLUTests.cs - - - LinearAlgebraTests\Complex\Factorization\UserQRTests.cs - - - LinearAlgebraTests\Complex\Factorization\UserSvdTests.cs - - - LinearAlgebraTests\Complex\MatrixLoader.cs - - - LinearAlgebraTests\Complex\MatrixStructureTheory.cs - - - LinearAlgebraTests\Complex\MatrixTests.Arithmetic.cs - - - LinearAlgebraTests\Complex\MatrixTests.cs - - - LinearAlgebraTests\Complex\SparseMatrixTests.cs - - - LinearAlgebraTests\Complex\SparseVectorArithmeticTheory.cs - - - LinearAlgebraTests\Complex\SparseVectorTest.cs - - - LinearAlgebraTests\Complex\SparseVectorTest.TextHandling.cs - - - LinearAlgebraTests\Complex\UserDefinedMatrix.cs - - - LinearAlgebraTests\Complex\UserDefinedMatrixTests.cs - - - LinearAlgebraTests\Complex\UserDefinedVector.cs - - - LinearAlgebraTests\Complex\UserDefinedVectorTests.cs - - - LinearAlgebraTests\Complex\VectorArithmeticTheory.cs - - - LinearAlgebraTests\Complex\VectorTests.Arithmetic.cs - - - LinearAlgebraTests\Complex\VectorTests.cs - - - LinearAlgebraTests\Complex\VectorTests.Norm.cs - - - LinearAlgebraTests\Double\DenseMatrixTests.cs - - - LinearAlgebraTests\Double\DenseVectorArithmeticTheory.cs - - - LinearAlgebraTests\Double\DenseVectorTest.TextHandling.cs - - - LinearAlgebraTests\Double\DenseVectorTests.cs - - - LinearAlgebraTests\Double\DiagonalMatrixTests.cs - - - LinearAlgebraTests\Double\Factorization\CholeskyTests.cs - - - LinearAlgebraTests\Double\Factorization\EvdTests.cs - - - LinearAlgebraTests\Double\Factorization\GramSchmidtTests.cs - - - LinearAlgebraTests\Double\Factorization\LUTests.cs - - - LinearAlgebraTests\Double\Factorization\QRTests.cs - - - LinearAlgebraTests\Double\Factorization\SvdTests.cs - - - LinearAlgebraTests\Double\Factorization\UserCholeskyTests.cs - - - LinearAlgebraTests\Double\Factorization\UserEvdTests.cs - - - LinearAlgebraTests\Double\Factorization\UserGramSchmidtTests.cs - - - LinearAlgebraTests\Double\Factorization\UserLUTests.cs - - - LinearAlgebraTests\Double\Factorization\UserQRTests.cs - - - LinearAlgebraTests\Double\Factorization\UserSvdTests.cs - - - LinearAlgebraTests\Double\MatrixLoader.cs - - - LinearAlgebraTests\Double\MatrixStructureTheory.cs - - - LinearAlgebraTests\Double\MatrixTests.Arithmetic.cs - - - LinearAlgebraTests\Double\MatrixTests.cs - - - LinearAlgebraTests\Double\SparseMatrixTests.cs - - - LinearAlgebraTests\Double\SparseVectorArithmeticTheory.cs - - - LinearAlgebraTests\Double\SparseVectorTest.cs - - - LinearAlgebraTests\Double\SparseVectorTest.TextHandling.cs - - - LinearAlgebraTests\Double\UserDefinedMatrix.cs - - - LinearAlgebraTests\Double\UserDefinedMatrixTests.cs - - - LinearAlgebraTests\Double\UserDefinedVector.cs - - - LinearAlgebraTests\Double\UserDefinedVectorTests.cs - - - LinearAlgebraTests\Double\VectorArithmeticTheory.cs - - - LinearAlgebraTests\Double\VectorTests.Arithmetic.cs - - - LinearAlgebraTests\Double\VectorTests.cs - - - LinearAlgebraTests\Double\VectorTests.Norm.cs - - - LinearAlgebraTests\MatrixStructureTheory.Access.cs - - - LinearAlgebraTests\MatrixStructureTheory.cs - - - LinearAlgebraTests\MatrixStructureTheory.Reform.cs - - - LinearAlgebraTests\Single\DenseMatrixTests.cs - - - LinearAlgebraTests\Single\DenseVectorArithmeticTheory.cs - - - LinearAlgebraTests\Single\DenseVectorTest.TextHandling.cs - - - LinearAlgebraTests\Single\DenseVectorTests.cs - - - LinearAlgebraTests\Single\DiagonalMatrixTests.cs - - - LinearAlgebraTests\Single\Factorization\CholeskyTests.cs - - - LinearAlgebraTests\Single\Factorization\EvdTests.cs - - - LinearAlgebraTests\Single\Factorization\GramSchmidtTests.cs - - - LinearAlgebraTests\Single\Factorization\LUTests.cs - - - LinearAlgebraTests\Single\Factorization\QRTests.cs - - - LinearAlgebraTests\Single\Factorization\SvdTests.cs - - - LinearAlgebraTests\Single\Factorization\UserCholeskyTests.cs - - - LinearAlgebraTests\Single\Factorization\UserEvdTests.cs - - - LinearAlgebraTests\Single\Factorization\UserGramSchmidtTests.cs - - - LinearAlgebraTests\Single\Factorization\UserLUTests.cs - - - LinearAlgebraTests\Single\Factorization\UserQRTests.cs - - - LinearAlgebraTests\Single\Factorization\UserSvdTests.cs - - - LinearAlgebraTests\Single\MatrixLoader.cs - - - LinearAlgebraTests\Single\MatrixStructureTheory.cs - - - LinearAlgebraTests\Single\MatrixTests.Arithmetic.cs - - - LinearAlgebraTests\Single\MatrixTests.cs - - - LinearAlgebraTests\Single\SparseMatrixTests.cs - - - LinearAlgebraTests\Single\SparseVectorArithmeticTheory.cs - - - LinearAlgebraTests\Single\SparseVectorTest.cs - - - LinearAlgebraTests\Single\SparseVectorTest.TextHandling.cs - - - LinearAlgebraTests\Single\UserDefinedMatrix.cs - - - LinearAlgebraTests\Single\UserDefinedMatrixTests.cs - - - LinearAlgebraTests\Single\UserDefinedVector.cs - - - LinearAlgebraTests\Single\UserDefinedVectorTests.cs - - - LinearAlgebraTests\Single\VectorArithmeticTheory.cs - - - LinearAlgebraTests\Single\VectorTests.Arithmetic.cs - - - LinearAlgebraTests\Single\VectorTests.cs - - - LinearAlgebraTests\Single\VectorTests.Norm.cs - - - LinearAlgebraTests\VectorArithmeticTheory.cs - - - MatrixHelpers.cs - - - Properties\AssemblyInfo.cs - - - Properties\Settings.Designer.cs - - - UseLinearAlgebraProvider.cs - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Windows Installer 3.1 - true - - - - - data\Matlab\sparse-small.mat - Always - - - Properties\Settings.settings - - - - - - {eb1a5d32-f264-4bce-beb7-0b97085075be} - Numerics.IO - - - {b7cae5f4-a23f-4438-b5be-41226618b695} - Numerics - - - - - MathNET.Numerics.MKL.dll - Always - - - - - - \ No newline at end of file diff --git a/src/NativeWrappers/Windows/NativeWrappers.sln b/src/NativeWrappers/Windows/NativeWrappers.sln index 26b76fcf..a19c473e 100644 --- a/src/NativeWrappers/Windows/NativeWrappers.sln +++ b/src/NativeWrappers/Windows/NativeWrappers.sln @@ -12,132 +12,22 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Common", "Common", "{5A0892 EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MKLWrapper", "MKL\MKLWrapper.vcxproj", "{C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MKLWrapperTests", "MKLWrapperTests\MKLWrapperTests.csproj", "{D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Numerics", "..\..\Numerics\Numerics.csproj", "{B7CAE5F4-A23F-4438-B5BE-41226618B695}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Numerics.IO", "..\..\Numerics.IO\Numerics.IO.csproj", "{EB1A5D32-F264-4BCE-BEB7-0B97085075BE}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 - Intel_SSA|Any CPU = Intel_SSA|Any CPU - Intel_SSA|Mixed Platforms = Intel_SSA|Mixed Platforms - Intel_SSA|Win32 = Intel_SSA|Win32 - Intel_SSA|x64 = Intel_SSA|x64 - Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms Release|Win32 = Release|Win32 Release|x64 = Release|x64 - Release-Signed|Any CPU = Release-Signed|Any CPU - Release-Signed|Mixed Platforms = Release-Signed|Mixed Platforms - Release-Signed|Win32 = Release-Signed|Win32 - Release-Signed|x64 = Release-Signed|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Debug|Any CPU.ActiveCfg = Debug|x64 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Debug|Mixed Platforms.ActiveCfg = Release|x64 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Debug|Mixed Platforms.Build.0 = Release|x64 {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Debug|Win32.ActiveCfg = Debug|Win32 {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Debug|Win32.Build.0 = Debug|Win32 {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Debug|x64.ActiveCfg = Debug|x64 {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Debug|x64.Build.0 = Debug|x64 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Intel_SSA|Any CPU.ActiveCfg = Intel_SSA|Win32 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Intel_SSA|Mixed Platforms.ActiveCfg = Intel_SSA|Win32 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Intel_SSA|Mixed Platforms.Build.0 = Intel_SSA|Win32 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Intel_SSA|Win32.ActiveCfg = Intel_SSA|Win32 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Intel_SSA|Win32.Build.0 = Intel_SSA|Win32 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Intel_SSA|x64.ActiveCfg = Intel_SSA|x64 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Intel_SSA|x64.Build.0 = Intel_SSA|x64 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release|Any CPU.ActiveCfg = Release|x64 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release|Mixed Platforms.Build.0 = Release|x64 {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release|Win32.ActiveCfg = Release|Win32 {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release|Win32.Build.0 = Release|Win32 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release|x64.ActiveCfg = Release|Win32 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release|x64.Build.0 = Release|Win32 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-Signed|Any CPU.ActiveCfg = Release|Win32 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-Signed|Mixed Platforms.ActiveCfg = Release|Win32 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-Signed|Mixed Platforms.Build.0 = Release|Win32 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-Signed|Win32.ActiveCfg = Release|Win32 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-Signed|Win32.Build.0 = Release|Win32 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-Signed|x64.ActiveCfg = Release|x64 - {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release-Signed|x64.Build.0 = Release|x64 - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Debug|Win32.ActiveCfg = Debug|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Debug|x64.ActiveCfg = Debug|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Intel_SSA|Any CPU.ActiveCfg = Release|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Intel_SSA|Any CPU.Build.0 = Release|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Intel_SSA|Mixed Platforms.ActiveCfg = Release|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Intel_SSA|Mixed Platforms.Build.0 = Release|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Intel_SSA|Win32.ActiveCfg = Release|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Intel_SSA|x64.ActiveCfg = Release|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Release|Any CPU.Build.0 = Release|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Release|Win32.ActiveCfg = Release|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Release|x64.ActiveCfg = Release|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Release-Signed|Any CPU.ActiveCfg = Release|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Release-Signed|Any CPU.Build.0 = Release|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Release-Signed|Mixed Platforms.ActiveCfg = Release|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Release-Signed|Mixed Platforms.Build.0 = Release|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Release-Signed|Win32.ActiveCfg = Release|Any CPU - {D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Release-Signed|x64.ActiveCfg = Release|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Debug|Win32.ActiveCfg = Debug|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Debug|x64.ActiveCfg = Debug|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Intel_SSA|Any CPU.ActiveCfg = Release-Signed|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Intel_SSA|Any CPU.Build.0 = Release-Signed|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Intel_SSA|Mixed Platforms.ActiveCfg = Release-Signed|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Intel_SSA|Mixed Platforms.Build.0 = Release-Signed|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Intel_SSA|Win32.ActiveCfg = Release-Signed|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Intel_SSA|x64.ActiveCfg = Release-Signed|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release|Any CPU.Build.0 = Release|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release|Win32.ActiveCfg = Release|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release|x64.ActiveCfg = Release|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-Signed|Any CPU.ActiveCfg = Release-Signed|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-Signed|Any CPU.Build.0 = Release-Signed|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-Signed|Mixed Platforms.ActiveCfg = Release-Signed|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-Signed|Mixed Platforms.Build.0 = Release-Signed|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-Signed|Win32.ActiveCfg = Release-Signed|Any CPU - {B7CAE5F4-A23F-4438-B5BE-41226618B695}.Release-Signed|x64.ActiveCfg = Release-Signed|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Debug|Win32.ActiveCfg = Debug|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Debug|x64.ActiveCfg = Debug|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Intel_SSA|Any CPU.ActiveCfg = Release-Signed|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Intel_SSA|Any CPU.Build.0 = Release-Signed|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Intel_SSA|Mixed Platforms.ActiveCfg = Release-Signed|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Intel_SSA|Mixed Platforms.Build.0 = Release-Signed|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Intel_SSA|Win32.ActiveCfg = Release-Signed|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Intel_SSA|x64.ActiveCfg = Release-Signed|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Release|Any CPU.Build.0 = Release|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Release|Win32.ActiveCfg = Release|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Release|x64.ActiveCfg = Release|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Release-Signed|Any CPU.ActiveCfg = Release-Signed|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Release-Signed|Any CPU.Build.0 = Release-Signed|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Release-Signed|Mixed Platforms.ActiveCfg = Release-Signed|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Release-Signed|Mixed Platforms.Build.0 = Release-Signed|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Release-Signed|Win32.ActiveCfg = Release-Signed|Any CPU - {EB1A5D32-F264-4BCE-BEB7-0B97085075BE}.Release-Signed|x64.ActiveCfg = Release-Signed|Any CPU + {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release|x64.ActiveCfg = Release|x64 + {C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex.cs b/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex.cs index 3a0ff630..fd318855 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex.cs @@ -407,7 +407,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra break; case Norm.FrobeniusNorm: var aat = new Complex[rows * rows]; - MatrixMultiplyWithUpdate(Transpose.DontTranspose, Transpose.Transpose, 1.0, matrix, rows, columns, matrix, rows, columns, 0.0, aat); + MatrixMultiplyWithUpdate(Transpose.DontTranspose, Transpose.ConjugateTranspose, 1.0, matrix, rows, columns, matrix, rows, columns, 0.0, aat); for (var i = 0; i < rows; i++) { diff --git a/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex32.cs b/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex32.cs index 728caf75..0dde0467 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex32.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex32.cs @@ -404,7 +404,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra break; case Norm.FrobeniusNorm: var aat = new Complex32[rows * rows]; - MatrixMultiplyWithUpdate(Transpose.DontTranspose, Transpose.Transpose, 1.0f, matrix, rows, columns, matrix, rows, columns, 0.0f, aat); + MatrixMultiplyWithUpdate(Transpose.DontTranspose, Transpose.ConjugateTranspose, 1.0f, matrix, rows, columns, matrix, rows, columns, 0.0f, aat); for (var i = 0; i < rows; i++) { diff --git a/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Common.cs b/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Common.cs index 1be99a38..c5e4b009 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Common.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Common.cs @@ -4,7 +4,7 @@ // http://github.com/mathnet/mathnet-numerics // http://mathnetnumerics.codeplex.com // -// Copyright (c) 2009-2011 Math.NET +// Copyright (c) 2009-2013 Math.NET // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation @@ -200,7 +200,6 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl return SafeNativeMethods.d_matrix_norm((byte)norm, rows, columns, matrix, work); } - /* BUG in MKL'S ZLANGE routine. Using managed code until it is fixed. /// /// Computes the requested of the matrix. /// @@ -359,6 +358,6 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl } return SafeNativeMethods.z_matrix_norm((byte)norm, rows, columns, matrix, work); - }*/ + } } } diff --git a/src/Numerics/Algorithms/LinearAlgebra/Mkl/SafeNativeMethods.cs b/src/Numerics/Algorithms/LinearAlgebra/Mkl/SafeNativeMethods.cs index 21851fe5..87f5b8fe 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/Mkl/SafeNativeMethods.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/Mkl/SafeNativeMethods.cs @@ -42,7 +42,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl /// /// Name of the native DLL. /// - private const string DllName = "MathNET.Numerics.MKL.dll"; + private const string DllName = "MathNet.Numerics.MKL.dll"; #region BLAS @@ -102,7 +102,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl internal static extern float s_matrix_norm(byte norm, int rows, int columns, [In] float[] a, [In, Out] float[] work); [DllImport(DllName, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)] - internal static extern float d_matrix_norm(byte norm, int rows, int columns, [In] double[] a, [In, Out] double[] work); + internal static extern double d_matrix_norm(byte norm, int rows, int columns, [In] double[] a, [In, Out] double[] work); [DllImport(DllName, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)] internal static extern float c_matrix_norm(byte norm, int rows, int columns, [In] Complex32[] a, [In, Out] float[] work); diff --git a/src/Numerics/LinearAlgebra/Complex/Matrix.cs b/src/Numerics/LinearAlgebra/Complex/Matrix.cs index 0fdafcac..4ac3ee9e 100644 --- a/src/Numerics/LinearAlgebra/Complex/Matrix.cs +++ b/src/Numerics/LinearAlgebra/Complex/Matrix.cs @@ -93,7 +93,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex /// The Frobenius norm of this matrix. public override Complex FrobeniusNorm() { - var transpose = Transpose(); + var transpose = ConjugateTranspose(); var aat = this * transpose; var norm = 0.0; diff --git a/src/Numerics/LinearAlgebra/Complex/SparseMatrix.cs b/src/Numerics/LinearAlgebra/Complex/SparseMatrix.cs index 8dd87de7..5274499b 100644 --- a/src/Numerics/LinearAlgebra/Complex/SparseMatrix.cs +++ b/src/Numerics/LinearAlgebra/Complex/SparseMatrix.cs @@ -527,7 +527,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex /// The Frobenius norm of this matrix. public override Complex FrobeniusNorm() { - var aat = (SparseCompressedRowMatrixStorage) (this*Transpose()).Storage; + var aat = (SparseCompressedRowMatrixStorage) (this*ConjugateTranspose()).Storage; var norm = 0d; for (var i = 0; i < aat.RowPointers.Length; i++) diff --git a/src/Numerics/LinearAlgebra/Complex32/Matrix.cs b/src/Numerics/LinearAlgebra/Complex32/Matrix.cs index d795644d..ae6c0b83 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Matrix.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Matrix.cs @@ -87,7 +87,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32 /// The Frobenius norm of this matrix. public override Complex32 FrobeniusNorm() { - var transpose = Transpose(); + var transpose = ConjugateTranspose(); var aat = this * transpose; var norm = 0.0f; diff --git a/src/Numerics/LinearAlgebra/Complex32/SparseMatrix.cs b/src/Numerics/LinearAlgebra/Complex32/SparseMatrix.cs index ec3249a1..86ef04b7 100644 --- a/src/Numerics/LinearAlgebra/Complex32/SparseMatrix.cs +++ b/src/Numerics/LinearAlgebra/Complex32/SparseMatrix.cs @@ -527,7 +527,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32 /// The Frobenius norm of this matrix. public override Complex32 FrobeniusNorm() { - var aat = (SparseCompressedRowMatrixStorage) (this*Transpose()).Storage; + var aat = (SparseCompressedRowMatrixStorage) (this*ConjugateTranspose()).Storage; var norm = 0f; for (var i = 0; i < aat.RowPointers.Length; i++) diff --git a/src/UnitTests/LinearAlgebraTests/Complex/MatrixTests.cs b/src/UnitTests/LinearAlgebraTests/Complex/MatrixTests.cs index 25e30e58..5797092a 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/MatrixTests.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/MatrixTests.cs @@ -93,13 +93,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex public virtual void CanComputeFrobeniusNorm() { var matrix = TestMatrices["Square3x3"]; - AssertHelpers.AlmostEqual(10.8819655930903, matrix.FrobeniusNorm(), 14); + AssertHelpers.AlmostEqual(11.1427106217473, matrix.FrobeniusNorm(), 14); matrix = TestMatrices["Wide2x3"]; - AssertHelpers.AlmostEqual(5.19052560084774, matrix.FrobeniusNorm(), 14); + AssertHelpers.AlmostEqual(5.29055762656452, matrix.FrobeniusNorm(), 14); matrix = TestMatrices["Tall3x2"]; - AssertHelpers.AlmostEqual(7.59041159967795, matrix.FrobeniusNorm(), 14); + AssertHelpers.AlmostEqual(7.86574853399217, matrix.FrobeniusNorm(), 14); } /// diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/MatrixTests.cs b/src/UnitTests/LinearAlgebraTests/Complex32/MatrixTests.cs index 36c463c7..d17093e0 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/MatrixTests.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/MatrixTests.cs @@ -92,13 +92,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32 public virtual void CanComputeFrobeniusNorm() { var matrix = TestMatrices["Square3x3"]; - AssertHelpers.AlmostEqual(10.8819655f, matrix.FrobeniusNorm().Real, 7); + AssertHelpers.AlmostEqual(11.1427106217473f, matrix.FrobeniusNorm().Real, 7); matrix = TestMatrices["Wide2x3"]; - AssertHelpers.AlmostEqual(5.1905256f, matrix.FrobeniusNorm().Real, 7); + AssertHelpers.AlmostEqual(5.29055762656452f, matrix.FrobeniusNorm().Real, 6); matrix = TestMatrices["Tall3x2"]; - AssertHelpers.AlmostEqual(7.5904115f, matrix.FrobeniusNorm().Real, 7); + AssertHelpers.AlmostEqual(7.86574853399217, matrix.FrobeniusNorm().Real, 7); } /// diff --git a/src/UnitTests/LinearAlgebraTests/Double/IO/MatlabReaderTests.cs b/src/UnitTests/LinearAlgebraTests/Double/IO/MatlabReaderTests.cs index 265ce3d9..197832cd 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/IO/MatlabReaderTests.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/IO/MatlabReaderTests.cs @@ -62,7 +62,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.IO Assert.AreEqual(100, matrix.RowCount); Assert.AreEqual(100, matrix.ColumnCount); Assert.AreEqual(typeof(DenseMatrix), matrix.GetType()); - AssertHelpers.AlmostEqual(100.108979553704, matrix.FrobeniusNorm(), 13); + AssertHelpers.AlmostEqual(100.108979553704, matrix.FrobeniusNorm(), 5); } /// @@ -92,7 +92,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.IO var ad = matrices["Ad"]; Assert.AreEqual(100, ad.RowCount); Assert.AreEqual(100, ad.ColumnCount); - AssertHelpers.AlmostEqual(100.431635988639, ad.FrobeniusNorm(), 13); + AssertHelpers.AlmostEqual(100.431635988639, ad.FrobeniusNorm(), 5); Assert.AreEqual(typeof(DenseMatrix), ad.GetType()); }